Don't use singleton for propagator getters/setters (#3054)

This commit is contained in:
Trask Stalnaker 2021-05-21 11:48:54 -07:00 committed by GitHub
parent ccda31ab50
commit f11bd75710
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
10 changed files with 14 additions and 20 deletions

View File

@ -86,8 +86,7 @@ class InstrumenterTest {
} }
} }
enum MapGetter implements TextMapGetter<Map<String, String>> { class MapGetter implements TextMapGetter<Map<String, String>> {
INSTANCE;
@Override @Override
public Iterable<String> keys(Map<String, String> carrier) { public Iterable<String> keys(Map<String, String> carrier) {
@ -109,7 +108,7 @@ class InstrumenterTest {
Instrumenter.<Map<String, String>, Map<String, String>>newBuilder( Instrumenter.<Map<String, String>, Map<String, String>>newBuilder(
otelTesting.getOpenTelemetry(), "test", unused -> "span") otelTesting.getOpenTelemetry(), "test", unused -> "span")
.addAttributesExtractors(new AttributesExtractor1(), new AttributesExtractor2()) .addAttributesExtractors(new AttributesExtractor1(), new AttributesExtractor2())
.newServerInstrumenter(MapGetter.INSTANCE); .newServerInstrumenter(new MapGetter());
Context context = instrumenter.start(Context.root(), REQUEST); Context context = instrumenter.start(Context.root(), REQUEST);
SpanContext spanContext = Span.fromContext(context).getSpanContext(); SpanContext spanContext = Span.fromContext(context).getSpanContext();
@ -151,7 +150,7 @@ class InstrumenterTest {
Instrumenter.<Map<String, String>, Map<String, String>>newBuilder( Instrumenter.<Map<String, String>, Map<String, String>>newBuilder(
otelTesting.getOpenTelemetry(), "test", unused -> "span") otelTesting.getOpenTelemetry(), "test", unused -> "span")
.addAttributesExtractors(new AttributesExtractor1(), new AttributesExtractor2()) .addAttributesExtractors(new AttributesExtractor1(), new AttributesExtractor2())
.newServerInstrumenter(MapGetter.INSTANCE); .newServerInstrumenter(new MapGetter());
Context context = instrumenter.start(Context.root(), REQUEST); Context context = instrumenter.start(Context.root(), REQUEST);
SpanContext spanContext = Span.fromContext(context).getSpanContext(); SpanContext spanContext = Span.fromContext(context).getSpanContext();
@ -175,7 +174,7 @@ class InstrumenterTest {
Instrumenter.<Map<String, String>, Map<String, String>>newBuilder( Instrumenter.<Map<String, String>, Map<String, String>>newBuilder(
otelTesting.getOpenTelemetry(), "test", unused -> "span") otelTesting.getOpenTelemetry(), "test", unused -> "span")
.addAttributesExtractors(new AttributesExtractor1(), new AttributesExtractor2()) .addAttributesExtractors(new AttributesExtractor1(), new AttributesExtractor2())
.newServerInstrumenter(MapGetter.INSTANCE); .newServerInstrumenter(new MapGetter());
Map<String, String> request = new HashMap<>(REQUEST); Map<String, String> request = new HashMap<>(REQUEST);
W3CTraceContextPropagator.getInstance() W3CTraceContextPropagator.getInstance()

View File

@ -34,7 +34,7 @@ public final class ApacheHttpClientInstrumenters {
.setSpanStatusExtractor(spanStatusExtractor) .setSpanStatusExtractor(spanStatusExtractor)
.addAttributesExtractor(httpAttributesExtractor) .addAttributesExtractor(httpAttributesExtractor)
.addAttributesExtractor(new ApacheHttpClientNetAttributesExtractor()) .addAttributesExtractor(new ApacheHttpClientNetAttributesExtractor())
.newClientInstrumenter(HttpHeaderSetter.INSTANCE); .newClientInstrumenter(new HttpHeaderSetter());
} }
public static Instrumenter<HttpMethod, Void> instrumenter() { public static Instrumenter<HttpMethod, Void> instrumenter() {

View File

@ -9,8 +9,7 @@ import io.opentelemetry.context.propagation.TextMapSetter;
import org.apache.commons.httpclient.Header; import org.apache.commons.httpclient.Header;
import org.apache.commons.httpclient.HttpMethod; import org.apache.commons.httpclient.HttpMethod;
enum HttpHeaderSetter implements TextMapSetter<HttpMethod> { final class HttpHeaderSetter implements TextMapSetter<HttpMethod> {
INSTANCE;
@Override @Override
public void set(HttpMethod carrier, String key, String value) { public void set(HttpMethod carrier, String key, String value) {

View File

@ -35,7 +35,7 @@ public final class ApacheHttpClientInstrumenters {
.setSpanStatusExtractor(spanStatusExtractor) .setSpanStatusExtractor(spanStatusExtractor)
.addAttributesExtractor(httpAttributesExtractor) .addAttributesExtractor(httpAttributesExtractor)
.addAttributesExtractor(new ApacheHttpClientNetAttributesExtractor()) .addAttributesExtractor(new ApacheHttpClientNetAttributesExtractor())
.newClientInstrumenter(HttpHeaderSetter.INSTANCE); .newClientInstrumenter(new HttpHeaderSetter());
} }
public static Instrumenter<HttpUriRequest, HttpResponse> instrumenter() { public static Instrumenter<HttpUriRequest, HttpResponse> instrumenter() {

View File

@ -8,8 +8,7 @@ package io.opentelemetry.javaagent.instrumentation.apachehttpclient.v4_0;
import io.opentelemetry.context.propagation.TextMapSetter; import io.opentelemetry.context.propagation.TextMapSetter;
import org.apache.http.client.methods.HttpUriRequest; import org.apache.http.client.methods.HttpUriRequest;
enum HttpHeaderSetter implements TextMapSetter<HttpUriRequest> { final class HttpHeaderSetter implements TextMapSetter<HttpUriRequest> {
INSTANCE;
@Override @Override
public void set(HttpUriRequest carrier, String key, String value) { public void set(HttpUriRequest carrier, String key, String value) {

View File

@ -86,7 +86,7 @@ public final class ArmeriaTracingBuilder {
serverInstrumenterBuilder.addRequestMetrics(HttpServerMetrics.get()); serverInstrumenterBuilder.addRequestMetrics(HttpServerMetrics.get());
return new ArmeriaTracing( return new ArmeriaTracing(
clientInstrumenterBuilder.newClientInstrumenter(ClientRequestContextSetter.INSTANCE), clientInstrumenterBuilder.newClientInstrumenter(new ClientRequestContextSetter()),
serverInstrumenterBuilder.newServerInstrumenter(RequestContextGetter.INSTANCE)); serverInstrumenterBuilder.newServerInstrumenter(new RequestContextGetter()));
} }
} }

View File

@ -9,8 +9,7 @@ import com.linecorp.armeria.client.ClientRequestContext;
import io.opentelemetry.context.propagation.TextMapSetter; import io.opentelemetry.context.propagation.TextMapSetter;
import org.checkerframework.checker.nullness.qual.Nullable; import org.checkerframework.checker.nullness.qual.Nullable;
enum ClientRequestContextSetter implements TextMapSetter<ClientRequestContext> { final class ClientRequestContextSetter implements TextMapSetter<ClientRequestContext> {
INSTANCE;
@Override @Override
public void set(@Nullable ClientRequestContext carrier, String key, String value) { public void set(@Nullable ClientRequestContext carrier, String key, String value) {

View File

@ -12,8 +12,7 @@ import java.util.Collections;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import org.checkerframework.checker.nullness.qual.Nullable; import org.checkerframework.checker.nullness.qual.Nullable;
enum RequestContextGetter implements TextMapGetter<ServiceRequestContext> { final class RequestContextGetter implements TextMapGetter<ServiceRequestContext> {
INSTANCE;
@Override @Override
public Iterable<String> keys(@Nullable ServiceRequestContext carrier) { public Iterable<String> keys(@Nullable ServiceRequestContext carrier) {

View File

@ -30,7 +30,7 @@ public final class JmsInstrumenters {
Instrumenter.<MessageWithDestination, Void>newBuilder( Instrumenter.<MessageWithDestination, Void>newBuilder(
otel, INSTRUMENTATION_NAME, spanNameExtractor) otel, INSTRUMENTATION_NAME, spanNameExtractor)
.addAttributesExtractor(attributesExtractor) .addAttributesExtractor(attributesExtractor)
.newProducerInstrumenter(MessagePropertySetter.INSTANCE); .newProducerInstrumenter(new MessagePropertySetter());
// MessageConsumer does not do context propagation // MessageConsumer does not do context propagation
CONSUMER_INSTRUMENTER = CONSUMER_INSTRUMENTER =
Instrumenter.<MessageWithDestination, Void>newBuilder( Instrumenter.<MessageWithDestination, Void>newBuilder(

View File

@ -10,8 +10,7 @@ import javax.jms.JMSException;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
enum MessagePropertySetter implements TextMapSetter<MessageWithDestination> { final class MessagePropertySetter implements TextMapSetter<MessageWithDestination> {
INSTANCE;
private static final Logger log = LoggerFactory.getLogger(MessagePropertySetter.class); private static final Logger log = LoggerFactory.getLogger(MessagePropertySetter.class);