Skip to content

Commit 0e20729

Browse files
traskAlex Kats
authored and
Alex Kats
committed
Map lettuce 5.1 db.namespace to db.name (unless using experimental database semconv stability opt-in) (open-telemetry#12609)
1 parent 71179d0 commit 0e20729

File tree

2 files changed

+20
-1
lines changed

2 files changed

+20
-1
lines changed

instrumentation/lettuce/lettuce-5.1/library/src/main/java/io/opentelemetry/instrumentation/lettuce/v5_1/OpenTelemetryTracing.java

+12
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,8 @@ final class OpenTelemetryTracing implements Tracing {
4343
private static final AttributeKey<String> DB_SYSTEM = AttributeKey.stringKey("db.system");
4444
private static final AttributeKey<String> DB_STATEMENT = AttributeKey.stringKey("db.statement");
4545
private static final AttributeKey<String> DB_QUERY_TEXT = AttributeKey.stringKey("db.query.text");
46+
private static final AttributeKey<Long> DB_REDIS_DATABASE_INDEX =
47+
AttributeKey.longKey("db.redis.database_index");
4648
// copied from DbIncubatingAttributes.DbSystemIncubatingValues
4749
private static final String REDIS = "redis";
4850

@@ -313,6 +315,16 @@ public synchronized Tracer.Span tag(String key, String value) {
313315
argsString = value;
314316
return this;
315317
}
318+
if (key.equals("db.namespace") && SemconvStability.emitOldDatabaseSemconv()) {
319+
// map backwards into db.redis.database.index
320+
long val = Long.parseLong(value);
321+
if (span != null) {
322+
span.setAttribute(DB_REDIS_DATABASE_INDEX, val);
323+
} else {
324+
spanBuilder.setAttribute(DB_REDIS_DATABASE_INDEX, val);
325+
}
326+
return this;
327+
}
316328
if (span != null) {
317329
span.setAttribute(key, value);
318330
} else {

instrumentation/lettuce/lettuce-5.1/testing/src/main/java/io/opentelemetry/instrumentation/lettuce/v5_1/AbstractLettuceClientTest.java

+8-1
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,11 @@
77

88
import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo;
99
import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_NAMESPACE;
10+
import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DB_REDIS_DATABASE_INDEX;
1011

1112
import io.lettuce.core.RedisClient;
1213
import io.lettuce.core.api.StatefulRedisConnection;
14+
import io.opentelemetry.instrumentation.api.internal.SemconvStability;
1315
import io.opentelemetry.instrumentation.testing.internal.AutoCleanupExtension;
1416
import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension;
1517
import io.opentelemetry.sdk.testing.assertj.AttributeAssertion;
@@ -80,10 +82,15 @@ private ContainerConnection(StatefulRedisConnection<String, String> connection,
8082
}
8183
}
8284

85+
@SuppressWarnings("deprecation") // using deprecated semconv
8386
protected static List<AttributeAssertion> addExtraAttributes(AttributeAssertion... assertions) {
8487
List<AttributeAssertion> result = new ArrayList<>(Arrays.asList(assertions));
8588
if (Boolean.getBoolean("testLatestDeps")) {
86-
result.add(equalTo(DB_NAMESPACE, "0"));
89+
if (SemconvStability.emitStableDatabaseSemconv()) {
90+
result.add(equalTo(DB_NAMESPACE, "0"));
91+
} else {
92+
result.add(equalTo(DB_REDIS_DATABASE_INDEX, 0));
93+
}
8794
}
8895
return result;
8996
}

0 commit comments

Comments
 (0)