From 20c5f4f11cee6fb2917630e398fddadb5681f1ce Mon Sep 17 00:00:00 2001 From: Thomas Segismont Date: Thu, 26 Sep 2024 15:58:44 +0200 Subject: [PATCH 1/2] Use names specified by OpenTelemetry for tags See https://github.com/eclipse-vertx/vertx-tracing/issues/69 Signed-off-by: Thomas Segismont --- .../sqlclient/impl/tracing/QueryReporter.java | 19 ++++++++++--------- .../vertx/sqlclient/tck/TracingTestBase.java | 4 +--- 2 files changed, 11 insertions(+), 12 deletions(-) diff --git a/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/tracing/QueryReporter.java b/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/tracing/QueryReporter.java index 0ffc983c99..82acd7e841 100644 --- a/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/tracing/QueryReporter.java +++ b/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/tracing/QueryReporter.java @@ -1,15 +1,15 @@ package io.vertx.sqlclient.impl.tracing; import io.vertx.core.AsyncResult; +import io.vertx.core.internal.ContextInternal; import io.vertx.core.spi.metrics.ClientMetrics; import io.vertx.core.spi.tracing.SpanKind; import io.vertx.core.spi.tracing.TagExtractor; import io.vertx.core.spi.tracing.VertxTracer; import io.vertx.core.tracing.TracingPolicy; -import io.vertx.core.internal.ContextInternal; import io.vertx.sqlclient.Tuple; -import io.vertx.sqlclient.internal.Connection; import io.vertx.sqlclient.impl.QueryResultBuilder; +import io.vertx.sqlclient.internal.Connection; import io.vertx.sqlclient.internal.command.ExtendedQueryCommand; import io.vertx.sqlclient.internal.command.QueryCommandBase; import io.vertx.sqlclient.internal.command.SimpleQueryCommand; @@ -26,17 +26,16 @@ public class QueryReporter { enum RequestTags { // Generic - PEER_ADDRESS("peer.address", q -> q.tracer.address), + PEER_ADDRESS("network.peer.address", q -> q.tracer.address), SPAN_KIND("span.kind", q -> "client"), // DB - // See https://github.com/open-telemetry/opentelemetry-specification/blob/v1.18.0/specification/trace/semantic_conventions/database.md#connection-level-attributes + // See https://opentelemetry.io/docs/specs/semconv/database/ DB_USER("db.user", q -> q.tracer.user), - DB_INSTANCE("db.instance", q -> q.tracer.database), - DB_STATEMENT("db.statement", QueryRequest::sql), - DB_TYPE("db.type", q -> "sql"), - DB_NAME("db.system", q -> q.tracer.system), + DB_NAMESPACE("db.namespace", q -> q.tracer.database), + DB_QUERY_TEXT("db.query.text", QueryRequest::sql), + DB_SYSTEM("db.system", q -> q.tracer.system), ; final String name; @@ -48,7 +47,7 @@ enum RequestTags { } } - private static final TagExtractor REQUEST_TAG_EXTRACTOR = new TagExtractor() { + private static final TagExtractor REQUEST_TAG_EXTRACTOR = new TagExtractor<>() { private final RequestTags[] TAGS = RequestTags.values(); @@ -56,10 +55,12 @@ enum RequestTags { public int len(QueryRequest obj) { return TAGS.length; } + @Override public String name(QueryRequest obj, int index) { return TAGS[index].name; } + @Override public String value(QueryRequest obj, int index) { return TAGS[index].fn.apply(obj); diff --git a/vertx-sql-client/src/test/java/io/vertx/sqlclient/tck/TracingTestBase.java b/vertx-sql-client/src/test/java/io/vertx/sqlclient/tck/TracingTestBase.java index 0548c8bf1e..f1c07a570c 100644 --- a/vertx-sql-client/src/test/java/io/vertx/sqlclient/tck/TracingTestBase.java +++ b/vertx-sql-client/src/test/java/io/vertx/sqlclient/tck/TracingTestBase.java @@ -14,7 +14,6 @@ import io.vertx.core.Context; import io.vertx.core.Future; import io.vertx.core.Vertx; -import io.vertx.core.VertxOptions; import io.vertx.core.spi.tracing.SpanKind; import io.vertx.core.spi.tracing.TagExtractor; import io.vertx.core.spi.tracing.VertxTracer; @@ -124,8 +123,7 @@ public Object sendRequest(Context context, SpanKind kind, TracingPolicy trac ctx.assertEquals(expectedTuples, query.tuples()); Map tags = tagExtractor.extract(request); ctx.assertEquals("client", tags.get("span.kind")); - ctx.assertEquals("sql", tags.get("db.type")); - ctx.assertEquals(expectedSql, tags.get("db.statement")); + ctx.assertEquals(expectedSql, tags.get("db.query.text")); String dbSystem = tags.get("db.system"); ctx.assertNotNull(dbSystem); ctx.assertTrue(isValidDbSystem(dbSystem)); From e751864f738401f4be04ce933b88e816fba1a60a Mon Sep 17 00:00:00 2001 From: Thomas Segismont Date: Thu, 26 Sep 2024 16:31:01 +0200 Subject: [PATCH 2/2] Prevent failures in MySQLUnixDomainSocketTest Like: 2024-09-26T14:00:19.4493986Z [ERROR] io.vertx.mysqlclient.MySQLUnixDomainSocketTest.connectWithVertxInstance -- Time elapsed: 0.016 s <<< ERROR! 2024-09-26T14:00:19.4496437Z java.util.concurrent.RejectedExecutionException: event executor terminated 2024-09-26T14:00:19.4500928Z at io.netty.util.concurrent.SingleThreadEventExecutor.reject(SingleThreadEventExecutor.java:1056) Signed-off-by: Thomas Segismont --- .../vertx/mysqlclient/MySQLUnixDomainSocketTest.java | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/vertx-mysql-client/src/test/java/io/vertx/mysqlclient/MySQLUnixDomainSocketTest.java b/vertx-mysql-client/src/test/java/io/vertx/mysqlclient/MySQLUnixDomainSocketTest.java index 6c9acff430..a740961e14 100644 --- a/vertx-mysql-client/src/test/java/io/vertx/mysqlclient/MySQLUnixDomainSocketTest.java +++ b/vertx-mysql-client/src/test/java/io/vertx/mysqlclient/MySQLUnixDomainSocketTest.java @@ -52,13 +52,9 @@ public void setUp() { } @After - public void after(TestContext ctx) { - if (vertx != null) { - vertx.close().onComplete(ctx.asyncAssertSuccess()); - } - if (client != null) { - client.close().onComplete(ctx.asyncAssertSuccess()); - } + public void after() { + client.close().await(); + vertx.close().await(); } @Test