diff --git a/instrumentation/geode-1.4/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/geode/v1_4/GeodeDbAttributesGetter.java b/instrumentation/geode-1.4/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/geode/v1_4/GeodeDbAttributesGetter.java index d5b8bd65b180..5e0574af8863 100644 --- a/instrumentation/geode-1.4/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/geode/v1_4/GeodeDbAttributesGetter.java +++ b/instrumentation/geode-1.4/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/geode/v1_4/GeodeDbAttributesGetter.java @@ -29,6 +29,20 @@ public String getDbSystemName(GeodeRequest request) { @Override @Nullable public String getDbNamespace(GeodeRequest request) { + return null; + } + + @Override + @Nullable + public String getDbCollectionName(GeodeRequest request) { + return request.getRegion().getName(); + } + + @Override + @Nullable + // Old database semconv still uses db.name, so we must implement the deprecated hook. + @SuppressWarnings("deprecation") + public String getDbName(GeodeRequest request) { return request.getRegion().getName(); } diff --git a/instrumentation/geode-1.4/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/geode/v1_4/PutGetTest.java b/instrumentation/geode-1.4/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/geode/v1_4/PutGetTest.java index 7da3d39f3f47..1b19edd85a4c 100644 --- a/instrumentation/geode-1.4/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/geode/v1_4/PutGetTest.java +++ b/instrumentation/geode-1.4/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/geode/v1_4/PutGetTest.java @@ -5,11 +5,12 @@ package io.opentelemetry.javaagent.instrumentation.geode.v1_4; +import static io.opentelemetry.instrumentation.api.internal.SemconvStability.emitStableDatabaseSemconv; import static io.opentelemetry.instrumentation.testing.junit.db.DbClientMetricsTestUtil.assertDurationMetric; import static io.opentelemetry.instrumentation.testing.junit.db.SemconvStabilityUtil.maybeStable; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; +import static io.opentelemetry.semconv.DbAttributes.DB_COLLECTION_NAME; import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_NAME; -import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_NAMESPACE; import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_OPERATION; import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_OPERATION_NAME; import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_STATEMENT; @@ -68,7 +69,11 @@ void testDurationMetric() { region.put("key", "value"); assertDurationMetric( - testing, "io.opentelemetry.geode-1.4", DB_SYSTEM_NAME, DB_NAMESPACE, DB_OPERATION_NAME); + testing, + "io.opentelemetry.geode-1.4", + DB_SYSTEM_NAME, + DB_COLLECTION_NAME, + DB_OPERATION_NAME); } @ParameterizedTest @@ -92,21 +97,30 @@ void testPutAndGet(Object key, Object value) { .hasKind(SpanKind.CLIENT) .hasAttributesSatisfyingExactly( equalTo(maybeStable(DB_SYSTEM), GEODE), - equalTo(maybeStable(DB_NAME), "test-region"), + equalTo( + DB_COLLECTION_NAME, + emitStableDatabaseSemconv() ? "test-region" : null), + equalTo(DB_NAME, emitStableDatabaseSemconv() ? null : "test-region"), equalTo(maybeStable(DB_OPERATION), "clear")), span -> span.hasName("put test-region") .hasKind(SpanKind.CLIENT) .hasAttributesSatisfyingExactly( equalTo(maybeStable(DB_SYSTEM), GEODE), - equalTo(maybeStable(DB_NAME), "test-region"), + equalTo( + DB_COLLECTION_NAME, + emitStableDatabaseSemconv() ? "test-region" : null), + equalTo(DB_NAME, emitStableDatabaseSemconv() ? null : "test-region"), equalTo(maybeStable(DB_OPERATION), "put")), span -> span.hasName("get test-region") .hasKind(SpanKind.CLIENT) .hasAttributesSatisfyingExactly( equalTo(maybeStable(DB_SYSTEM), GEODE), - equalTo(maybeStable(DB_NAME), "test-region"), + equalTo( + DB_COLLECTION_NAME, + emitStableDatabaseSemconv() ? "test-region" : null), + equalTo(DB_NAME, emitStableDatabaseSemconv() ? null : "test-region"), equalTo(maybeStable(DB_OPERATION), "get")))); } @@ -130,21 +144,30 @@ void testPutAndRemove(Object key, Object value) { .hasKind(SpanKind.CLIENT) .hasAttributesSatisfyingExactly( equalTo(maybeStable(DB_SYSTEM), GEODE), - equalTo(maybeStable(DB_NAME), "test-region"), + equalTo( + DB_COLLECTION_NAME, + emitStableDatabaseSemconv() ? "test-region" : null), + equalTo(DB_NAME, emitStableDatabaseSemconv() ? null : "test-region"), equalTo(maybeStable(DB_OPERATION), "clear")), span -> span.hasName("put test-region") .hasKind(SpanKind.CLIENT) .hasAttributesSatisfyingExactly( equalTo(maybeStable(DB_SYSTEM), GEODE), - equalTo(maybeStable(DB_NAME), "test-region"), + equalTo( + DB_COLLECTION_NAME, + emitStableDatabaseSemconv() ? "test-region" : null), + equalTo(DB_NAME, emitStableDatabaseSemconv() ? null : "test-region"), equalTo(maybeStable(DB_OPERATION), "put")), span -> span.hasName("remove test-region") .hasKind(SpanKind.CLIENT) .hasAttributesSatisfyingExactly( equalTo(maybeStable(DB_SYSTEM), GEODE), - equalTo(maybeStable(DB_NAME), "test-region"), + equalTo( + DB_COLLECTION_NAME, + emitStableDatabaseSemconv() ? "test-region" : null), + equalTo(DB_NAME, emitStableDatabaseSemconv() ? null : "test-region"), equalTo(maybeStable(DB_OPERATION), "remove")))); } @@ -169,21 +192,30 @@ void testQuery(Object key, Object value) throws QueryException { .hasKind(SpanKind.CLIENT) .hasAttributesSatisfyingExactly( equalTo(maybeStable(DB_SYSTEM), GEODE), - equalTo(maybeStable(DB_NAME), "test-region"), + equalTo( + DB_COLLECTION_NAME, + emitStableDatabaseSemconv() ? "test-region" : null), + equalTo(DB_NAME, emitStableDatabaseSemconv() ? null : "test-region"), equalTo(maybeStable(DB_OPERATION), "clear")), span -> span.hasName("put test-region") .hasKind(SpanKind.CLIENT) .hasAttributesSatisfyingExactly( equalTo(maybeStable(DB_SYSTEM), GEODE), - equalTo(maybeStable(DB_NAME), "test-region"), + equalTo( + DB_COLLECTION_NAME, + emitStableDatabaseSemconv() ? "test-region" : null), + equalTo(DB_NAME, emitStableDatabaseSemconv() ? null : "test-region"), equalTo(maybeStable(DB_OPERATION), "put")), span -> span.hasName("query test-region") .hasKind(SpanKind.CLIENT) .hasAttributesSatisfyingExactly( equalTo(maybeStable(DB_SYSTEM), GEODE), - equalTo(maybeStable(DB_NAME), "test-region"), + equalTo( + DB_COLLECTION_NAME, + emitStableDatabaseSemconv() ? "test-region" : null), + equalTo(DB_NAME, emitStableDatabaseSemconv() ? null : "test-region"), equalTo(maybeStable(DB_OPERATION), "query"), equalTo(maybeStable(DB_STATEMENT), "SELECT * FROM /test-region")))); } @@ -209,21 +241,30 @@ void testExistsValue(Object key, Object value) throws QueryException { .hasKind(SpanKind.CLIENT) .hasAttributesSatisfyingExactly( equalTo(maybeStable(DB_SYSTEM), GEODE), - equalTo(maybeStable(DB_NAME), "test-region"), + equalTo( + DB_COLLECTION_NAME, + emitStableDatabaseSemconv() ? "test-region" : null), + equalTo(DB_NAME, emitStableDatabaseSemconv() ? null : "test-region"), equalTo(maybeStable(DB_OPERATION), "clear")), span -> span.hasName("put test-region") .hasKind(SpanKind.CLIENT) .hasAttributesSatisfyingExactly( equalTo(maybeStable(DB_SYSTEM), GEODE), - equalTo(maybeStable(DB_NAME), "test-region"), + equalTo( + DB_COLLECTION_NAME, + emitStableDatabaseSemconv() ? "test-region" : null), + equalTo(DB_NAME, emitStableDatabaseSemconv() ? null : "test-region"), equalTo(maybeStable(DB_OPERATION), "put")), span -> span.hasName("existsValue test-region") .hasKind(SpanKind.CLIENT) .hasAttributesSatisfyingExactly( equalTo(maybeStable(DB_SYSTEM), GEODE), - equalTo(maybeStable(DB_NAME), "test-region"), + equalTo( + DB_COLLECTION_NAME, + emitStableDatabaseSemconv() ? "test-region" : null), + equalTo(DB_NAME, emitStableDatabaseSemconv() ? null : "test-region"), equalTo(maybeStable(DB_OPERATION), "existsValue"), equalTo(maybeStable(DB_STATEMENT), "SELECT * FROM /test-region")))); } @@ -250,21 +291,30 @@ void shouldSanitizeGeodeQuery() throws QueryException { .hasKind(SpanKind.CLIENT) .hasAttributesSatisfyingExactly( equalTo(maybeStable(DB_SYSTEM), GEODE), - equalTo(maybeStable(DB_NAME), "test-region"), + equalTo( + DB_COLLECTION_NAME, + emitStableDatabaseSemconv() ? "test-region" : null), + equalTo(DB_NAME, emitStableDatabaseSemconv() ? null : "test-region"), equalTo(maybeStable(DB_OPERATION), "clear")), span -> span.hasName("put test-region") .hasKind(SpanKind.CLIENT) .hasAttributesSatisfyingExactly( equalTo(maybeStable(DB_SYSTEM), GEODE), - equalTo(maybeStable(DB_NAME), "test-region"), + equalTo( + DB_COLLECTION_NAME, + emitStableDatabaseSemconv() ? "test-region" : null), + equalTo(DB_NAME, emitStableDatabaseSemconv() ? null : "test-region"), equalTo(maybeStable(DB_OPERATION), "put")), span -> span.hasName("query test-region") .hasKind(SpanKind.CLIENT) .hasAttributesSatisfyingExactly( equalTo(maybeStable(DB_SYSTEM), GEODE), - equalTo(maybeStable(DB_NAME), "test-region"), + equalTo( + DB_COLLECTION_NAME, + emitStableDatabaseSemconv() ? "test-region" : null), + equalTo(DB_NAME, emitStableDatabaseSemconv() ? null : "test-region"), equalTo(maybeStable(DB_OPERATION), "query"), equalTo( maybeStable(DB_STATEMENT),