Add support for TraceMultiPropagator (#849)
This commit is contained in:
parent
adec806300
commit
8c44dd00e1
|
@ -24,7 +24,10 @@ import io.opentelemetry.extensions.trace.propagation.AwsXRayPropagator;
|
||||||
import io.opentelemetry.extensions.trace.propagation.B3Propagator;
|
import io.opentelemetry.extensions.trace.propagation.B3Propagator;
|
||||||
import io.opentelemetry.extensions.trace.propagation.JaegerPropagator;
|
import io.opentelemetry.extensions.trace.propagation.JaegerPropagator;
|
||||||
import io.opentelemetry.extensions.trace.propagation.OtTracerPropagator;
|
import io.opentelemetry.extensions.trace.propagation.OtTracerPropagator;
|
||||||
|
import io.opentelemetry.extensions.trace.propagation.TraceMultiPropagator;
|
||||||
|
import io.opentelemetry.extensions.trace.propagation.TraceMultiPropagator.Builder;
|
||||||
import io.opentelemetry.trace.propagation.HttpTraceContext;
|
import io.opentelemetry.trace.propagation.HttpTraceContext;
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
|
@ -60,23 +63,26 @@ public class PropagatorsInitializer {
|
||||||
|
|
||||||
DefaultContextPropagators.Builder propagatorsBuilder = DefaultContextPropagators.builder();
|
DefaultContextPropagators.Builder propagatorsBuilder = DefaultContextPropagators.builder();
|
||||||
|
|
||||||
boolean addedPropagator = false;
|
List<HttpTextFormat> textPropagators = new ArrayList<>(propagators.size());
|
||||||
for (String propagatorId : propagators) {
|
for (String propagatorId : propagators) {
|
||||||
HttpTextFormat textPropagator = TEXTMAP_PROPAGATORS.get(propagatorId.trim().toLowerCase());
|
HttpTextFormat textPropagator = TEXTMAP_PROPAGATORS.get(propagatorId.trim().toLowerCase());
|
||||||
if (textPropagator != null) {
|
if (textPropagator != null) {
|
||||||
if (addedPropagator) {
|
textPropagators.add(textPropagator);
|
||||||
log.warn(
|
|
||||||
"Only one propagator per concern can be added, " + textPropagator + " is ignored");
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
propagatorsBuilder.addHttpTextFormat(textPropagator);
|
|
||||||
log.info("Added " + textPropagator + " propagator");
|
log.info("Added " + textPropagator + " propagator");
|
||||||
addedPropagator = true;
|
|
||||||
} else {
|
} else {
|
||||||
log.warn("No matching propagator for " + propagatorId);
|
log.warn("No matching propagator for " + propagatorId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (textPropagators.size() > 1) {
|
||||||
|
Builder traceMultiPropagatorBuilder = TraceMultiPropagator.builder();
|
||||||
|
for (HttpTextFormat textPropagator : textPropagators) {
|
||||||
|
traceMultiPropagatorBuilder.addPropagator(textPropagator);
|
||||||
|
}
|
||||||
|
propagatorsBuilder.addHttpTextFormat(traceMultiPropagatorBuilder.build());
|
||||||
|
} else if (textPropagators.size() == 1) {
|
||||||
|
propagatorsBuilder.addHttpTextFormat(textPropagators.get(0));
|
||||||
|
}
|
||||||
|
// Register it in the global propagators:
|
||||||
OpenTelemetry.setPropagators(propagatorsBuilder.build());
|
OpenTelemetry.setPropagators(propagatorsBuilder.build());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue