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..6f1b77fd52f 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()) { @@ -478,8 +492,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)); } }