From aa78f93dc0c52a2384f22a7e1638786b64b01a68 Mon Sep 17 00:00:00 2001 From: Filipe Roque Date: Wed, 9 Sep 2026 19:39:56 +0100 Subject: [PATCH] Replace Opentelemetry root with current to reuse existing trace. Unit test shouldExtractFromHeadersAndCacheResultWhenNotAlreadyCached is not updated due to current() calling into root() internally. --- .../internal/opentelemetry/DefaultOtelContextExtractor.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/jooby-opentelemetry/src/main/java/io/jooby/internal/opentelemetry/DefaultOtelContextExtractor.java b/modules/jooby-opentelemetry/src/main/java/io/jooby/internal/opentelemetry/DefaultOtelContextExtractor.java index c8f54802f3..e6968a82db 100644 --- a/modules/jooby-opentelemetry/src/main/java/io/jooby/internal/opentelemetry/DefaultOtelContextExtractor.java +++ b/modules/jooby-opentelemetry/src/main/java/io/jooby/internal/opentelemetry/DefaultOtelContextExtractor.java @@ -5,7 +5,7 @@ */ package io.jooby.internal.opentelemetry; -import static io.opentelemetry.context.Context.root; +import static io.opentelemetry.context.Context.current; import org.jspecify.annotations.NonNull; @@ -30,7 +30,7 @@ public DefaultOtelContextExtractor(OpenTelemetry otel) { // 2. Secondary: If middleware is missing, manually parse the W3C headers var propagator = otel.getPropagators().getTextMapPropagator(); // Extracts W3C headers (if present) or returns Context.current() as a safe fallback - result = propagator.extract(root(), ctx, Headers.INSTANCE); + result = propagator.extract(current(), ctx, Headers.INSTANCE); // Cache it to avoid re-parsing headers on subsequent calls in the same request ctx.setAttribute(Context.class.getName(), result); }