Skip to content

Commit dbe78f8

Browse files
committed
Run each client request under Context.root() to isolate threads
1 parent b355146 commit dbe78f8

3 files changed

Lines changed: 48 additions & 30 deletions

File tree

instrumentation/vertx/vertx-rx-java-3.5/javaagent/src/version35Test/java/io/opentelemetry/javaagent/instrumentation/vertx/rx/v3_5/server/VertxReactivePropagationTest.java

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@
4343
import io.opentelemetry.api.trace.Span;
4444
import io.opentelemetry.api.trace.SpanKind;
4545
import io.opentelemetry.context.Context;
46+
import io.opentelemetry.context.Scope;
4647
import io.opentelemetry.context.propagation.TextMapPropagator;
4748
import io.opentelemetry.context.propagation.TextMapSetter;
4849
import io.opentelemetry.instrumentation.test.utils.PortUtils;
@@ -175,16 +176,21 @@ void highConcurrency() throws Exception {
175176
Thread.currentThread().interrupt();
176177
throw new AssertionError(e);
177178
}
178-
testing.runWithSpan(
179-
"client " + index,
180-
() -> {
181-
HttpRequestBuilder builder =
182-
HttpRequest.builder()
183-
.get(baseUrl + "?" + TEST_REQUEST_ID_PARAMETER + "=" + index);
184-
Span.current().setAttribute(TEST_REQUEST_ID_ATTRIBUTE, index);
185-
propagator.inject(Context.current(), builder, setter);
186-
client.execute(builder.build()).aggregate().join();
187-
});
179+
// run under Context.root() so each client request starts a fresh trace,
180+
// regardless of any thread-local context leftover from a previous task on
181+
// the same pool worker
182+
try (Scope ignored = Context.root().makeCurrent()) {
183+
testing.runWithSpan(
184+
"client " + index,
185+
() -> {
186+
HttpRequestBuilder builder =
187+
HttpRequest.builder()
188+
.get(baseUrl + "?" + TEST_REQUEST_ID_PARAMETER + "=" + index);
189+
Span.current().setAttribute(TEST_REQUEST_ID_ATTRIBUTE, index);
190+
propagator.inject(Context.current(), builder, setter);
191+
client.execute(builder.build()).aggregate().join();
192+
});
193+
}
188194
}));
189195
}
190196

instrumentation/vertx/vertx-rx-java-3.5/javaagent/src/version41Test/java/io/opentelemetry/javaagent/instrumentation/vertx/rx/v3_5/server/VertxReactivePropagationTest.java

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@
4343
import io.opentelemetry.api.trace.Span;
4444
import io.opentelemetry.api.trace.SpanKind;
4545
import io.opentelemetry.context.Context;
46+
import io.opentelemetry.context.Scope;
4647
import io.opentelemetry.context.propagation.TextMapPropagator;
4748
import io.opentelemetry.context.propagation.TextMapSetter;
4849
import io.opentelemetry.instrumentation.test.utils.PortUtils;
@@ -175,16 +176,21 @@ void highConcurrency() throws Exception {
175176
Thread.currentThread().interrupt();
176177
throw new AssertionError(e);
177178
}
178-
testing.runWithSpan(
179-
"client " + index,
180-
() -> {
181-
HttpRequestBuilder builder =
182-
HttpRequest.builder()
183-
.get(baseUrl + "?" + TEST_REQUEST_ID_PARAMETER + "=" + index);
184-
Span.current().setAttribute(TEST_REQUEST_ID_ATTRIBUTE, index);
185-
propagator.inject(Context.current(), builder, setter);
186-
client.execute(builder.build()).aggregate().join();
187-
});
179+
// run under Context.root() so each client request starts a fresh trace,
180+
// regardless of any thread-local context leftover from a previous task on
181+
// the same pool worker
182+
try (Scope ignored = Context.root().makeCurrent()) {
183+
testing.runWithSpan(
184+
"client " + index,
185+
() -> {
186+
HttpRequestBuilder builder =
187+
HttpRequest.builder()
188+
.get(baseUrl + "?" + TEST_REQUEST_ID_PARAMETER + "=" + index);
189+
Span.current().setAttribute(TEST_REQUEST_ID_ATTRIBUTE, index);
190+
propagator.inject(Context.current(), builder, setter);
191+
client.execute(builder.build()).aggregate().join();
192+
});
193+
}
188194
}));
189195
}
190196

instrumentation/vertx/vertx-rx-java-3.5/javaagent/src/version5Test/java/io/opentelemetry/javaagent/instrumentation/vertx/rx/v3_5/server/VertxReactivePropagationTest.java

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@
4343
import io.opentelemetry.api.trace.Span;
4444
import io.opentelemetry.api.trace.SpanKind;
4545
import io.opentelemetry.context.Context;
46+
import io.opentelemetry.context.Scope;
4647
import io.opentelemetry.context.propagation.TextMapPropagator;
4748
import io.opentelemetry.context.propagation.TextMapSetter;
4849
import io.opentelemetry.instrumentation.test.utils.PortUtils;
@@ -175,16 +176,21 @@ void highConcurrency() throws Exception {
175176
Thread.currentThread().interrupt();
176177
throw new AssertionError(e);
177178
}
178-
testing.runWithSpan(
179-
"client " + index,
180-
() -> {
181-
HttpRequestBuilder builder =
182-
HttpRequest.builder()
183-
.get(baseUrl + "?" + TEST_REQUEST_ID_PARAMETER + "=" + index);
184-
Span.current().setAttribute(TEST_REQUEST_ID_ATTRIBUTE, index);
185-
propagator.inject(Context.current(), builder, setter);
186-
client.execute(builder.build()).aggregate().join();
187-
});
179+
// run under Context.root() so each client request starts a fresh trace,
180+
// regardless of any thread-local context leftover from a previous task on
181+
// the same pool worker
182+
try (Scope ignored = Context.root().makeCurrent()) {
183+
testing.runWithSpan(
184+
"client " + index,
185+
() -> {
186+
HttpRequestBuilder builder =
187+
HttpRequest.builder()
188+
.get(baseUrl + "?" + TEST_REQUEST_ID_PARAMETER + "=" + index);
189+
Span.current().setAttribute(TEST_REQUEST_ID_ATTRIBUTE, index);
190+
propagator.inject(Context.current(), builder, setter);
191+
client.execute(builder.build()).aggregate().join();
192+
});
193+
}
188194
}));
189195
}
190196

0 commit comments

Comments
 (0)