Skip to content

Commit a26b04a

Browse files
committed
pulsar
1 parent 1f646e7 commit a26b04a

File tree

2 files changed

+34
-15
lines changed

2 files changed

+34
-15
lines changed

instrumentation/spring/spring-pulsar-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spring/pulsar/v1_0/DefaultPulsarMessageListenerContainerInstrumentation.java

Lines changed: 26 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation;
1616
import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer;
1717
import io.opentelemetry.javaagent.instrumentation.pulsar.v2_8.VirtualFieldStore;
18+
import javax.annotation.Nullable;
1819
import net.bytebuddy.asm.Advice;
1920
import net.bytebuddy.description.type.TypeDescription;
2021
import net.bytebuddy.matcher.ElementMatcher;
@@ -38,29 +39,40 @@ public void transform(TypeTransformer transformer) {
3839

3940
@SuppressWarnings("unused")
4041
public static class DispatchMessageToListenerAdvice {
42+
public static class AdviceScope {
43+
private final Context context;
44+
private final Scope scope;
45+
46+
public AdviceScope(Context context, Scope scope) {
47+
this.context = context;
48+
this.scope = scope;
49+
}
50+
51+
public void exit(@Nullable Throwable throwable, Message<?> message) {
52+
scope.close();
53+
instrumenter().end(context, message, null, throwable);
54+
}
55+
}
56+
57+
@Nullable
4158
@Advice.OnMethodEnter(suppress = Throwable.class)
42-
public static void onEnter(
43-
@Advice.Argument(0) Message<?> message,
44-
@Advice.Local("otelContext") Context context,
45-
@Advice.Local("otelScope") Scope scope) {
59+
public static AdviceScope onEnter(@Advice.Argument(0) Message<?> message) {
4660
Context parentContext = VirtualFieldStore.extract(message);
47-
if (instrumenter().shouldStart(parentContext, message)) {
48-
context = instrumenter().start(parentContext, message);
49-
scope = context.makeCurrent();
61+
if (!instrumenter().shouldStart(parentContext, message)) {
62+
return null;
5063
}
64+
Context context = instrumenter().start(parentContext, message);
65+
return new AdviceScope(context, context.makeCurrent());
5166
}
5267

5368
@Advice.OnMethodExit(suppress = Throwable.class, onThrowable = Throwable.class)
5469
public static void onExit(
5570
@Advice.Argument(0) Message<?> message,
56-
@Advice.Local("otelContext") Context context,
57-
@Advice.Local("otelScope") Scope scope,
58-
@Advice.Thrown Throwable throwable) {
59-
if (scope == null) {
60-
return;
71+
@Advice.Thrown @Nullable Throwable throwable,
72+
@Advice.Enter @Nullable AdviceScope adviceScope) {
73+
if (adviceScope != null) {
74+
adviceScope.exit(throwable, message);
6175
}
62-
scope.close();
63-
instrumenter().end(context, message, null, throwable);
6476
}
6577
}
6678
}

instrumentation/spring/spring-pulsar-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spring/pulsar/v1_0/SpringPulsarInstrumentationModule.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 SpringPulsarInstrumentationModule extends InstrumentationModule {
19+
public class SpringPulsarInstrumentationModule extends InstrumentationModule
20+
implements ExperimentalInstrumentationModule {
1921
public SpringPulsarInstrumentationModule() {
2022
super("spring-pulsar", "spring-pulsar-1.0");
2123
}
@@ -31,4 +33,9 @@ public ElementMatcher.Junction<ClassLoader> classLoaderMatcher() {
3133
public List<TypeInstrumentation> typeInstrumentations() {
3234
return singletonList(new DefaultPulsarMessageListenerContainerInstrumentation());
3335
}
36+
37+
@Override
38+
public boolean isIndyReady() {
39+
return true;
40+
}
3441
}

0 commit comments

Comments
 (0)