Skip to content

Commit 7b00732

Browse files
authored
make cassandra indy-ready (#14682)
1 parent 41ec004 commit 7b00732

File tree

6 files changed

+37
-12
lines changed

6 files changed

+37
-12
lines changed

instrumentation/cassandra/cassandra-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/cassandra/v3_0/CassandraInstrumentationModule.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,12 @@
1010
import com.google.auto.service.AutoService;
1111
import io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule;
1212
import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation;
13+
import io.opentelemetry.javaagent.extension.instrumentation.internal.ExperimentalInstrumentationModule;
1314
import java.util.List;
1415

1516
@AutoService(InstrumentationModule.class)
16-
public class CassandraInstrumentationModule extends InstrumentationModule {
17+
public class CassandraInstrumentationModule extends InstrumentationModule
18+
implements ExperimentalInstrumentationModule {
1719
public CassandraInstrumentationModule() {
1820
super("cassandra", "cassandra-3.0");
1921
}
@@ -22,4 +24,9 @@ public CassandraInstrumentationModule() {
2224
public List<TypeInstrumentation> typeInstrumentations() {
2325
return singletonList(new CassandraManagerInstrumentation());
2426
}
27+
28+
@Override
29+
public boolean isIndyReady() {
30+
return true;
31+
}
2532
}

instrumentation/cassandra/cassandra-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/cassandra/v3_0/CassandraManagerInstrumentation.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation;
1515
import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer;
1616
import net.bytebuddy.asm.Advice;
17+
import net.bytebuddy.asm.Advice.AssignReturned;
1718
import net.bytebuddy.description.type.TypeDescription;
1819
import net.bytebuddy.matcher.ElementMatcher;
1920

@@ -42,13 +43,14 @@ public static class NewSessionAdvice {
4243
*
4344
* @param session The fresh session to patch. This session is replaced with new session
4445
*/
46+
@AssignReturned.ToReturned
4547
@Advice.OnMethodExit(suppress = Throwable.class)
46-
public static void injectTracingSession(@Advice.Return(readOnly = false) Session session) {
48+
public static Session injectTracingSession(@Advice.Return Session session) {
4749
// This should cover ours and OT's TracingSession
4850
if (session.getClass().getName().endsWith("cassandra.TracingSession")) {
49-
return;
51+
return session;
5052
}
51-
session = new TracingSession(session);
53+
return new TracingSession(session);
5254
}
5355
}
5456
}

instrumentation/cassandra/cassandra-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/cassandra/v4_0/CassandraClientInstrumentationModule.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,13 @@
1212
import com.google.auto.service.AutoService;
1313
import io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule;
1414
import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation;
15+
import io.opentelemetry.javaagent.extension.instrumentation.internal.ExperimentalInstrumentationModule;
1516
import java.util.List;
1617
import net.bytebuddy.matcher.ElementMatcher;
1718

1819
@AutoService(InstrumentationModule.class)
19-
public class CassandraClientInstrumentationModule extends InstrumentationModule {
20+
public class CassandraClientInstrumentationModule extends InstrumentationModule
21+
implements ExperimentalInstrumentationModule {
2022

2123
public CassandraClientInstrumentationModule() {
2224
super("cassandra", "cassandra-4.0");
@@ -32,4 +34,9 @@ public ElementMatcher.Junction<ClassLoader> classLoaderMatcher() {
3234
// new public interface introduced in version 4.4
3335
return not(hasClassesNamed("com.datastax.dse.driver.api.core.cql.reactive.ReactiveSession"));
3436
}
37+
38+
@Override
39+
public boolean isIndyReady() {
40+
return true;
41+
}
3542
}

instrumentation/cassandra/cassandra-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/cassandra/v4_0/SessionBuilderInstrumentation.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer;
1515
import java.util.concurrent.CompletionStage;
1616
import net.bytebuddy.asm.Advice;
17+
import net.bytebuddy.asm.Advice.AssignReturned;
1718
import net.bytebuddy.description.type.TypeDescription;
1819
import net.bytebuddy.matcher.ElementMatcher;
1920

@@ -44,10 +45,10 @@ public static class BuildAdvice {
4445
* @param stage The fresh CompletionStage to patch. This stage produces session which is
4546
* replaced with new session
4647
*/
48+
@AssignReturned.ToReturned
4749
@Advice.OnMethodExit(suppress = Throwable.class)
48-
public static void injectTracingSession(
49-
@Advice.Return(readOnly = false) CompletionStage<?> stage) {
50-
stage = stage.thenApply(new CompletionStageFunction());
50+
public static CompletionStage<?> injectTracingSession(@Advice.Return CompletionStage<?> stage) {
51+
return stage.thenApply(new CompletionStageFunction());
5152
}
5253
}
5354
}

instrumentation/cassandra/cassandra-4.4/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/cassandra/v4_4/CassandraClientInstrumentationModule.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,13 @@
1111
import com.google.auto.service.AutoService;
1212
import io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule;
1313
import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation;
14+
import io.opentelemetry.javaagent.extension.instrumentation.internal.ExperimentalInstrumentationModule;
1415
import java.util.List;
1516
import net.bytebuddy.matcher.ElementMatcher;
1617

1718
@AutoService(InstrumentationModule.class)
18-
public class CassandraClientInstrumentationModule extends InstrumentationModule {
19+
public class CassandraClientInstrumentationModule extends InstrumentationModule
20+
implements ExperimentalInstrumentationModule {
1921

2022
public CassandraClientInstrumentationModule() {
2123
super("cassandra", "cassandra-4.4");
@@ -31,4 +33,9 @@ public ElementMatcher.Junction<ClassLoader> classLoaderMatcher() {
3133
// new public interface introduced in version 4.4
3234
return hasClassesNamed("com.datastax.dse.driver.api.core.cql.reactive.ReactiveSession");
3335
}
36+
37+
@Override
38+
public boolean isIndyReady() {
39+
return true;
40+
}
3441
}

instrumentation/cassandra/cassandra-4.4/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/cassandra/v4_4/SessionBuilderInstrumentation.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer;
1515
import java.util.concurrent.CompletionStage;
1616
import net.bytebuddy.asm.Advice;
17+
import net.bytebuddy.asm.Advice.AssignReturned;
1718
import net.bytebuddy.description.type.TypeDescription;
1819
import net.bytebuddy.matcher.ElementMatcher;
1920

@@ -44,10 +45,10 @@ public static class BuildAdvice {
4445
* @param stage The fresh CompletionStage to patch. This stage produces session which is
4546
* replaced with new session
4647
*/
48+
@AssignReturned.ToReturned
4749
@Advice.OnMethodExit(suppress = Throwable.class)
48-
public static void injectTracingSession(
49-
@Advice.Return(readOnly = false) CompletionStage<?> stage) {
50-
stage = stage.thenApply(new CompletionStageFunction());
50+
public static CompletionStage<?> injectTracingSession(@Advice.Return CompletionStage<?> stage) {
51+
return stage.thenApply(new CompletionStageFunction());
5152
}
5253
}
5354
}

0 commit comments

Comments
 (0)