Skip to content

Commit 36dd4c9

Browse files
Fixed client & server handler
1 parent 2e60be2 commit 36dd4c9

File tree

4 files changed

+21
-48
lines changed

4 files changed

+21
-48
lines changed

benchmarks/src/test/java/org/springframework/cloud/sleuth/benchmarks/jmh/TracerImplementation.java

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,6 @@
1616

1717
package org.springframework.cloud.sleuth.benchmarks.jmh;
1818

19-
import org.springframework.cloud.sleuth.autoconfig.brave.BraveAutoConfiguration;
20-
import org.springframework.cloud.sleuth.autoconfig.otel.OtelAutoConfiguration;
21-
2219
public enum TracerImplementation {
2320

2421
otel;

spring-cloud-sleuth-otel/src/main/java/org/springframework/cloud/sleuth/otel/bridge/OtelHttpClientHandler.java

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import java.net.URISyntaxException;
2121

2222
import io.opentelemetry.api.trace.Tracer;
23+
import io.opentelemetry.context.Context;
2324
import io.opentelemetry.context.Scope;
2425
import io.opentelemetry.context.propagation.TextMapPropagator;
2526
import io.opentelemetry.instrumentation.api.tracer.HttpClientTracer;
@@ -71,8 +72,8 @@ public Span handleSend(HttpClientRequest request) {
7172
}
7273
return OtelSpan.fromOtel(io.opentelemetry.api.trace.Span.getInvalid());
7374
}
74-
io.opentelemetry.api.trace.Span span = startSpan(request);
75-
return span(request, span);
75+
Context context = startSpan(Context.current(), request, request);
76+
return span(request, context);
7677
}
7778

7879
@Override
@@ -85,16 +86,17 @@ public Span handleSend(HttpClientRequest request, TraceContext parent) {
8586
}
8687
io.opentelemetry.api.trace.Span span = parent != null ? ((OtelTraceContext) parent).span() : null;
8788
if (span == null) {
88-
return span(request, startSpan(request));
89+
return span(request, startSpan(Context.current(), request, request));
8990
}
9091
try (Scope scope = span.makeCurrent()) {
91-
io.opentelemetry.api.trace.Span withParent = startSpan(request);
92+
Context withParent = startSpan(Context.current(), request, request);
9293
return span(request, withParent);
9394
}
9495
}
9596

96-
private Span span(HttpClientRequest request, io.opentelemetry.api.trace.Span span) {
97-
try (Scope scope = startScope(span, request)) {
97+
private Span span(HttpClientRequest request, Context context) {
98+
try (Scope scope = context.makeCurrent()) {
99+
io.opentelemetry.api.trace.Span span = io.opentelemetry.api.trace.Span.fromContext(context);
98100
if (span.isRecording()) {
99101
String remoteIp = request.remoteIp();
100102
if (StringUtils.hasText(remoteIp)) {
@@ -141,13 +143,13 @@ public void handleReceive(HttpClientResponse response, Span span) {
141143
if (log.isDebugEnabled()) {
142144
log.debug("There was an error, will finish span [" + otel + "] exceptionally");
143145
}
144-
endExceptionally(otel, response, response.error());
146+
endExceptionally(otel.storeInContext(Context.current()), response, response.error());
145147
}
146148
else {
147149
if (log.isDebugEnabled()) {
148150
log.debug("There was no error, will finish span [" + otel + "] in a standard way");
149151
}
150-
end(otel, response);
152+
end(otel.storeInContext(Context.current()), response);
151153
}
152154
}
153155

spring-cloud-sleuth-otel/src/main/java/org/springframework/cloud/sleuth/otel/bridge/OtelHttpServerHandler.java

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121

2222
import io.opentelemetry.api.trace.Tracer;
2323
import io.opentelemetry.context.Context;
24+
import io.opentelemetry.context.Scope;
2425
import io.opentelemetry.context.propagation.TextMapPropagator;
2526
import io.opentelemetry.instrumentation.api.tracer.HttpServerTracer;
2627

@@ -64,20 +65,22 @@ public Span handleReceive(HttpServerRequest request) {
6465
if (shouldSkip) {
6566
return OtelSpan.fromOtel(io.opentelemetry.api.trace.Span.getInvalid());
6667
}
67-
Context context = startSpan(request, request, request.method());
68+
Context context = startSpan(request, request, request, request.method());
6869
return OtelSpan.fromOtel(io.opentelemetry.api.trace.Span.fromContext(context), context);
6970
}
7071

7172
@Override
7273
public void handleSend(HttpServerResponse response, Span span) {
7374
Throwable throwable = response.error();
7475
io.opentelemetry.api.trace.Span otel = OtelSpan.toOtel(span);
75-
parseResponse(span, response);
76-
if (throwable == null) {
77-
end(otel, response);
78-
}
79-
else {
80-
endExceptionally(otel, throwable, response);
76+
try (Scope scope = otel.makeCurrent()) {
77+
parseResponse(span, response);
78+
if (throwable == null) {
79+
end(Context.current(), response);
80+
}
81+
else {
82+
endExceptionally(Context.current(), throwable, response);
83+
}
8184
}
8285
}
8386

tests/otel/spring-cloud-sleuth-instrumentation-messaging-tests/src/test/java/org/springframework/cloud/sleuth/otel/instrument/messaging/TracingChannelInterceptorTest.java

Lines changed: 1 addition & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -16,15 +16,7 @@
1616

1717
package org.springframework.cloud.sleuth.otel.instrument.messaging;
1818

19-
import java.util.ArrayList;
20-
import java.util.List;
21-
22-
import javax.annotation.Nullable;
23-
24-
import io.opentelemetry.context.Context;
2519
import io.opentelemetry.context.propagation.ContextPropagators;
26-
import io.opentelemetry.context.propagation.DefaultContextPropagators;
27-
import io.opentelemetry.context.propagation.TextMapPropagator;
2820
import io.opentelemetry.extension.trace.propagation.B3Propagator;
2921

3022
import org.springframework.cloud.sleuth.otel.OtelTestTracing;
@@ -41,28 +33,7 @@ public TestTracingAware tracerTest() {
4133
this.testTracing = new OtelTestTracing() {
4234
@Override
4335
protected ContextPropagators contextPropagators() {
44-
return DefaultContextPropagators.builder().addTextMapPropagator(b3()).build();
45-
}
46-
47-
TextMapPropagator b3() {
48-
return new TextMapPropagator() {
49-
@Override
50-
public List<String> fields() {
51-
List<String> fields = new ArrayList<>(B3Propagator.getInstance().fields());
52-
fields.add("b3");
53-
return fields;
54-
}
55-
56-
@Override
57-
public <C> void inject(Context context, @Nullable C c, Setter<C> setter) {
58-
B3Propagator.getInstance().inject(context, c, setter);
59-
}
60-
61-
@Override
62-
public <C> Context extract(Context context, @Nullable C c, Getter<C> getter) {
63-
return B3Propagator.getInstance().extract(context, c, getter);
64-
}
65-
};
36+
return ContextPropagators.create(B3Propagator.getInstance());
6637
}
6738
};
6839
}

0 commit comments

Comments
 (0)