Skip to content

Commit 0a9ff3f

Browse files
authored
Indy-migration - powerjob (#15126)
1 parent 331fdca commit 0a9ff3f

File tree

2 files changed

+52
-30
lines changed

2 files changed

+52
-30
lines changed

instrumentation/powerjob-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/powerjob/v4_0/BasicProcessorInstrumentation.java

Lines changed: 44 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55

66
package io.opentelemetry.javaagent.instrumentation.powerjob.v4_0;
77

8-
import static io.opentelemetry.javaagent.bootstrap.Java8BytecodeBridge.currentContext;
98
import static io.opentelemetry.javaagent.extension.matcher.AgentElementMatchers.implementsInterface;
109
import static io.opentelemetry.javaagent.instrumentation.powerjob.v4_0.PowerJobSingletons.instrumenter;
1110
import static net.bytebuddy.matcher.ElementMatchers.isPublic;
@@ -17,6 +16,7 @@
1716
import io.opentelemetry.context.Scope;
1817
import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation;
1918
import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer;
19+
import javax.annotation.Nullable;
2020
import net.bytebuddy.asm.Advice;
2121
import net.bytebuddy.description.type.TypeDescription;
2222
import net.bytebuddy.matcher.ElementMatcher;
@@ -45,43 +45,58 @@ public void transform(TypeTransformer transformer) {
4545

4646
public static class ProcessAdvice {
4747

48-
@SuppressWarnings("unused")
49-
@Advice.OnMethodEnter(suppress = Throwable.class)
50-
public static void onSchedule(
51-
@Advice.This BasicProcessor handler,
52-
@Advice.Argument(0) TaskContext taskContext,
53-
@Advice.Local("otelRequest") PowerJobProcessRequest request,
54-
@Advice.Local("otelContext") Context context,
55-
@Advice.Local("otelScope") Scope scope) {
56-
Context parentContext = currentContext();
57-
request =
58-
PowerJobProcessRequest.createRequest(
59-
taskContext.getJobId(),
60-
handler,
61-
"process",
62-
taskContext.getJobParams(),
63-
taskContext.getInstanceParams());
48+
public static class AdviceScope {
49+
private final PowerJobProcessRequest request;
50+
private final Context context;
51+
private final Scope scope;
52+
53+
private AdviceScope(PowerJobProcessRequest request, Context context, Scope scope) {
54+
this.request = request;
55+
this.context = context;
56+
this.scope = scope;
57+
}
58+
59+
@Nullable
60+
public static AdviceScope start(BasicProcessor handler, TaskContext taskContext) {
61+
Context parentContext = Context.current();
62+
PowerJobProcessRequest request =
63+
PowerJobProcessRequest.createRequest(
64+
taskContext.getJobId(),
65+
handler,
66+
"process",
67+
taskContext.getJobParams(),
68+
taskContext.getInstanceParams());
69+
70+
if (!instrumenter().shouldStart(parentContext, request)) {
71+
return null;
72+
}
6473

65-
if (!instrumenter().shouldStart(parentContext, request)) {
66-
return;
74+
Context context = instrumenter().start(parentContext, request);
75+
return new AdviceScope(request, context, context.makeCurrent());
6776
}
68-
context = instrumenter().start(parentContext, request);
69-
scope = context.makeCurrent();
77+
78+
public void end(ProcessResult result, Throwable throwable) {
79+
scope.close();
80+
instrumenter().end(context, request, result, throwable);
81+
}
82+
}
83+
84+
@SuppressWarnings("unused")
85+
@Advice.OnMethodEnter(suppress = Throwable.class)
86+
public static AdviceScope onSchedule(
87+
@Advice.This BasicProcessor handler, @Advice.Argument(0) TaskContext taskContext) {
88+
return AdviceScope.start(handler, taskContext);
7089
}
7190

7291
@SuppressWarnings("unused")
7392
@Advice.OnMethodExit(onThrowable = Throwable.class, suppress = Throwable.class)
7493
public static void stopSpan(
7594
@Advice.Return ProcessResult result,
76-
@Advice.Thrown Throwable throwable,
77-
@Advice.Local("otelRequest") PowerJobProcessRequest request,
78-
@Advice.Local("otelContext") Context context,
79-
@Advice.Local("otelScope") Scope scope) {
80-
if (scope == null) {
81-
return;
95+
@Advice.Thrown @Nullable Throwable throwable,
96+
@Advice.Enter @Nullable AdviceScope adviceScope) {
97+
if (adviceScope != null) {
98+
adviceScope.end(result, throwable);
8299
}
83-
scope.close();
84-
instrumenter().end(context, request, result, throwable);
85100
}
86101
}
87102
}

instrumentation/powerjob-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/powerjob/v4_0/PowerJobInstrumentationModule.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,13 @@
88
import com.google.auto.service.AutoService;
99
import io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule;
1010
import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation;
11+
import io.opentelemetry.javaagent.extension.instrumentation.internal.ExperimentalInstrumentationModule;
1112
import java.util.Collections;
1213
import java.util.List;
1314

1415
@AutoService(InstrumentationModule.class)
15-
public class PowerJobInstrumentationModule extends InstrumentationModule {
16+
public class PowerJobInstrumentationModule extends InstrumentationModule
17+
implements ExperimentalInstrumentationModule {
1618
public PowerJobInstrumentationModule() {
1719
super("powerjob", "powerjob-4.0");
1820
}
@@ -21,4 +23,9 @@ public PowerJobInstrumentationModule() {
2123
public List<TypeInstrumentation> typeInstrumentations() {
2224
return Collections.singletonList(new BasicProcessorInstrumentation());
2325
}
26+
27+
@Override
28+
public boolean isIndyReady() {
29+
return true;
30+
}
2431
}

0 commit comments

Comments
 (0)