Skip to content

Commit 7781c8c

Browse files
committed
inject trace data to headers
1 parent 0190c13 commit 7781c8c

File tree

5 files changed

+31
-5
lines changed

5 files changed

+31
-5
lines changed

instrumentation/jsonrpc4j-1.6/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jsonrpc4j/v1_6/JsonRpcClientBuilderInstrumentation.java

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package io.opentelemetry.javaagent.instrumentation.jsonrpc4j.v1_6;
22

3-
import static io.opentelemetry.javaagent.bootstrap.Java8BytecodeBridge.currentContext;
43
import static io.opentelemetry.javaagent.extension.matcher.AgentElementMatchers.hasClassesNamed;
54
import static io.opentelemetry.javaagent.extension.matcher.AgentElementMatchers.implementsInterface;
65
import static net.bytebuddy.matcher.ElementMatchers.isMethod;
@@ -11,13 +10,15 @@
1110

1211
import io.opentelemetry.context.Context;
1312
import io.opentelemetry.context.Scope;
13+
import io.opentelemetry.instrumentation.jsonrpc4j.v1_6.HeadersSetter;
1414
import io.opentelemetry.instrumentation.jsonrpc4j.v1_6.SimpleJsonRpcRequest;
1515
import io.opentelemetry.instrumentation.jsonrpc4j.v1_6.SimpleJsonRpcResponse;
1616
import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation;
1717
import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer;
1818
import net.bytebuddy.asm.Advice;
1919
import net.bytebuddy.description.type.TypeDescription;
2020
import net.bytebuddy.matcher.ElementMatcher;
21+
import java.util.Map;
2122

2223
public class JsonRpcClientBuilderInstrumentation implements TypeInstrumentation {
2324

@@ -53,9 +54,10 @@ public static class InvokeAdvice {
5354
public static void onEnter(
5455
@Advice.Argument(0) String methodName,
5556
@Advice.Argument(1) Object argument,
57+
@Advice.Argument(3) Map<String, String> extraHeaders,
5658
@Advice.Local("otelContext") Context context,
5759
@Advice.Local("otelScope") Scope scope) {
58-
Context parentContext = currentContext();
60+
Context parentContext = Context.current();
5961
SimpleJsonRpcRequest request = new SimpleJsonRpcRequest(
6062
methodName,
6163
argument
@@ -65,13 +67,16 @@ public static void onEnter(
6567
}
6668

6769
context = JsonRpcSingletons.CLIENT_INSTRUMENTER.start(parentContext, request);
70+
JsonRpcSingletons.PROPAGATORS.getTextMapPropagator().inject(context, extraHeaders, HeadersSetter.INSTANCE);
71+
6872
scope = context.makeCurrent();
6973
}
7074

7175
@Advice.OnMethodExit(onThrowable = Throwable.class, suppress = Throwable.class)
7276
public static void onExit(
7377
@Advice.Argument(0) String methodName,
7478
@Advice.Argument(1) Object argument,
79+
@Advice.Argument(3) Map<String, String> extraHeaders,
7580
@Advice.Return Object result,
7681
@Advice.Thrown Throwable throwable,
7782
@Advice.Local("otelContext") Context context,
@@ -82,6 +87,7 @@ public static void onExit(
8287

8388
scope.close();
8489
JsonRpcSingletons.CLIENT_INSTRUMENTER.end(context, new SimpleJsonRpcRequest(methodName, argument), new SimpleJsonRpcResponse(result), throwable);
90+
System.out.println(extraHeaders);
8591
}
8692
}
8793
}

instrumentation/jsonrpc4j-1.6/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jsonrpc4j/v1_6/JsonRpcSingletons.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import com.googlecode.jsonrpc4j.InvocationListener;
44
import io.opentelemetry.api.GlobalOpenTelemetry;
5+
import io.opentelemetry.context.propagation.ContextPropagators;
56
import io.opentelemetry.instrumentation.api.instrumenter.Instrumenter;
67
import io.opentelemetry.instrumentation.jsonrpc4j.v1_6.JsonRpcTelemetry;
78
import io.opentelemetry.instrumentation.jsonrpc4j.v1_6.SimpleJsonRpcRequest;
@@ -14,6 +15,7 @@ public final class JsonRpcSingletons {
1415

1516
public static final Instrumenter<SimpleJsonRpcRequest, SimpleJsonRpcResponse> CLIENT_INSTRUMENTER;
1617

18+
public static final ContextPropagators PROPAGATORS;
1719

1820
static {
1921
JsonRpcTelemetry telemetry =
@@ -22,6 +24,7 @@ public final class JsonRpcSingletons {
2224

2325
SERVER_INVOCATION_LISTENER = telemetry.newServerInvocationListener();
2426
CLIENT_INSTRUMENTER = telemetry.getClientInstrumenter();
27+
PROPAGATORS = telemetry.getPropagators();
2528
}
2629

2730

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
package io.opentelemetry.instrumentation.jsonrpc4j.v1_6;
2+
3+
import io.opentelemetry.context.propagation.TextMapSetter;
4+
import java.util.Map;
5+
6+
public enum HeadersSetter implements TextMapSetter<Map<String, String>> {
7+
INSTANCE;
8+
9+
@Override
10+
public void set(Map<String, String> carrier, String key, String value) {
11+
assert carrier != null;
12+
carrier.put(key, value);
13+
}
14+
}

instrumentation/jsonrpc4j-1.6/library/src/main/java/io/opentelemetry/instrumentation/jsonrpc4j/v1_6/JsonRpcTelemetry.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,13 +17,15 @@ public static JsonRpcTelemetryBuilder builder(OpenTelemetry openTelemetry) {
1717

1818
private final Instrumenter<JsonRpcRequest, JsonRpcResponse> serverInstrumenter;
1919
private final Instrumenter<SimpleJsonRpcRequest, SimpleJsonRpcResponse> clientInstrumenter;
20+
private final ContextPropagators propagators;
2021

2122
JsonRpcTelemetry(
2223
Instrumenter<JsonRpcRequest, JsonRpcResponse> serverInstrumenter,
2324
Instrumenter<SimpleJsonRpcRequest, SimpleJsonRpcResponse> clientInstrumenter,
2425
ContextPropagators propagators) {
2526
this.serverInstrumenter = serverInstrumenter;
2627
this.clientInstrumenter = clientInstrumenter;
28+
this.propagators = propagators;
2729
}
2830

2931

@@ -34,4 +36,8 @@ public InvocationListener newServerInvocationListener() {
3436
public Instrumenter<SimpleJsonRpcRequest, SimpleJsonRpcResponse> getClientInstrumenter() {
3537
return clientInstrumenter;
3638
}
39+
40+
public ContextPropagators getPropagators() {
41+
return propagators;
42+
}
3743
}

instrumentation/jsonrpc4j-1.6/library/src/main/java/io/opentelemetry/instrumentation/jsonrpc4j/v1_6/JsonRpcTelemetryBuilder.java

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -54,9 +54,6 @@ public JsonRpcTelemetryBuilder addServerAttributeExtractor(
5454
return this;
5555
}
5656

57-
58-
59-
6057
public JsonRpcTelemetry build() {
6158
SpanNameExtractor<SimpleJsonRpcRequest> clientSpanNameExtractor = new JsonRpcClientSpanNameExtractor();
6259
SpanNameExtractor<JsonRpcRequest> serverSpanNameExtractor = new JsonRpcServerSpanNameExtractor();

0 commit comments

Comments
 (0)