Skip to content

Commit 4f48138

Browse files
committed
Merge branch 'kafka-connect-metadata' of github.com:jaydeluca/opentelemetry-java-instrumentation into kafka-connect-metadata
2 parents a448101 + 0a0d7c8 commit 4f48138

File tree

22 files changed

+141
-83
lines changed

22 files changed

+141
-83
lines changed

.github/labeler.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ test native:
22
- all:
33
- changed-files:
44
- any-glob-to-any-file:
5-
- instrumentation/logback/logback-appender-10/library/**
5+
- instrumentation/logback/logback-appender-1.0/library/**
66
- instrumentation/jdbc/library/**
77
- instrumentation/spring/**
88
- smoke-tests-otel-starter/**

benchmark-overhead/build.gradle.kts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,8 @@ repositories {
1818
dependencies {
1919
implementation(enforcedPlatform("org.junit:junit-bom:5.14.0"))
2020

21-
testImplementation(platform("org.testcontainers:testcontainers-bom:2.0.0"))
22-
testImplementation("org.testcontainers:testcontainers:2.0.0")
21+
testImplementation(platform("org.testcontainers:testcontainers-bom:2.0.1"))
22+
testImplementation("org.testcontainers:testcontainers:2.0.1")
2323
testImplementation("org.testcontainers:testcontainers-postgresql")
2424
testImplementation("org.junit.jupiter:junit-jupiter-api")
2525
testImplementation("org.junit.jupiter:junit-jupiter-params")

dependencyManagement/build.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ val DEPENDENCY_BOMS = listOf(
3232
"org.apache.groovy:groovy-bom:${groovyVersion}",
3333
"io.opentelemetry:opentelemetry-bom:${otelSdkVersion}",
3434
"io.opentelemetry:opentelemetry-bom-alpha:${otelSdkAlphaVersion}",
35-
"org.testcontainers:testcontainers-bom:2.0.0"
35+
"org.testcontainers:testcontainers-bom:2.0.1"
3636
)
3737

3838
val autoServiceVersion = "1.1.1"

examples/distro/smoke-tests/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ plugins {
33
}
44

55
dependencies {
6-
testImplementation("org.testcontainers:testcontainers:2.0.0")
6+
testImplementation("org.testcontainers:testcontainers:2.0.1")
77
testImplementation("com.fasterxml.jackson.core:jackson-databind:2.20.0")
88
testImplementation("com.google.protobuf:protobuf-java-util:4.33.0")
99
testImplementation("com.squareup.okhttp3:okhttp:5.2.1")

examples/extension/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ dependencies {
9898
implementation 'org.apache.commons:commons-lang3:3.19.0'
9999

100100
//All dependencies below are only for tests
101-
testImplementation("org.testcontainers:testcontainers:2.0.0")
101+
testImplementation("org.testcontainers:testcontainers:2.0.1")
102102
testImplementation("com.fasterxml.jackson.core:jackson-databind:2.20.0")
103103
testImplementation("com.google.protobuf:protobuf-java-util:4.33.0")
104104
testImplementation("com.squareup.okhttp3:okhttp:5.2.1")

instrumentation/armeria/armeria-1.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/armeria/v1_3/AbstractStreamMessageSubscriptionInstrumentation.java

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@
1414
import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer;
1515
import java.util.concurrent.CompletableFuture;
1616
import net.bytebuddy.asm.Advice;
17+
import net.bytebuddy.asm.Advice.AssignReturned;
18+
import net.bytebuddy.asm.Advice.AssignReturned.ToArguments.ToArgument;
1719
import net.bytebuddy.description.type.TypeDescription;
1820
import net.bytebuddy.matcher.ElementMatcher;
1921
import org.reactivestreams.Subscriber;
@@ -52,20 +54,21 @@ public void transform(TypeTransformer transformer) {
5254
@SuppressWarnings("unused")
5355
public static class WrapSubscriberAdvice {
5456

57+
@AssignReturned.ToArguments(@ToArgument(1))
5558
@Advice.OnMethodEnter(suppress = Throwable.class)
56-
public static void wrapSubscriber(
57-
@Advice.Argument(value = 1, readOnly = false) Subscriber<?> subscriber) {
58-
subscriber = SubscriberWrapper.wrap(subscriber);
59+
public static Subscriber<?> wrapSubscriber(@Advice.Argument(1) Subscriber<?> subscriber) {
60+
return SubscriberWrapper.wrap(subscriber);
5961
}
6062
}
6163

6264
@SuppressWarnings("unused")
6365
public static class WrapCompletableFutureAdvice {
6466

67+
@AssignReturned.ToArguments(@ToArgument(4))
6568
@Advice.OnMethodEnter(suppress = Throwable.class)
66-
public static void wrapCompletableFuture(
67-
@Advice.Argument(value = 4, readOnly = false) CompletableFuture<?> future) {
68-
future = CompletableFutureWrapper.wrap(future);
69+
public static CompletableFuture<?> wrapCompletableFuture(
70+
@Advice.Argument(4) CompletableFuture<?> future) {
71+
return CompletableFutureWrapper.wrap(future);
6972
}
7073
}
7174
}

instrumentation/armeria/armeria-1.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/armeria/v1_3/ArmeriaInstrumentationModule.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 ArmeriaInstrumentationModule extends InstrumentationModule {
19+
public class ArmeriaInstrumentationModule extends InstrumentationModule
20+
implements ExperimentalInstrumentationModule {
1921
public ArmeriaInstrumentationModule() {
2022
super("armeria", "armeria-1.3");
2123
}
@@ -33,4 +35,9 @@ public List<TypeInstrumentation> typeInstrumentations() {
3335
new ArmeriaServerBuilderInstrumentation(),
3436
new AbstractStreamMessageSubscriptionInstrumentation());
3537
}
38+
39+
@Override
40+
public boolean isIndyReady() {
41+
return true;
42+
}
3643
}

instrumentation/dropwizard/dropwizard-metrics-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/dropwizardmetrics/DropwizardMetricsInstrumentationModule.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,14 @@
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 io.opentelemetry.sdk.autoconfigure.spi.ConfigProperties;
1617
import java.util.List;
1718
import net.bytebuddy.matcher.ElementMatcher;
1819

1920
@AutoService(InstrumentationModule.class)
20-
public class DropwizardMetricsInstrumentationModule extends InstrumentationModule {
21+
public class DropwizardMetricsInstrumentationModule extends InstrumentationModule
22+
implements ExperimentalInstrumentationModule {
2123

2224
public DropwizardMetricsInstrumentationModule() {
2325
super("dropwizard-metrics", "dropwizard-metrics-4.0");
@@ -46,4 +48,9 @@ public List<TypeInstrumentation> typeInstrumentations() {
4648
new MeterInstrumentation(),
4749
new TimerInstrumentation());
4850
}
51+
52+
@Override
53+
public boolean isIndyReady() {
54+
return true;
55+
}
4956
}

instrumentation/dropwizard/dropwizard-views-0.7/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/dropwizardviews/DropwizardInstrumentationModule.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 DropwizardInstrumentationModule extends InstrumentationModule {
17+
public class DropwizardInstrumentationModule extends InstrumentationModule
18+
implements ExperimentalInstrumentationModule {
1719
public DropwizardInstrumentationModule() {
1820
super("dropwizard-views", "dropwizard-views-0.7");
1921
}
@@ -22,4 +24,9 @@ public DropwizardInstrumentationModule() {
2224
public List<TypeInstrumentation> typeInstrumentations() {
2325
return singletonList(new DropwizardRendererInstrumentation());
2426
}
27+
28+
@Override
29+
public boolean isIndyReady() {
30+
return true;
31+
}
2532
}

instrumentation/dropwizard/dropwizard-views-0.7/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/dropwizardviews/DropwizardRendererInstrumentation.java

Lines changed: 35 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,12 @@
1414
import static net.bytebuddy.matcher.ElementMatchers.takesArgument;
1515

1616
import io.dropwizard.views.View;
17+
import io.opentelemetry.api.trace.Span;
1718
import io.opentelemetry.context.Context;
1819
import io.opentelemetry.context.Scope;
19-
import io.opentelemetry.javaagent.bootstrap.Java8BytecodeBridge;
2020
import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation;
2121
import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer;
22+
import javax.annotation.Nullable;
2223
import net.bytebuddy.asm.Advice;
2324
import net.bytebuddy.description.type.TypeDescription;
2425
import net.bytebuddy.matcher.ElementMatcher;
@@ -47,37 +48,50 @@ public void transform(TypeTransformer transformer) {
4748
@SuppressWarnings("unused")
4849
public static class RenderAdvice {
4950

50-
@Advice.OnMethodEnter(suppress = Throwable.class)
51-
public static void onEnter(
52-
@Advice.Argument(0) View view,
53-
@Advice.Local("otelContext") Context context,
54-
@Advice.Local("otelScope") Scope scope) {
51+
public static class AdviceScope {
52+
private final Context context;
53+
private final Scope scope;
54+
55+
private AdviceScope(Context context, Scope scope) {
56+
this.context = context;
57+
this.scope = scope;
58+
}
5559

56-
Context parentContext = Java8BytecodeBridge.currentContext();
60+
@Nullable
61+
public static AdviceScope start(View view) {
62+
Context parentContext = Context.current();
5763

58-
// don't start a new top-level span
59-
if (!Java8BytecodeBridge.spanFromContext(parentContext).getSpanContext().isValid()) {
60-
return;
64+
// don't start a new top-level span
65+
if (!Span.fromContext(parentContext).getSpanContext().isValid()) {
66+
return null;
67+
}
68+
if (!instrumenter().shouldStart(parentContext, view)) {
69+
return null;
70+
}
71+
72+
Context context = instrumenter().start(parentContext, view);
73+
return new AdviceScope(context, context.makeCurrent());
6174
}
62-
if (!instrumenter().shouldStart(parentContext, view)) {
63-
return;
75+
76+
public void end(View view, @Nullable Throwable throwable) {
77+
scope.close();
78+
instrumenter().end(context, view, null, throwable);
6479
}
80+
}
6581

66-
context = instrumenter().start(parentContext, view);
67-
scope = context.makeCurrent();
82+
@Advice.OnMethodEnter(suppress = Throwable.class)
83+
public static AdviceScope onEnter(@Advice.Argument(0) View view) {
84+
return AdviceScope.start(view);
6885
}
6986

7087
@Advice.OnMethodExit(onThrowable = Throwable.class, suppress = Throwable.class)
7188
public static void stopSpan(
7289
@Advice.Argument(0) View view,
73-
@Advice.Thrown Throwable throwable,
74-
@Advice.Local("otelContext") Context context,
75-
@Advice.Local("otelScope") Scope scope) {
76-
if (scope == null) {
77-
return;
90+
@Advice.Thrown @Nullable Throwable throwable,
91+
@Advice.Enter @Nullable AdviceScope adviceScope) {
92+
if (adviceScope != null) {
93+
adviceScope.end(view, throwable);
7894
}
79-
scope.close();
80-
instrumenter().end(context, view, null, throwable);
8195
}
8296
}
8397
}

0 commit comments

Comments
 (0)