Skip to content

Commit 4ae7367

Browse files
committed
Use stable db.system.name values in vertx sql client
1 parent 1e96363 commit 4ae7367

5 files changed

Lines changed: 53 additions & 17 deletions

File tree

instrumentation/vertx/vertx-sql-client/vertx-sql-client-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/vertx/v4_0/sql/QueryExecutorInstrumentation.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ public static AdviceScope start(Object queryExecutor, Object[] arguments) {
104104
}
105105

106106
SqlConnectOptions connectOptions = QueryExecutorUtil.getConnectOptions(queryExecutor);
107-
String dbSystem = VertxSqlClientUtil.getDbSystemFromClassName(connectOptions);
107+
String dbSystem = VertxSqlClientUtil.getDbSystemNameFromClassName(connectOptions);
108108
VertxSqlClientRequest otelRequest =
109109
new VertxSqlClientRequest(sql, connectOptions, preparedStatement, dbSystem);
110110
Context parentContext = Context.current();

instrumentation/vertx/vertx-sql-client/vertx-sql-client-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/vertx/v5_0/sql/DriverInstrumentation.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77

88
import static io.opentelemetry.javaagent.extension.matcher.AgentElementMatchers.hasClassesNamed;
99
import static io.opentelemetry.javaagent.extension.matcher.AgentElementMatchers.implementsInterface;
10-
import static io.opentelemetry.javaagent.instrumentation.vertx.sql.VertxSqlClientUtil.getDbSystemFromClassName;
10+
import static io.opentelemetry.javaagent.instrumentation.vertx.sql.VertxSqlClientUtil.getDbSystemNameFromClassName;
1111
import static io.opentelemetry.javaagent.instrumentation.vertx.v5_0.sql.VertxSqlClientSingletons.storePoolDbSystem;
1212
import static net.bytebuddy.matcher.ElementMatchers.isStatic;
1313
import static net.bytebuddy.matcher.ElementMatchers.named;
@@ -50,7 +50,7 @@ public static class NewPoolAdvice {
5050
@Advice.OnMethodExit(suppress = Throwable.class)
5151
public static void onExit(@Advice.This Object driver, @Advice.Return Pool pool) {
5252
if (pool != null) {
53-
storePoolDbSystem(pool, getDbSystemFromClassName(driver));
53+
storePoolDbSystem(pool, getDbSystemNameFromClassName(driver));
5454
}
5555
}
5656
}

instrumentation/vertx/vertx-sql-client/vertx-sql-client-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/vertx/sql/VertxSqlClientAttributesGetter.java

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,11 @@
88
import static io.opentelemetry.instrumentation.api.incubator.semconv.db.SqlDialect.DOUBLE_QUOTES_ARE_IDENTIFIERS;
99
import static io.opentelemetry.instrumentation.api.incubator.semconv.db.SqlDialect.DOUBLE_QUOTES_ARE_STRING_LITERALS;
1010
import static io.opentelemetry.instrumentation.api.internal.SemconvStability.emitStableDatabaseSemconv;
11-
import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DbSystemNameIncubatingValues.DB2;
12-
import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DbSystemNameIncubatingValues.MICROSOFT_SQL_SERVER;
13-
import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DbSystemNameIncubatingValues.MYSQL;
11+
import static io.opentelemetry.semconv.DbAttributes.DbSystemNameValues.MICROSOFT_SQL_SERVER;
12+
import static io.opentelemetry.semconv.DbAttributes.DbSystemNameValues.MYSQL;
13+
import static io.opentelemetry.semconv.DbAttributes.DbSystemNameValues.POSTGRESQL;
14+
import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DbSystemNameIncubatingValues.IBM_DB2;
1415
import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DbSystemNameIncubatingValues.ORACLE_DB;
15-
import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DbSystemNameIncubatingValues.POSTGRESQL;
1616
import static java.util.Collections.singleton;
1717

1818
import io.opentelemetry.instrumentation.api.incubator.semconv.db.SqlClientAttributesGetter;
@@ -40,6 +40,13 @@ public String getDbSystemName(VertxSqlClientRequest request) {
4040
return null;
4141
}
4242

