Skip to content

Commit 98bc029

Browse files
committed
db.system is a mandatory OTEL span attribute (#1373)
See #64 The specification requires `db.system` span attribute to be present, with a default value of `other_sql`. The database connection implemented have been changed to report a specific system value (static or computed from database metadata). Signed-off-by: Thomas Segismont <[email protected]>
1 parent d15dd64 commit 98bc029

File tree

16 files changed

+106
-27
lines changed

16 files changed

+106
-27
lines changed

vertx-db2-client/src/main/java/io/vertx/db2client/impl/DB2SocketConnection.java

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,6 @@
1515
*/
1616
package io.vertx.db2client.impl;
1717

18-
import java.util.Map;
19-
import java.util.function.Predicate;
20-
2118
import io.netty.channel.ChannelPipeline;
2219
import io.vertx.core.AsyncResult;
2320
import io.vertx.core.Handler;
@@ -33,13 +30,12 @@
3330
import io.vertx.sqlclient.impl.Connection;
3431
import io.vertx.sqlclient.impl.QueryResultHandler;
3532
import io.vertx.sqlclient.impl.SocketConnectionBase;
36-
import io.vertx.sqlclient.impl.command.CommandBase;
37-
import io.vertx.sqlclient.impl.command.CommandResponse;
38-
import io.vertx.sqlclient.impl.command.QueryCommandBase;
39-
import io.vertx.sqlclient.impl.command.SimpleQueryCommand;
40-
import io.vertx.sqlclient.impl.command.TxCommand;
33+
import io.vertx.sqlclient.impl.command.*;
4134
import io.vertx.sqlclient.spi.DatabaseMetadata;
4235

36+
import java.util.Map;
37+
import java.util.function.Predicate;
38+
4339
public class DB2SocketConnection extends SocketConnectionBase {
4440

4541
private final DB2ConnectOptions connectOptions;
@@ -108,6 +104,11 @@ public void handleClose(Throwable t) {
108104
context().runOnContext(closeHandler);
109105
}
110106

107+
@Override
108+
public String system() {
109+
return "db2";
110+
}
111+
111112
@Override
112113
public DatabaseMetadata getDatabaseMetaData() {
113114
return connMetadata.getDbMetadata();

vertx-db2-client/src/test/java/io/vertx/db2client/tck/DB2TracingTest.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,4 +35,9 @@ protected Pool createPool(Vertx vertx) {
3535
protected String statement(String... parts) {
3636
return String.join("?", parts);
3737
}
38+
39+
@Override
40+
protected boolean isValidDbSystem(String dbSystem) {
41+
return "db2".equals(dbSystem);
42+
}
3843
}

vertx-mssql-client/src/main/java/io/vertx/mssqlclient/impl/MSSQLSocketConnection.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -164,6 +164,11 @@ protected void handleMessage(Object msg) {
164164
}
165165
}
166166

167+
@Override
168+
public String system() {
169+
return "mssql";
170+
}
171+
167172
@Override
168173
public DatabaseMetadata getDatabaseMetaData() {
169174
return databaseMetadata;

vertx-mssql-client/src/test/java/io/vertx/mssqlclient/tck/MSSQLTracingTest.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,4 +42,9 @@ protected String statement(String... parts) {
4242
}
4343
return sb.toString();
4444
}
45+
46+
@Override
47+
protected boolean isValidDbSystem(String dbSystem) {
48+
return "mssql".equals(dbSystem);
49+
}
4550
}

vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/MySQLDatabaseMetadata.java

Lines changed: 26 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -8,19 +8,33 @@ public class MySQLDatabaseMetadata implements DatabaseMetadata {
88

99
private static final Logger LOGGER = LoggerFactory.getLogger(MySQLDatabaseMetadata.class);
1010

11+
private enum System {
12+
MYSQL("mysql", "MySQL"),
13+
MARIA_DB("mariadb", "MariaDB"),
14+
;
15+
16+
final String value;
17+
final String productName;
18+
19+
System(String value, String productName) {
20+
this.value = value;
21+
this.productName = productName;
22+
}
23+
}
24+
25+
private final System system;
1126
private final String fullVersion;
12-
private final String productName;
1327
private final int majorVersion;
1428
private final int minorVersion;
1529
private final int microVersion;
1630

17-
private MySQLDatabaseMetadata(String fullVersion,
18-
String productName,
31+
private MySQLDatabaseMetadata(System system,
32+
String fullVersion,
1933
int majorVersion,
2034
int minorVersion,
2135
int microVersion) {
36+
this.system = system;
2237
this.fullVersion = fullVersion;
23-
this.productName = productName;
2438
this.majorVersion = majorVersion;
2539
this.minorVersion = minorVersion;
2640
this.microVersion = microVersion;
@@ -32,11 +46,10 @@ public static MySQLDatabaseMetadata parse(String serverVersion) {
3246
int microVersion = 0;
3347

3448
int len = serverVersion.length();
35-
boolean isMariaDb = serverVersion.contains("MariaDB");
36-
String productName = isMariaDb ? "MariaDB" : "MySQL";
49+
System system = serverVersion.contains("MariaDB") ? System.MARIA_DB : System.MYSQL;
3750

3851
String fullServerVersion = serverVersion;
39-
if (isMariaDb) {
52+
if (system == System.MARIA_DB) {
4053
// MariaDB server version < 11.x.x is by default prefixed by "5.5.5-"
4154
serverVersion = serverVersion.replace("5.5.5-", "");
4255
}
@@ -67,12 +80,16 @@ public static MySQLDatabaseMetadata parse(String serverVersion) {
6780
LOGGER.warn("Incorrect parsing server version tokens", ex);
6881
}
6982

70-
return new MySQLDatabaseMetadata(fullServerVersion, productName, majorVersion, minorVersion, microVersion);
83+
return new MySQLDatabaseMetadata(system, fullServerVersion, majorVersion, minorVersion, microVersion);
84+
}
85+
86+
public String system() {
87+
return system.value;
7188
}
7289

7390
@Override
7491
public String productName() {
75-
return productName;
92+
return system.productName;
7693
}
7794

7895
@Override

vertx-mysql-client/src/main/java/io/vertx/mysqlclient/impl/MySQLSocketConnection.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,11 @@ public void upgradeToSsl(Handler<AsyncResult<Void>> completionHandler) {
115115
socket.upgradeToSsl(completionHandler);
116116
}
117117

118+
@Override
119+
public String system() {
120+
return metaData.system();
121+
}
122+
118123
@Override
119124
public DatabaseMetadata getDatabaseMetaData() {
120125
return metaData;

vertx-mysql-client/src/test/java/io/vertx/mysqlclient/tck/MySQLTracingTest.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,4 +35,9 @@ protected Pool createPool(Vertx vertx) {
3535
protected String statement(String... parts) {
3636
return String.join("?", parts);
3737
}
38+
39+
@Override
40+
protected boolean isValidDbSystem(String dbSystem) {
41+
return "mysql".equals(dbSystem) || "mariadb".equals(dbSystem);
42+
}
3843
}

vertx-oracle-client/src/main/java/io/vertx/oracleclient/impl/OracleJdbcConnection.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,11 @@
1111
package io.vertx.oracleclient.impl;
1212

1313
import io.vertx.core.*;
14-
import io.vertx.core.spi.metrics.ClientMetrics;
1514
import io.vertx.core.impl.ContextInternal;
1615
import io.vertx.core.impl.NoStackTraceThrowable;
1716
import io.vertx.core.impl.future.PromiseInternal;
1817
import io.vertx.core.net.SocketAddress;
18+
import io.vertx.core.spi.metrics.ClientMetrics;
1919
import io.vertx.core.tracing.TracingPolicy;
2020
import io.vertx.oracleclient.OracleConnectOptions;
2121
import io.vertx.oracleclient.impl.commands.*;
@@ -72,6 +72,11 @@ public TracingPolicy tracingPolicy() {
7272
return options.getTracingPolicy();
7373
}
7474

75+
@Override
76+
public String system() {
77+
return "oracle";
78+
}
79+
7580
@Override
7681
public String database() {
7782
return options.getDatabase();

vertx-oracle-client/src/test/java/io/vertx/oracleclient/test/tck/OracleTracingTest.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,4 +52,9 @@ public void testTraceBatchQuery(TestContext ctx) {
5252
@Override
5353
public void testTracePooledBatchQuery(TestContext ctx) {
5454
}
55+
56+
@Override
57+
protected boolean isValidDbSystem(String dbSystem) {
58+
return "oracle".equals(dbSystem);
59+
}
5560
}

vertx-pg-client/src/main/java/io/vertx/pgclient/impl/PgSocketConnection.java

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -36,11 +36,7 @@
3636
import io.vertx.sqlclient.impl.Notification;
3737
import io.vertx.sqlclient.impl.QueryResultHandler;
3838
import io.vertx.sqlclient.impl.SocketConnectionBase;
39-
import io.vertx.sqlclient.impl.command.CommandBase;
40-
import io.vertx.sqlclient.impl.command.InitCommand;
41-
import io.vertx.sqlclient.impl.command.QueryCommandBase;
42-
import io.vertx.sqlclient.impl.command.SimpleQueryCommand;
43-
import io.vertx.sqlclient.impl.command.TxCommand;
39+
import io.vertx.sqlclient.impl.command.*;
4440
import io.vertx.sqlclient.spi.DatabaseMetadata;
4541

4642
import java.util.Map;
@@ -187,4 +183,9 @@ public boolean isIndeterminatePreparedStatementError(Throwable error) {
187183
}
188184
return false;
189185
}
186+
187+
@Override
188+
public String system() {
189+
return "postgresql";
190+
}
190191
}

0 commit comments

Comments
 (0)