Skip to content

Commit e02076c

Browse files
authored
Add instrumentation for vertx-sql-client 5.0 (#13914)
1 parent e5975fb commit e02076c

File tree

31 files changed

+1269
-173
lines changed

31 files changed

+1269
-173
lines changed

.fossa.yml

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -958,9 +958,6 @@ targets:
958958
- type: gradle
959959
path: ./
960960
target: ':instrumentation:vertx:vertx-rx-java-3.5:javaagent'
961-
- type: gradle
962-
path: ./
963-
target: ':instrumentation:vertx:vertx-sql-client-4.0:javaagent'
964961
- type: gradle
965962
path: ./
966963
target: ':instrumentation:vertx:vertx-web-3.0:javaagent'
@@ -1120,6 +1117,15 @@ targets:
11201117
- type: gradle
11211118
path: ./
11221119
target: ':instrumentation:vertx:vertx-http-client:vertx-http-client-common:javaagent'
1120+
- type: gradle
1121+
path: ./
1122+
target: ':instrumentation:vertx:vertx-sql-client:vertx-sql-client-4.0:javaagent'
1123+
- type: gradle
1124+
path: ./
1125+
target: ':instrumentation:vertx:vertx-sql-client:vertx-sql-client-5.0:javaagent'
1126+
- type: gradle
1127+
path: ./
1128+
target: ':instrumentation:vertx:vertx-sql-client:vertx-sql-client-common:javaagent'
11231129

11241130
experimental:
11251131
gradle:

instrumentation/hibernate/hibernate-reactive-1.0/javaagent/build.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ dependencies {
1515
compileOnly("org.hibernate.reactive:hibernate-reactive-core:1.0.0.Final")
1616

1717
testInstrumentation(project(":instrumentation:netty:netty-4.1:javaagent"))
18-
testInstrumentation(project(":instrumentation:vertx:vertx-sql-client-4.0:javaagent"))
18+
testInstrumentation(project(":instrumentation:vertx:vertx-sql-client:vertx-sql-client-4.0:javaagent"))
1919

2020
library("io.vertx:vertx-sql-client:4.4.2")
2121
compileOnly("io.vertx:vertx-codegen:4.4.2")

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

Lines changed: 0 additions & 132 deletions
This file was deleted.

instrumentation/vertx/vertx-sql-client-4.0/javaagent/build.gradle.kts renamed to instrumentation/vertx/vertx-sql-client/vertx-sql-client-4.0/javaagent/build.gradle.kts

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,16 +14,18 @@ muzzle {
1414
dependencies {
1515
val version = "4.0.0"
1616
library("io.vertx:vertx-sql-client:$version")
17-
compileOnly("io.vertx:vertx-codegen:$version")
17+
library("io.vertx:vertx-codegen:$version")
18+
19+
implementation(project(":instrumentation:vertx:vertx-sql-client:vertx-sql-client-common:javaagent"))
1820

1921
testInstrumentation(project(":instrumentation:netty:netty-4.1:javaagent"))
22+
testInstrumentation(project(":instrumentation:vertx:vertx-sql-client:vertx-sql-client-5.0:javaagent"))
2023

2124
testLibrary("io.vertx:vertx-pg-client:$version")
22-
testLibrary("io.vertx:vertx-codegen:$version")
2325

24-
latestDepTestLibrary("io.vertx:vertx-sql-client:4.+") // documented limitation, 5.x not supported yet
25-
latestDepTestLibrary("io.vertx:vertx-pg-client:4.+") // documented limitation, 5.x not supported yet
26-
latestDepTestLibrary("io.vertx:vertx-codegen:4.+") // documented limitation, 5.x not supported yet
26+
latestDepTestLibrary("io.vertx:vertx-sql-client:4.+") // see vertx-sql-client-5.0 module
27+
latestDepTestLibrary("io.vertx:vertx-pg-client:4.+") // see vertx-sql-client-5.0 module
28+
latestDepTestLibrary("io.vertx:vertx-codegen:4.+") // see vertx-sql-client-5.0 module
2729
}
2830

2931
tasks {
Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -7,15 +7,18 @@
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.v4_0.sql.VertxSqlClientSingletons.setSqlConnectOptions;
10+
import static io.opentelemetry.javaagent.instrumentation.vertx.sql.VertxSqlClientUtil.getPoolSqlConnectOptions;
11+
import static io.opentelemetry.javaagent.instrumentation.vertx.sql.VertxSqlClientUtil.setPoolConnectOptions;
12+
import static io.opentelemetry.javaagent.instrumentation.vertx.sql.VertxSqlClientUtil.setSqlConnectOptions;
13+
import static io.opentelemetry.javaagent.instrumentation.vertx.sql.VertxSqlClientUtil.wrapContext;
14+
import static io.opentelemetry.javaagent.instrumentation.vertx.v4_0.sql.VertxSqlClientSingletons.attachConnectOptions;
1115
import static net.bytebuddy.matcher.ElementMatchers.isStatic;
1216
import static net.bytebuddy.matcher.ElementMatchers.named;
1317
import static net.bytebuddy.matcher.ElementMatchers.returns;
1418
import static net.bytebuddy.matcher.ElementMatchers.takesArgument;
1519
import static net.bytebuddy.matcher.ElementMatchers.takesArguments;
1620
import static net.bytebuddy.matcher.ElementMatchers.takesNoArguments;
1721

18-
import io.opentelemetry.instrumentation.api.util.VirtualField;
1922
import io.opentelemetry.javaagent.bootstrap.CallDepth;
2023
import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation;
2124
import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer;
@@ -78,10 +81,7 @@ public static void onExit(
7881
return;
7982
}
8083

81-
VirtualField<Pool, SqlConnectOptions> virtualField =
82-
VirtualField.find(Pool.class, SqlConnectOptions.class);
83-
virtualField.set(pool, sqlConnectOptions);
84-
84+
setPoolConnectOptions(pool, sqlConnectOptions);
8585
setSqlConnectOptions(null);
8686
}
8787
}
@@ -92,12 +92,10 @@ public static class GetConnectionAdvice {
9292
public static void onExit(
9393
@Advice.This Pool pool, @Advice.Return(readOnly = false) Future<SqlConnection> future) {
9494
// copy connect options stored on pool to new connection
95-
VirtualField<Pool, SqlConnectOptions> virtualField =
96-
VirtualField.find(Pool.class, SqlConnectOptions.class);
97-
SqlConnectOptions sqlConnectOptions = virtualField.get(pool);
95+
SqlConnectOptions sqlConnectOptions = getPoolSqlConnectOptions(pool);
9896

99-
future = VertxSqlClientSingletons.attachConnectOptions(future, sqlConnectOptions);
100-
future = VertxSqlClientSingletons.wrapContext(future);
97+
future = attachConnectOptions(future, sqlConnectOptions);
98+
future = wrapContext(future);
10199
}
102100
}
103101
}
Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
package io.opentelemetry.javaagent.instrumentation.vertx.v4_0.sql;
77

88
import static io.opentelemetry.javaagent.bootstrap.Java8BytecodeBridge.currentContext;
9-
import static io.opentelemetry.javaagent.instrumentation.vertx.v4_0.sql.VertxSqlClientSingletons.getSqlConnectOptions;
9+
import static io.opentelemetry.javaagent.instrumentation.vertx.sql.VertxSqlClientUtil.getSqlConnectOptions;
1010
import static io.opentelemetry.javaagent.instrumentation.vertx.v4_0.sql.VertxSqlClientSingletons.instrumenter;
1111
import static net.bytebuddy.matcher.ElementMatchers.isConstructor;
1212
import static net.bytebuddy.matcher.ElementMatchers.named;
@@ -17,6 +17,8 @@
1717
import io.opentelemetry.javaagent.bootstrap.CallDepth;
1818
import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation;
1919
import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer;
20+
import io.opentelemetry.javaagent.instrumentation.vertx.sql.VertxSqlClientRequest;
21+
import io.opentelemetry.javaagent.instrumentation.vertx.sql.VertxSqlClientUtil;
2022
import io.vertx.core.impl.future.PromiseInternal;
2123
import io.vertx.sqlclient.impl.PreparedStatement;
2224
import io.vertx.sqlclient.impl.QueryExecutorUtil;
@@ -95,7 +97,7 @@ public static void onEnter(
9597

9698
context = instrumenter().start(parentContext, otelRequest);
9799
scope = context.makeCurrent();
98-
VertxSqlClientSingletons.attachRequest(promiseInternal, otelRequest, context, parentContext);
100+
VertxSqlClientUtil.attachRequest(promiseInternal, otelRequest, context, parentContext);
99101
}
100102

101103
@Advice.OnMethodExit(onThrowable = Throwable.class, suppress = Throwable.class)
Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,8 @@
55

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

8-
import static io.opentelemetry.javaagent.instrumentation.vertx.v4_0.sql.VertxSqlClientSingletons.endQuerySpan;
8+
import static io.opentelemetry.javaagent.instrumentation.vertx.sql.VertxSqlClientUtil.endQuerySpan;
9+
import static io.opentelemetry.javaagent.instrumentation.vertx.v4_0.sql.VertxSqlClientSingletons.instrumenter;
910
import static net.bytebuddy.matcher.ElementMatchers.named;
1011
import static net.bytebuddy.matcher.ElementMatchers.takesArguments;
1112

@@ -38,7 +39,7 @@ public void transform(TypeTransformer transformer) {
3839
public static class CompleteAdvice {
3940
@Advice.OnMethodEnter(suppress = Throwable.class)
4041
public static Scope onEnter(@Advice.FieldValue("handler") Promise<?> promise) {
41-
return endQuerySpan(promise, null);
42+
return endQuerySpan(instrumenter(), promise, null);
4243
}
4344

4445
@Advice.OnMethodExit(onThrowable = Throwable.class, suppress = Throwable.class)
@@ -54,7 +55,7 @@ public static class FailAdvice {
5455
@Advice.OnMethodEnter(suppress = Throwable.class)
5556
public static Scope onEnter(
5657
@Advice.Argument(0) Throwable throwable, @Advice.FieldValue("handler") Promise<?> promise) {
57-
return endQuerySpan(promise, throwable);
58+
return endQuerySpan(instrumenter(), promise, throwable);
5859
}
5960

6061
@Advice.OnMethodExit(onThrowable = Throwable.class, suppress = Throwable.class)
Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,14 @@
55

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

8+
import static io.opentelemetry.javaagent.instrumentation.vertx.sql.VertxSqlClientUtil.getSqlConnectOptions;
9+
import static io.opentelemetry.javaagent.instrumentation.vertx.sql.VertxSqlClientUtil.setSqlConnectOptions;
10+
import static io.opentelemetry.javaagent.instrumentation.vertx.v4_0.sql.VertxSqlClientSingletons.attachConnectOptions;
811
import static io.opentelemetry.javaagent.instrumentation.vertx.v4_0.sql.VertxSqlClientSingletons.getSqlConnectOptions;
9-
import static io.opentelemetry.javaagent.instrumentation.vertx.v4_0.sql.VertxSqlClientSingletons.setSqlConnectOptions;
1012
import static net.bytebuddy.matcher.ElementMatchers.isConstructor;
1113
import static net.bytebuddy.matcher.ElementMatchers.named;
1214
import static net.bytebuddy.matcher.ElementMatchers.namedOneOf;
1315

14-
import io.opentelemetry.instrumentation.api.util.VirtualField;
1516
import io.opentelemetry.javaagent.bootstrap.CallDepth;
1617
import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation;
1718
import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer;
@@ -42,10 +43,7 @@ public static class ConstructorAdvice {
4243
@Advice.OnMethodExit(suppress = Throwable.class)
4344
public static void onExit(@Advice.This SqlClientBase<?> sqlClientBase) {
4445
// copy connection options from ThreadLocal to VirtualField
45-
// this virtual field is also set in VertxSqlClientSingletons.attachConnectOptions
46-
VirtualField<SqlClientBase<?>, SqlConnectOptions> virtualField =
47-
VirtualField.find(SqlClientBase.class, SqlConnectOptions.class);
48-
virtualField.set(sqlClientBase, getSqlConnectOptions());
46+
attachConnectOptions(sqlClientBase, getSqlConnectOptions());
4947
}
5048
}
5149

@@ -61,9 +59,7 @@ public static void onEnter(
6159
}
6260

6361
// set connection options to ThreadLocal, they will be read in QueryExecutor constructor
64-
VirtualField<SqlClientBase<?>, SqlConnectOptions> virtualField =
65-
VirtualField.find(SqlClientBase.class, SqlConnectOptions.class);
66-
SqlConnectOptions sqlConnectOptions = virtualField.get(sqlClientBase);
62+
SqlConnectOptions sqlConnectOptions = getSqlConnectOptions(sqlClientBase);
6763
setSqlConnectOptions(sqlConnectOptions);
6864
}
6965

0 commit comments

Comments
 (0)