43+
@Deprecated // to be removed in 3.0
44+
@Override
45+
@Nullable
46+
public String getDbSystem(VertxSqlClientRequest request) {
47+
return request.getDbSystem();
48+
}
49+
4350
@Override
4451
public SqlDialect getSqlDialect(VertxSqlClientRequest request) {
4552
switch (request.getDbSystemName()) {
@@ -48,7 +55,7 @@ public SqlDialect getSqlDialect(VertxSqlClientRequest request) {
4855
return DOUBLE_QUOTES_ARE_STRING_LITERALS;
4956
case POSTGRESQL:
5057
case ORACLE_DB:
51-
case DB2:
58+
case IBM_DB2:
5259
case MICROSOFT_SQL_SERVER:
5360
// These databases treat double-quoted fragments as identifiers
5461
return DOUBLE_QUOTES_ARE_IDENTIFIERS;

instrumentation/vertx/vertx-sql-client/vertx-sql-client-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/vertx/sql/VertxSqlClientRequest.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,11 @@ public boolean isParameterizedQuery() {
4949
return parameterizedQuery;
5050
}
5151

52+
@Deprecated // to be removed in 3.0
53+
public String getDbSystem() {
54+
return VertxSqlClientUtil.getOldDbSystemFromName(dbSystemName);
55+
}
56+
5257
public String getDbSystemName() {
5358
return dbSystemName;
5459
}

instrumentation/vertx/vertx-sql-client/vertx-sql-client-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/vertx/sql/VertxSqlClientUtil.java

Lines changed: 33 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,15 @@
55

66
package io.opentelemetry.javaagent.instrumentation.vertx.sql;
77

8-
import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DbSystemNameIncubatingValues.DB2;
9-
import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DbSystemNameIncubatingValues.MICROSOFT_SQL_SERVER;
10-
import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DbSystemNameIncubatingValues.MYSQL;
8+
import static io.opentelemetry.semconv.DbAttributes.DbSystemNameValues.MICROSOFT_SQL_SERVER;
9+
import static io.opentelemetry.semconv.DbAttributes.DbSystemNameValues.MYSQL;
10+
import static io.opentelemetry.semconv.DbAttributes.DbSystemNameValues.POSTGRESQL;
11+
import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DbSystemIncubatingValues.DB2;
12+
import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DbSystemIncubatingValues.MSSQL;
13+
import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DbSystemIncubatingValues.ORACLE;
14+
import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DbSystemNameIncubatingValues.IBM_DB2;
1115
import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DbSystemNameIncubatingValues.ORACLE_DB;
1216
import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DbSystemNameIncubatingValues.OTHER_SQL;
13-
import static io.opentelemetry.semconv.incubating.DbIncubatingAttributes.DbSystemNameIncubatingValues.POSTGRESQL;
1417

1518
import io.opentelemetry.context.Context;
1619
import io.opentelemetry.context.Scope;
@@ -25,7 +28,10 @@
2528
import java.util.concurrent.CompletableFuture;
2629
import javax.annotation.Nullable;
2730

31+
// Old semconv db.system values are deprecated but still needed for backward compatibility
32+
@SuppressWarnings("deprecation")
2833
public final class VertxSqlClientUtil {
34+
2935
private static final ThreadLocal<SqlConnectOptions> connectOptions = new ThreadLocal<>();
3036

3137
public static void setSqlConnectOptions(SqlConnectOptions sqlConnectOptions) {
@@ -39,7 +45,8 @@ public static SqlConnectOptions getSqlConnectOptions() {
3945
private static final VirtualField<Pool, SqlConnectOptions> poolConnectOptions =
4046
VirtualField.find(Pool.class, SqlConnectOptions.class);
4147

42-
private static final Map<String, String> DB_SYSTEM_BY_PACKAGE = buildPackageDbSystemMap();
48+
private static final Map<String, String> DB_SYSTEM_NAME_BY_PACKAGE =
49+
buildPackageDbSystemNameMap();
4350

4451
public static void setPoolConnectOptions(Pool pool, SqlConnectOptions sqlConnectOptions) {
4552
poolConnectOptions.set(pool, sqlConnectOptions);
@@ -49,10 +56,10 @@ public static SqlConnectOptions getPoolSqlConnectOptions(Pool pool) {
4956
return poolConnectOptions.get(pool);
5057
}
5158

52-
public static String getDbSystemFromClassName(@Nullable Object instance) {
59+
public static String getDbSystemNameFromClassName(@Nullable Object instance) {
5360
if (instance != null) {
5461
String className = instance.getClass().getName();
55-
for (Map.Entry<String, String> entry : DB_SYSTEM_BY_PACKAGE.entrySet()) {
62+
for (Map.Entry<String, String> entry : DB_SYSTEM_NAME_BY_PACKAGE.entrySet()) {
5663
if (className.startsWith(entry.getKey())) {
5764
return entry.getValue();
5865
}
@@ -61,15 +68,32 @@ public static String getDbSystemFromClassName(@Nullable Object instance) {
6168
return OTHER_SQL;
6269
}
6370

71+
public static String getOldDbSystemFromName(String dbSystemName) {
72+
switch (dbSystemName) {
73+
case POSTGRESQL:
74+
return POSTGRESQL;
75+
case MYSQL:
76+
return MYSQL;
77+
case MICROSOFT_SQL_SERVER:
78+
return MSSQL;
79+
case ORACLE_DB:
80+
return ORACLE;
81+
case IBM_DB2:
82+
return DB2;
83+
default:
84+
return OTHER_SQL;
85+
}
86+
}
87+
6488
// See https://github.com/eclipse-vertx/vertx-sql-client for the full list of supported
6589
// database-specific client modules
66-
private static Map<String, String> buildPackageDbSystemMap() {
90+
private static Map<String, String> buildPackageDbSystemNameMap() {
6791
Map<String, String> map = new HashMap<>();
6892
map.put("io.vertx.pgclient.", POSTGRESQL);
6993
map.put("io.vertx.mysqlclient.", MYSQL);
7094
map.put("io.vertx.mssqlclient.", MICROSOFT_SQL_SERVER);
7195
map.put("io.vertx.oracleclient.", ORACLE_DB);
72-
map.put("io.vertx.db2client.", DB2);
96+
map.put("io.vertx.db2client.", IBM_DB2);
7397
return map;
7498
}
7599

0 commit comments

Comments
 (0)