diff --git a/README.md b/README.md index 01c88f4f8cf..b3edd324c8e 100644 --- a/README.md +++ b/README.md @@ -19,7 +19,7 @@ If you are using Maven with [BOM][libraries-bom], add this to your pom.xml file: com.google.cloud libraries-bom - 26.54.0 + 26.57.0 pom import diff --git a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/spi/v1/HeaderInterceptor.java b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/spi/v1/HeaderInterceptor.java index dba3b38e92f..b972ecdcef4 100644 --- a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/spi/v1/HeaderInterceptor.java +++ b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/spi/v1/HeaderInterceptor.java @@ -87,6 +87,8 @@ class HeaderInterceptor implements ClientInterceptor { CacheBuilder.newBuilder().maximumSize(1000).build(); private final Cache> builtInAttributesCache = CacheBuilder.newBuilder().maximumSize(1000).build(); + private final Cache> keyCache = + CacheBuilder.newBuilder().maximumSize(1000).build(); // Get the global singleton Tagger object. private static final Tagger TAGGER = Tags.getTagger(); @@ -116,7 +118,7 @@ public void start(Listener responseListener, Metadata headers) { try { Span span = Span.current(); DatabaseName databaseName = extractDatabaseName(headers); - String key = databaseName + method.getFullMethodName(); + String key = extractKey(databaseName, method.getFullMethodName()); TagContext tagContext = getTagContext(key, method.getFullMethodName(), databaseName); Attributes attributes = getMetricAttributes(key, method.getFullMethodName(), databaseName); @@ -201,6 +203,13 @@ private Map parseServerTimingHeader(String serverTiming) { return serverTimingMetrics; } + private String extractKey(DatabaseName databaseName, String methodName) + throws ExecutionException { + Cache keys = + keyCache.get(databaseName, () -> CacheBuilder.newBuilder().maximumSize(1000).build()); + return keys.get(methodName, () -> databaseName + methodName); + } + private DatabaseName extractDatabaseName(Metadata headers) throws ExecutionException { String googleResourcePrefix = headers.get(GOOGLE_CLOUD_RESOURCE_PREFIX_KEY); if (googleResourcePrefix != null) {