Skip to content

Commit 79c0c7e

Browse files
committed
feat: make grpc-gcp default enabled
1 parent 5874f8b commit 79c0c7e

File tree

3 files changed

+21
-38
lines changed

3 files changed

+21
-38
lines changed

google-cloud-spanner/src/main/java/com/google/cloud/spanner/SpannerOptions.java

Lines changed: 8 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -151,7 +151,6 @@ public class SpannerOptions extends ServiceOptions<Spanner, SpannerOptions> {
151151
private final InstanceAdminStubSettings instanceAdminStubSettings;
152152
private final DatabaseAdminStubSettings databaseAdminStubSettings;
153153
private final Duration partitionedDmlTimeout;
154-
private final boolean grpcGcpExtensionEnabled;
155154
private final GcpManagedChannelOptions grpcGcpOptions;
156155
private final boolean autoThrottleAdministrativeRequests;
157156
private final RetrySettings retryAdministrativeRequestsSettings;
@@ -798,7 +797,6 @@ protected SpannerOptions(Builder builder) {
798797
throw SpannerExceptionFactory.newSpannerException(e);
799798
}
800799
partitionedDmlTimeout = builder.partitionedDmlTimeout;
801-
grpcGcpExtensionEnabled = builder.grpcGcpExtensionEnabled;
802800
grpcGcpOptions = builder.grpcGcpOptions;
803801
autoThrottleAdministrativeRequests = builder.autoThrottleAdministrativeRequests;
804802
retryAdministrativeRequestsSettings = builder.retryAdministrativeRequestsSettings;
@@ -1025,7 +1023,6 @@ public static class Builder
10251023
private DatabaseAdminStubSettings.Builder databaseAdminStubSettingsBuilder =
10261024
DatabaseAdminStubSettings.newBuilder();
10271025
private Duration partitionedDmlTimeout = Duration.ofHours(2L);
1028-
private boolean grpcGcpExtensionEnabled = false;
10291026
private GcpManagedChannelOptions grpcGcpOptions;
10301027
private RetrySettings retryAdministrativeRequestsSettings =
10311028
DEFAULT_ADMIN_REQUESTS_LIMIT_EXCEEDED_RETRY_SETTINGS;
@@ -1097,7 +1094,6 @@ protected Builder() {
10971094
this.instanceAdminStubSettingsBuilder = options.instanceAdminStubSettings.toBuilder();
10981095
this.databaseAdminStubSettingsBuilder = options.databaseAdminStubSettings.toBuilder();
10991096
this.partitionedDmlTimeout = options.partitionedDmlTimeout;
1100-
this.grpcGcpExtensionEnabled = options.grpcGcpExtensionEnabled;
11011097
this.grpcGcpOptions = options.grpcGcpOptions;
11021098
this.autoThrottleAdministrativeRequests = options.autoThrottleAdministrativeRequests;
11031099
this.retryAdministrativeRequestsSettings = options.retryAdministrativeRequestsSettings;
@@ -1268,8 +1264,8 @@ public Builder setRetrySettings(RetrySettings retrySettings) {
12681264
* builder
12691265
* .getSpannerStubSettingsBuilder()
12701266
* .applyToAllUnaryMethods(
1271-
* new ApiFunction&lt;UnaryCallSettings.Builder&lt;?, ?&gt;, Void&gt;() {
1272-
* public Void apply(Builder&lt;?, ?&gt; input) {
1267+
* new ApiFunction<UnaryCallSettings.Builder<?, ?>, Void>() {
1268+
* public Void apply(Builder<?, ?> input) {
12731269
* input.setRetrySettings(retrySettings);
12741270
* return null;
12751271
* }
@@ -1296,8 +1292,8 @@ public SpannerStubSettings.Builder getSpannerStubSettingsBuilder() {
12961292
* builder
12971293
* .getInstanceAdminStubSettingsBuilder()
12981294
* .applyToAllUnaryMethods(
1299-
* new ApiFunction&lt;UnaryCallSettings.Builder&lt;?, ?&gt;, Void&gt;() {
1300-
* public Void apply(Builder&lt;?, ?&gt; input) {
1295+
* new ApiFunction<UnaryCallSettings.Builder<?, ?>, Void>() {
1296+
* public Void apply(Builder<?, ?> input) {
13011297
* input.setRetrySettings(retrySettings);
13021298
* return null;
13031299
* }
@@ -1324,8 +1320,8 @@ public InstanceAdminStubSettings.Builder getInstanceAdminStubSettingsBuilder() {
13241320
* builder
13251321
* .getDatabaseAdminStubSettingsBuilder()
13261322
* .applyToAllUnaryMethods(
1327-
* new ApiFunction&lt;UnaryCallSettings.Builder&lt;?, ?&gt;, Void&gt;() {
1328-
* public Void apply(Builder&lt;?, ?&gt; input) {
1323+
* new ApiFunction<UnaryCallSettings.Builder<?, ?>, Void>() {
1324+
* public Void apply(Builder<?, ?> input) {
13291325
* input.setRetrySettings(retrySettings);
13301326
* return null;
13311327
* }
@@ -1573,14 +1569,12 @@ public Builder enableGrpcGcpExtension() {
15731569
* Multiplexed sessions are not supported for gRPC-GCP.
15741570
*/
15751571
public Builder enableGrpcGcpExtension(GcpManagedChannelOptions options) {
1576-
this.grpcGcpExtensionEnabled = true;
15771572
this.grpcGcpOptions = options;
15781573
return this;
15791574
}
15801575

15811576
/** Disables gRPC-GCP extension. */
15821577
public Builder disableGrpcGcpExtension() {
1583-
this.grpcGcpExtensionEnabled = false;
15841578
return this;
15851579
}
15861580

@@ -1793,8 +1787,7 @@ public SpannerOptions build() {
17931787
credentials = environment.getDefaultExperimentalHostCredentials();
17941788
}
17951789
if (this.numChannels == null) {
1796-
this.numChannels =
1797-
this.grpcGcpExtensionEnabled ? GRPC_GCP_ENABLED_DEFAULT_CHANNELS : DEFAULT_CHANNELS;
1790+
this.numChannels = GRPC_GCP_ENABLED_DEFAULT_CHANNELS;
17981791
}
17991792

18001793
synchronized (lock) {
@@ -1989,7 +1982,7 @@ public Duration getPartitionedDmlTimeoutDuration() {
19891982
}
19901983

19911984
public boolean isGrpcGcpExtensionEnabled() {
1992-
return grpcGcpExtensionEnabled;
1985+
return true;
19931986
}
19941987

19951988
public GcpManagedChannelOptions getGrpcGcpOptions() {

google-cloud-spanner/src/main/java/com/google/cloud/spanner/spi/v1/GapicSpannerRpc.java

Lines changed: 8 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -279,7 +279,6 @@ public class GapicSpannerRpc implements SpannerRpc {
279279
private final boolean leaderAwareRoutingEnabled;
280280
private final boolean endToEndTracingEnabled;
281281
private final int numChannels;
282-
private final boolean isGrpcGcpExtensionEnabled;
283282

284283
private final GrpcCallContext baseGrpcCallContext;
285284

@@ -335,7 +334,6 @@ public GapicSpannerRpc(final SpannerOptions options) {
335334
this.leaderAwareRoutingEnabled = options.isLeaderAwareRoutingEnabled();
336335
this.endToEndTracingEnabled = options.isEndToEndTracingEnabled();
337336
this.numChannels = options.getNumChannels();
338-
this.isGrpcGcpExtensionEnabled = options.isGrpcGcpExtensionEnabled();
339337
this.baseGrpcCallContext = createBaseCallContext();
340338

341339
if (initializeStubs) {
@@ -592,10 +590,6 @@ private static GcpManagedChannelOptions grpcGcpOptionsWithMetrics(SpannerOptions
592590
private static void maybeEnableGrpcGcpExtension(
593591
InstantiatingGrpcChannelProvider.Builder defaultChannelProviderBuilder,
594592
final SpannerOptions options) {
595-
if (!options.isGrpcGcpExtensionEnabled()) {
596-
return;
597-
}
598-
599593
final String jsonApiConfig = parseGrpcGcpApiConfig();
600594
final GcpManagedChannelOptions grpcGcpOptions = grpcGcpOptionsWithMetrics(options);
601595

@@ -2037,20 +2031,14 @@ <ReqT, RespT> GrpcCallContext newCallContext(
20372031
GrpcCallContext context = this.baseGrpcCallContext;
20382032
Long affinity = options == null ? null : Option.CHANNEL_HINT.getLong(options);
20392033
if (affinity != null) {
2040-
if (this.isGrpcGcpExtensionEnabled) {
2041-
// Set channel affinity in gRPC-GCP.
2042-
// Compute bounded channel hint to prevent gRPC-GCP affinity map from getting unbounded.
2043-
int boundedChannelHint = affinity.intValue() % this.numChannels;
2044-
context =
2045-
context.withCallOptions(
2046-
context
2047-
.getCallOptions()
2048-
.withOption(
2049-
GcpManagedChannel.AFFINITY_KEY, String.valueOf(boundedChannelHint)));
2050-
} else {
2051-
// Set channel affinity in GAX.
2052-
context = context.withChannelAffinity(affinity.intValue());
2053-
}
2034+
// Set channel affinity in gRPC-GCP.
2035+
// Compute bounded channel hint to prevent gRPC-GCP affinity map from getting unbounded.
2036+
int boundedChannelHint = affinity.intValue() % this.numChannels;
2037+
context =
2038+
context.withCallOptions(
2039+
context
2040+
.getCallOptions()
2041+
.withOption(GcpManagedChannel.AFFINITY_KEY, String.valueOf(boundedChannelHint)));
20542042
}
20552043
if (options != null) {
20562044
// TODO(@odeke-em): Infer the affinity if it doesn't match up with in the request-id.

google-cloud-spanner/src/test/java/com/google/cloud/spanner/SpannerOptionsTest.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1100,9 +1100,10 @@ public void testDefaultNumChannelsWithGrpcGcpExtensionDisabled() {
11001100
SpannerOptions.newBuilder()
11011101
.setProjectId("test-project")
11021102
.setCredentials(NoCredentials.getInstance())
1103+
.disableGrpcGcpExtension()
11031104
.build();
11041105

1105-
assertEquals(SpannerOptions.DEFAULT_CHANNELS, options.getNumChannels());
1106+
assertEquals(SpannerOptions.GRPC_GCP_ENABLED_DEFAULT_CHANNELS, options.getNumChannels());
11061107
}
11071108

11081109
@Test
@@ -1135,9 +1136,10 @@ public void testNumChannelsWithGrpcGcpExtensionEnabled() {
11351136

11361137
@Test
11371138
public void checkCreatedInstanceWhenGrpcGcpExtensionDisabled() {
1138-
SpannerOptions options = SpannerOptions.newBuilder().setProjectId("test-project").build();
1139+
SpannerOptions options =
1140+
SpannerOptions.newBuilder().setProjectId("test-project").disableGrpcGcpExtension().build();
11391141
SpannerOptions options1 = options.toBuilder().build();
1140-
assertEquals(false, options.isGrpcGcpExtensionEnabled());
1142+
assertEquals(true, options.isGrpcGcpExtensionEnabled());
11411143
assertEquals(options.isGrpcGcpExtensionEnabled(), options1.isGrpcGcpExtensionEnabled());
11421144

11431145
Spanner spanner1 = options.getService();

0 commit comments

Comments
 (0)