Skip to content

Commit 3c0f873

Browse files
committed
Add RLS request lookup reason.
1 parent 3e20e4e commit 3c0f873

File tree

8 files changed

+239
-159
lines changed

8 files changed

+239
-159
lines changed

rls/src/main/java/io/grpc/rls/CachingRlsLbClient.java

Lines changed: 83 additions & 63 deletions
Large diffs are not rendered by default.

rls/src/main/java/io/grpc/rls/RlsProtoConverters.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -64,8 +64,9 @@ static final class RouteLookupRequestConverter
6464
@Override
6565
protected RlsProtoData.RouteLookupRequest doForward(RouteLookupRequest routeLookupRequest) {
6666
return RlsProtoData.RouteLookupRequest.create(
67-
RlsProtoData.RouteLookupRequest.Reason.valueOf(routeLookupRequest.getReason().name()),
68-
ImmutableMap.copyOf(routeLookupRequest.getKeyMapMap()));
67+
ImmutableMap.copyOf(routeLookupRequest.getKeyMapMap()),
68+
RlsProtoData.RouteLookupRequest.Reason.valueOf(routeLookupRequest.getReason().name())
69+
);
6970
}
7071

7172
@Override

rls/src/main/java/io/grpc/rls/RlsProtoData.java

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,19 @@ final class RlsProtoData {
2727

2828
private RlsProtoData() {}
2929

30+
/** A key object for the Rls route lookup data cache. */
31+
@AutoValue
32+
@Immutable
33+
abstract static class RouteLookupRequestKey {
34+
35+
/** Returns a map of key values extracted via key builders for the gRPC or HTTP request. */
36+
abstract ImmutableMap<String, String> keyMap();
37+
38+
static RouteLookupRequestKey create(ImmutableMap<String, String> keyMap) {
39+
return new AutoValue_RlsProtoData_RouteLookupRequestKey(keyMap);
40+
}
41+
}
42+
3043
/** A request object sent to route lookup service. */
3144
@AutoValue
3245
@Immutable
@@ -38,12 +51,14 @@ enum Reason {
3851
REASON_MISS, // No data available in local cache
3952
REASON_STALE; // Data in local cache is stale
4053
}
54+
4155
// Reason for making this request.
4256
abstract Reason reason();
57+
4358
/** Returns a map of key values extracted via key builders for the gRPC or HTTP request. */
4459
abstract ImmutableMap<String, String> keyMap();
4560

46-
static RouteLookupRequest create(Reason reason, ImmutableMap<String, String> keyMap) {
61+
static RouteLookupRequest create(ImmutableMap<String, String> keyMap, Reason reason) {
4762
return new AutoValue_RlsProtoData_RouteLookupRequest(reason, keyMap);
4863
}
4964
}

rls/src/main/java/io/grpc/rls/RlsRequestFactory.java

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -28,12 +28,13 @@
2828
import io.grpc.rls.RlsProtoData.NameMatcher;
2929
import io.grpc.rls.RlsProtoData.RouteLookupConfig;
3030
import io.grpc.rls.RlsProtoData.RouteLookupRequest;
31+
import io.grpc.rls.RlsProtoData.RouteLookupRequestKey;
3132
import java.util.HashMap;
3233
import java.util.List;
3334
import java.util.Map;
3435

3536
/**
36-
* A RlsRequestFactory creates {@link RouteLookupRequest} using key builder map from {@link
37+
* A RlsRequestFactory creates {@link RouteLookupRequestKey} using key builder map from {@link
3738
* RouteLookupConfig}.
3839
*/
3940
final class RlsRequestFactory {
@@ -61,9 +62,9 @@ private static Map<String, GrpcKeyBuilder> createKeyBuilderTable(
6162
return table;
6263
}
6364

64-
/** Creates a {@link RouteLookupRequest} for given request's metadata. */
65+
/** Creates a {@link RouteLookupRequestKey} for the given request lookup metadata. */
6566
@CheckReturnValue
66-
RouteLookupRequest create(String service, String method, Metadata metadata) {
67+
RouteLookupRequestKey create(String service, String method, Metadata metadata) {
6768
checkNotNull(service, "service");
6869
checkNotNull(method, "method");
6970
String path = "/" + service + "/" + method;
@@ -73,7 +74,7 @@ RouteLookupRequest create(String service, String method, Metadata metadata) {
7374
grpcKeyBuilder = keyBuilderTable.get("/" + service + "/*");
7475
}
7576
if (grpcKeyBuilder == null) {
76-
return RouteLookupRequest.create(ImmutableMap.<String, String>of());
77+
return RouteLookupRequestKey.create(ImmutableMap.of());
7778
}
7879
ImmutableMap.Builder<String, String> rlsRequestHeaders =
7980
createRequestHeaders(metadata, grpcKeyBuilder.headers());
@@ -89,7 +90,14 @@ RouteLookupRequest create(String service, String method, Metadata metadata) {
8990
rlsRequestHeaders.put(extraKeys.method(), method);
9091
}
9192
rlsRequestHeaders.putAll(constantKeys);
92-
return RouteLookupRequest.create(rlsRequestHeaders.buildOrThrow());
93+
return RouteLookupRequestKey.create(rlsRequestHeaders.buildOrThrow());
94+
}
95+
96+
/** Creates a {@link RouteLookupRequest} using the given request lookup key and reason. */
97+
@CheckReturnValue
98+
RouteLookupRequest create(RouteLookupRequestKey routeLookupRequestKey,
99+
RouteLookupRequest.Reason reason) {
100+
return RouteLookupRequest.create(routeLookupRequestKey.keyMap(), reason);
93101
}
94102

95103
private ImmutableMap.Builder<String, String> createRequestHeaders(

0 commit comments

Comments
 (0)