diff --git a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/spi/v1/GapicSpannerRpc.java b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/spi/v1/GapicSpannerRpc.java index 0e540ea7926..72186f005cd 100644 --- a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/spi/v1/GapicSpannerRpc.java +++ b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/spi/v1/GapicSpannerRpc.java @@ -41,6 +41,7 @@ import com.google.api.gax.rpc.ApiException; import com.google.api.gax.rpc.ClientContext; import com.google.api.gax.rpc.FixedHeaderProvider; +import com.google.api.gax.rpc.FixedTransportChannelProvider; import com.google.api.gax.rpc.HeaderProvider; import com.google.api.gax.rpc.InstantiatingWatchdogProvider; import com.google.api.gax.rpc.OperationCallable; @@ -402,11 +403,14 @@ public GapicSpannerRpc(final SpannerOptions options) { final String emulatorHost = System.getenv("SPANNER_EMULATOR_HOST"); try { + FixedTransportChannelProvider fixedChannelProvider = + FixedTransportChannelProvider.create(channelProvider.getTransportChannel()); + SpannerStubSettings spannerStubSettings = options .getSpannerStubSettings() .toBuilder() - .setTransportChannelProvider(channelProvider) + .setTransportChannelProvider(fixedChannelProvider) .setCredentialsProvider(credentialsProvider) .setStreamWatchdogProvider(watchdogProvider) .setTracerFactory( @@ -446,7 +450,7 @@ public GapicSpannerRpc(final SpannerOptions options) { .build(); SpannerStubSettings.Builder pdmlSettings = options.getSpannerStubSettings().toBuilder(); pdmlSettings - .setTransportChannelProvider(channelProvider) + .setTransportChannelProvider(fixedChannelProvider) .setCredentialsProvider(credentialsProvider) .setStreamWatchdogProvider(watchdogProvider) .setTracerFactory( @@ -476,7 +480,7 @@ public GapicSpannerRpc(final SpannerOptions options) { options .getInstanceAdminStubSettings() .toBuilder() - .setTransportChannelProvider(channelProvider) + .setTransportChannelProvider(fixedChannelProvider) .setCredentialsProvider(credentialsProvider) .setStreamWatchdogProvider(watchdogProvider) .setTracerFactory( @@ -489,7 +493,7 @@ public GapicSpannerRpc(final SpannerOptions options) { options .getDatabaseAdminStubSettings() .toBuilder() - .setTransportChannelProvider(channelProvider) + .setTransportChannelProvider(fixedChannelProvider) .setCredentialsProvider(credentialsProvider) .setStreamWatchdogProvider(watchdogProvider) .setTracerFactory( @@ -538,7 +542,7 @@ public UnaryCallable createUnaryCalla // Check whether the SPANNER_EMULATOR_HOST env var has been set, and if so, if the emulator // is actually running. - checkEmulatorConnection(options, channelProvider, credentialsProvider, emulatorHost); + checkEmulatorConnection(options, fixedChannelProvider, credentialsProvider, emulatorHost); } catch (Exception e) { throw newSpannerException(e); }