Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
134 changes: 73 additions & 61 deletions rls/src/main/java/io/grpc/rls/CachingRlsLbClient.java

Large diffs are not rendered by default.

5 changes: 4 additions & 1 deletion rls/src/main/java/io/grpc/rls/RlsProtoConverters.java
Original file line number Diff line number Diff line change
Expand Up @@ -64,14 +64,17 @@ static final class RouteLookupRequestConverter
@Override
protected RlsProtoData.RouteLookupRequest doForward(RouteLookupRequest routeLookupRequest) {
return RlsProtoData.RouteLookupRequest.create(
ImmutableMap.copyOf(routeLookupRequest.getKeyMapMap()));
ImmutableMap.copyOf(routeLookupRequest.getKeyMapMap()),
RlsProtoData.RouteLookupRequest.Reason.valueOf(routeLookupRequest.getReason().name())
);
}

@Override
protected RouteLookupRequest doBackward(RlsProtoData.RouteLookupRequest routeLookupRequest) {
return
RouteLookupRequest.newBuilder()
.setTargetType("grpc")
.setReason(RouteLookupRequest.Reason.valueOf(routeLookupRequest.reason().name()))
.putAllKeyMap(routeLookupRequest.keyMap())
.build();
}
Expand Down
30 changes: 28 additions & 2 deletions rls/src/main/java/io/grpc/rls/RlsProtoData.java
Original file line number Diff line number Diff line change
Expand Up @@ -27,16 +27,42 @@ final class RlsProtoData {

private RlsProtoData() {}

/** A key object for the Rls route lookup data cache. */
@AutoValue
@Immutable
abstract static class RouteLookupRequestKey {

/** Returns a map of key values extracted via key builders for the gRPC or HTTP request. */
abstract ImmutableMap<String, String> keyMap();

static RouteLookupRequestKey create(ImmutableMap<String, String> keyMap) {
return new AutoValue_RlsProtoData_RouteLookupRequestKey(keyMap);
}
}

/** A request object sent to route lookup service. */
@AutoValue
@Immutable
abstract static class RouteLookupRequest {

/** Names should match those in {@link io.grpc.lookup.v1.RouteLookupRequest.Reason}. */
enum Reason {
/** Unused. */
REASON_UNKNOWN,
/** No data available in local cache. */
REASON_MISS,
/** Data in local cache is stale. */
REASON_STALE;
}

/** Reason for making this request. */
abstract Reason reason();

/** Returns a map of key values extracted via key builders for the gRPC or HTTP request. */
abstract ImmutableMap<String, String> keyMap();

static RouteLookupRequest create(ImmutableMap<String, String> keyMap) {
return new AutoValue_RlsProtoData_RouteLookupRequest(keyMap);
static RouteLookupRequest create(ImmutableMap<String, String> keyMap, Reason reason) {
return new AutoValue_RlsProtoData_RouteLookupRequest(reason, keyMap);
}
}

Expand Down
12 changes: 6 additions & 6 deletions rls/src/main/java/io/grpc/rls/RlsRequestFactory.java
Original file line number Diff line number Diff line change
Expand Up @@ -27,13 +27,13 @@
import io.grpc.rls.RlsProtoData.GrpcKeyBuilder.Name;
import io.grpc.rls.RlsProtoData.NameMatcher;
import io.grpc.rls.RlsProtoData.RouteLookupConfig;
import io.grpc.rls.RlsProtoData.RouteLookupRequest;
import io.grpc.rls.RlsProtoData.RouteLookupRequestKey;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
* A RlsRequestFactory creates {@link RouteLookupRequest} using key builder map from {@link
* A RlsRequestFactory creates {@link RouteLookupRequestKey} using key builder map from {@link
* RouteLookupConfig}.
*/
final class RlsRequestFactory {
Expand Down Expand Up @@ -61,9 +61,9 @@ private static Map<String, GrpcKeyBuilder> createKeyBuilderTable(
return table;
}

/** Creates a {@link RouteLookupRequest} for given request's metadata. */
/** Creates a {@link RouteLookupRequestKey} for the given request lookup metadata. */
@CheckReturnValue
RouteLookupRequest create(String service, String method, Metadata metadata) {
RouteLookupRequestKey create(String service, String method, Metadata metadata) {
checkNotNull(service, "service");
checkNotNull(method, "method");
String path = "/" + service + "/" + method;
Expand All @@ -73,7 +73,7 @@ RouteLookupRequest create(String service, String method, Metadata metadata) {
grpcKeyBuilder = keyBuilderTable.get("/" + service + "/*");
}
if (grpcKeyBuilder == null) {
return RouteLookupRequest.create(ImmutableMap.<String, String>of());
return RouteLookupRequestKey.create(ImmutableMap.of());
}
ImmutableMap.Builder<String, String> rlsRequestHeaders =
createRequestHeaders(metadata, grpcKeyBuilder.headers());
Expand All @@ -89,7 +89,7 @@ RouteLookupRequest create(String service, String method, Metadata metadata) {
rlsRequestHeaders.put(extraKeys.method(), method);
}
rlsRequestHeaders.putAll(constantKeys);
return RouteLookupRequest.create(rlsRequestHeaders.buildOrThrow());
return RouteLookupRequestKey.create(rlsRequestHeaders.buildOrThrow());
}

private ImmutableMap.Builder<String, String> createRequestHeaders(
Expand Down
Loading