From a6d4e7cd35491e39de40ab5790ceee85606ce615 Mon Sep 17 00:00:00 2001 From: mohanli-ml Date: Tue, 15 Dec 2020 03:12:33 +0000 Subject: [PATCH] feat: include User agent --- .../cloud/spanner/spi/v1/GapicSpannerRpc.java | 44 ++++++++++--------- 1 file changed, 24 insertions(+), 20 deletions(-) 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 4d7d836dea1..0ae2556c0b8 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 @@ -152,6 +152,7 @@ import java.net.URLDecoder; import java.nio.charset.StandardCharsets; import java.util.Comparator; +import java.util.HashMap; import java.util.LinkedList; import java.util.List; import java.util.Map; @@ -338,7 +339,20 @@ public GapicSpannerRpc(final SpannerOptions options) { options.getInterceptorProvider(), SpannerInterceptorProvider.createDefault())) .withEncoding(compressorName)) - .setHeaderProvider(mergedHeaderProvider); + .setHeaderProvider(mergedHeaderProvider) + + // Inject client library version to `user-agent` + .setHeaderProvider( + new HeaderProvider() { + @Override + public Map getHeaders() { + final HashMap headers = new HashMap<>(); + headers.put( + "user-agent", + "spanner-java/" + GaxProperties.getLibraryVersion(GapicSpannerRpc.class)); + return headers; + } + }); // TODO(weiranf): Set to true by default once DirectPath goes to public beta. if (shouldAttemptDirectPath()) { @@ -367,19 +381,13 @@ public GapicSpannerRpc(final SpannerOptions options) { try { this.spannerStub = GrpcSpannerStub.create( - options - .getSpannerStubSettings() - .toBuilder() + options.getSpannerStubSettings().toBuilder() .setTransportChannelProvider(channelProvider) .setCredentialsProvider(credentialsProvider) .setStreamWatchdogProvider(watchdogProvider) .build()); partitionedDmlRetrySettings = - options - .getSpannerStubSettings() - .executeSqlSettings() - .getRetrySettings() - .toBuilder() + options.getSpannerStubSettings().executeSqlSettings().getRetrySettings().toBuilder() .setInitialRpcTimeout(options.getPartitionedDmlTimeout()) .setMaxRpcTimeout(options.getPartitionedDmlTimeout()) .setTotalTimeout(options.getPartitionedDmlTimeout()) @@ -412,18 +420,14 @@ public GapicSpannerRpc(final SpannerOptions options) { this.instanceAdminStub = GrpcInstanceAdminStub.create( - options - .getInstanceAdminStubSettings() - .toBuilder() + options.getInstanceAdminStubSettings().toBuilder() .setTransportChannelProvider(channelProvider) .setCredentialsProvider(credentialsProvider) .setStreamWatchdogProvider(watchdogProvider) .build()); this.databaseAdminStubSettings = - options - .getDatabaseAdminStubSettings() - .toBuilder() + options.getDatabaseAdminStubSettings().toBuilder() .setTransportChannelProvider(channelProvider) .setCredentialsProvider(credentialsProvider) .setStreamWatchdogProvider(watchdogProvider) @@ -458,9 +462,7 @@ private static void checkEmulatorConnection( // Do a quick check to see if the emulator is actually running. try { InstanceAdminStubSettings.Builder testEmulatorSettings = - options - .getInstanceAdminStubSettings() - .toBuilder() + options.getInstanceAdminStubSettings().toBuilder() .setTransportChannelProvider(channelProvider) .setCredentialsProvider(credentialsProvider); testEmulatorSettings @@ -478,8 +480,10 @@ private static void checkEmulatorConnection( throw SpannerExceptionFactory.newSpannerException( ErrorCode.UNAVAILABLE, String.format( - "The environment variable SPANNER_EMULATOR_HOST has been set to %s, but no running emulator could be found at that address.\n" - + "Did you forget to start the emulator, or to unset the environment variable?", + "The environment variable SPANNER_EMULATOR_HOST has been set to %s, but no running" + + " emulator could be found at that address.\n" + + "Did you forget to start the emulator, or to unset the environment" + + " variable?", emulatorHost)); } }