From 3d21c26632ad060f3b2222afe1c077d053ded0a6 Mon Sep 17 00:00:00 2001 From: Anuraag Agrawal Date: Fri, 6 Nov 2020 06:17:47 +0900 Subject: [PATCH] Update to SDK 0.10.0 (#1564) --- gradle/dependencies.gradle | 8 ++++---- .../servlet/HttpServletRequestGetter.java | 6 ++++++ .../akkahttp/AkkaHttpServerHeaders.java | 9 +++++++++ .../apachecamel/CamelPropagationUtil.java | 5 +++++ .../armeria/v1_0/server/ArmeriaServerTracer.java | 9 +++++++++ .../instrumentation/awslambda/v1_0/AwsLambdaUtil.java | 5 +++++ .../instrumentation/grizzly/ExtractAdapter.java | 5 +++++ .../grpc/v1_5/server/GrpcExtractAdapter.java | 5 +++++ .../instrumentation/jms/MessageExtractAdapter.java | 10 ++++++++++ .../kafkaclients/TextMapExtractAdapter.java | 9 +++++++++ .../kafkastreams/TextMapExtractAdapter.java | 9 +++++++++ .../src/test/groovy/KafkaStreamsTest.groovy | 5 +++++ .../netty/v3_8/server/NettyRequestExtractAdapter.java | 5 +++++ .../netty/v4_0/server/NettyRequestExtractAdapter.java | 5 +++++ .../netty/v4_1/server/NettyRequestExtractAdapter.java | 5 +++++ .../propagation/ApplicationTextMapPropagator.java | 5 +++++ .../rabbitmq/amqp/TextMapExtractAdapter.java | 5 +++++ .../instrumentation/rmi/context/ContextPayload.java | 5 +++++ .../typed/server/SampleHttpServerTypedTracer.java | 5 +++++ .../server/http/HttpServletRequestExtractAdapter.java | 6 ++++++ 20 files changed, 122 insertions(+), 4 deletions(-) diff --git a/gradle/dependencies.gradle b/gradle/dependencies.gradle index cb2a55f142..ba0aa88317 100644 --- a/gradle/dependencies.gradle +++ b/gradle/dependencies.gradle @@ -11,10 +11,10 @@ ext { // Check https://oss.jfrog.org/libs-snapshot/io/opentelemetry/ for latest snapshot version. // Snapshot versions are often split across versions (based on jfrog's whim and relative age of // each module), best to keep these separate until GA - opentelemetry : '0.10.0-20201105.031722-157', - opentelemetryOther : '0.10.0-20201105.031722-20', - opentelemetryAnother: '0.10.0-20201105.031722-156', - opentelemetryContext: '0.10.0-20201105.031722-128', + opentelemetry : '0.10.0', + opentelemetryOther : '0.10.0', + opentelemetryAnother: '0.10.0', + opentelemetryContext: '0.10.0', slf4j : "1.7.30", guava : "20.0", // Last version to support Java 7 diff --git a/instrumentation-core/servlet-2.2/src/main/java/io/opentelemetry/instrumentation/servlet/HttpServletRequestGetter.java b/instrumentation-core/servlet-2.2/src/main/java/io/opentelemetry/instrumentation/servlet/HttpServletRequestGetter.java index 0cf9549c3d..22bd84a18b 100644 --- a/instrumentation-core/servlet-2.2/src/main/java/io/opentelemetry/instrumentation/servlet/HttpServletRequestGetter.java +++ b/instrumentation-core/servlet-2.2/src/main/java/io/opentelemetry/instrumentation/servlet/HttpServletRequestGetter.java @@ -6,12 +6,18 @@ package io.opentelemetry.instrumentation.servlet; import io.opentelemetry.context.propagation.TextMapPropagator; +import java.util.Collections; import javax.servlet.http.HttpServletRequest; public class HttpServletRequestGetter implements TextMapPropagator.Getter { public static final HttpServletRequestGetter GETTER = new HttpServletRequestGetter(); + @Override + public Iterable keys(HttpServletRequest carrier) { + return Collections.list(carrier.getHeaderNames()); + } + @Override public String get(HttpServletRequest carrier, String key) { return carrier.getHeader(key); diff --git a/instrumentation/akka-http-10.0/src/main/java/io/opentelemetry/javaagent/instrumentation/akkahttp/AkkaHttpServerHeaders.java b/instrumentation/akka-http-10.0/src/main/java/io/opentelemetry/javaagent/instrumentation/akkahttp/AkkaHttpServerHeaders.java index b06b7359db..0b74a92c44 100644 --- a/instrumentation/akka-http-10.0/src/main/java/io/opentelemetry/javaagent/instrumentation/akkahttp/AkkaHttpServerHeaders.java +++ b/instrumentation/akka-http-10.0/src/main/java/io/opentelemetry/javaagent/instrumentation/akkahttp/AkkaHttpServerHeaders.java @@ -9,11 +9,20 @@ import akka.http.javadsl.model.HttpHeader; import akka.http.scaladsl.model.HttpRequest; import io.opentelemetry.context.propagation.TextMapPropagator; import java.util.Optional; +import java.util.stream.Collectors; +import java.util.stream.StreamSupport; public class AkkaHttpServerHeaders implements TextMapPropagator.Getter { public static final AkkaHttpServerHeaders GETTER = new AkkaHttpServerHeaders(); + @Override + public Iterable keys(HttpRequest httpRequest) { + return StreamSupport.stream(httpRequest.getHeaders().spliterator(), false) + .map(HttpHeader::lowercaseName) + .collect(Collectors.toList()); + } + @Override public String get(HttpRequest carrier, String key) { Optional header = carrier.getHeader(key); diff --git a/instrumentation/apache-camel-2.20/src/main/java/io/opentelemetry/javaagent/instrumentation/apachecamel/CamelPropagationUtil.java b/instrumentation/apache-camel-2.20/src/main/java/io/opentelemetry/javaagent/instrumentation/apachecamel/CamelPropagationUtil.java index 90c2de0c07..a65c553dde 100644 --- a/instrumentation/apache-camel-2.20/src/main/java/io/opentelemetry/javaagent/instrumentation/apachecamel/CamelPropagationUtil.java +++ b/instrumentation/apache-camel-2.20/src/main/java/io/opentelemetry/javaagent/instrumentation/apachecamel/CamelPropagationUtil.java @@ -31,6 +31,11 @@ final class CamelPropagationUtil { private static final MapGetter INSTANCE = new MapGetter(); + @Override + public Iterable keys(Map map) { + return map.keySet(); + } + @Override public String get(Map map, String s) { return (map.containsKey(s) ? map.get(s).toString() : null); diff --git a/instrumentation/armeria-1.0/library/src/main/java/io/opentelemetry/instrumentation/armeria/v1_0/server/ArmeriaServerTracer.java b/instrumentation/armeria-1.0/library/src/main/java/io/opentelemetry/instrumentation/armeria/v1_0/server/ArmeriaServerTracer.java index a411594b4f..70cdb45a66 100644 --- a/instrumentation/armeria-1.0/library/src/main/java/io/opentelemetry/instrumentation/armeria/v1_0/server/ArmeriaServerTracer.java +++ b/instrumentation/armeria-1.0/library/src/main/java/io/opentelemetry/instrumentation/armeria/v1_0/server/ArmeriaServerTracer.java @@ -8,12 +8,14 @@ package io.opentelemetry.instrumentation.armeria.v1_0.server; import com.linecorp.armeria.common.HttpRequest; import com.linecorp.armeria.common.logging.RequestLog; import com.linecorp.armeria.server.ServiceRequestContext; +import io.netty.util.AsciiString; import io.opentelemetry.api.trace.Tracer; import io.opentelemetry.context.Context; import io.opentelemetry.context.propagation.TextMapPropagator.Getter; import io.opentelemetry.instrumentation.api.tracer.HttpServerTracer; import java.net.InetSocketAddress; import java.net.SocketAddress; +import java.util.stream.Collectors; import org.checkerframework.checker.nullness.qual.Nullable; public class ArmeriaServerTracer @@ -96,6 +98,13 @@ public class ArmeriaServerTracer private static final ArmeriaGetter INSTANCE = new ArmeriaGetter(); + @Override + public Iterable keys(HttpRequest httpRequest) { + return httpRequest.headers().names().stream() + .map(AsciiString::toString) + .collect(Collectors.toList()); + } + @Override @Nullable public String get(@Nullable HttpRequest carrier, String key) { diff --git a/instrumentation/aws-lambda-1.0/library/src/main/java/io/opentelemetry/instrumentation/awslambda/v1_0/AwsLambdaUtil.java b/instrumentation/aws-lambda-1.0/library/src/main/java/io/opentelemetry/instrumentation/awslambda/v1_0/AwsLambdaUtil.java index 2c484bbf94..0de274153b 100644 --- a/instrumentation/aws-lambda-1.0/library/src/main/java/io/opentelemetry/instrumentation/awslambda/v1_0/AwsLambdaUtil.java +++ b/instrumentation/aws-lambda-1.0/library/src/main/java/io/opentelemetry/instrumentation/awslambda/v1_0/AwsLambdaUtil.java @@ -27,6 +27,11 @@ final class AwsLambdaUtil { private static final MapGetter INSTANCE = new MapGetter(); + @Override + public Iterable keys(Map map) { + return map.keySet(); + } + @Override public String get(Map map, String s) { return map.get(s); diff --git a/instrumentation/grizzly-2.0/src/main/java/io/opentelemetry/javaagent/instrumentation/grizzly/ExtractAdapter.java b/instrumentation/grizzly-2.0/src/main/java/io/opentelemetry/javaagent/instrumentation/grizzly/ExtractAdapter.java index a101fd1fd5..a827e5ca75 100644 --- a/instrumentation/grizzly-2.0/src/main/java/io/opentelemetry/javaagent/instrumentation/grizzly/ExtractAdapter.java +++ b/instrumentation/grizzly-2.0/src/main/java/io/opentelemetry/javaagent/instrumentation/grizzly/ExtractAdapter.java @@ -11,6 +11,11 @@ import org.glassfish.grizzly.http.HttpRequestPacket; public class ExtractAdapter implements TextMapPropagator.Getter { public static final ExtractAdapter GETTER = new ExtractAdapter(); + @Override + public Iterable keys(HttpRequestPacket request) { + return request.getHeaders().names(); + } + @Override public String get(HttpRequestPacket request, String key) { return request.getHeader(key); diff --git a/instrumentation/grpc-1.5/library/src/main/java/io/opentelemetry/instrumentation/grpc/v1_5/server/GrpcExtractAdapter.java b/instrumentation/grpc-1.5/library/src/main/java/io/opentelemetry/instrumentation/grpc/v1_5/server/GrpcExtractAdapter.java index bba0539238..10b9382b04 100644 --- a/instrumentation/grpc-1.5/library/src/main/java/io/opentelemetry/instrumentation/grpc/v1_5/server/GrpcExtractAdapter.java +++ b/instrumentation/grpc-1.5/library/src/main/java/io/opentelemetry/instrumentation/grpc/v1_5/server/GrpcExtractAdapter.java @@ -12,6 +12,11 @@ final class GrpcExtractAdapter implements TextMapPropagator.Getter { static final GrpcExtractAdapter GETTER = new GrpcExtractAdapter(); + @Override + public Iterable keys(Metadata metadata) { + return metadata.keys(); + } + @Override public String get(Metadata carrier, String key) { return carrier.get(Metadata.Key.of(key, Metadata.ASCII_STRING_MARSHALLER)); diff --git a/instrumentation/jms-1.1/src/main/java/io/opentelemetry/javaagent/instrumentation/jms/MessageExtractAdapter.java b/instrumentation/jms-1.1/src/main/java/io/opentelemetry/javaagent/instrumentation/jms/MessageExtractAdapter.java index 96b997fb86..6d35b08401 100644 --- a/instrumentation/jms-1.1/src/main/java/io/opentelemetry/javaagent/instrumentation/jms/MessageExtractAdapter.java +++ b/instrumentation/jms-1.1/src/main/java/io/opentelemetry/javaagent/instrumentation/jms/MessageExtractAdapter.java @@ -6,6 +6,7 @@ package io.opentelemetry.javaagent.instrumentation.jms; import io.opentelemetry.context.propagation.TextMapPropagator; +import java.util.Collections; import javax.jms.JMSException; import javax.jms.Message; @@ -13,6 +14,15 @@ public class MessageExtractAdapter implements TextMapPropagator.Getter public static final MessageExtractAdapter GETTER = new MessageExtractAdapter(); + @Override + public Iterable keys(Message message) { + try { + return Collections.list(message.getPropertyNames()); + } catch (JMSException e) { + return Collections.emptyList(); + } + } + @Override public String get(Message carrier, String key) { String propName = key.replace("-", MessageInjectAdapter.DASH); diff --git a/instrumentation/kafka-clients-0.11/src/main/java/io/opentelemetry/javaagent/instrumentation/kafkaclients/TextMapExtractAdapter.java b/instrumentation/kafka-clients-0.11/src/main/java/io/opentelemetry/javaagent/instrumentation/kafkaclients/TextMapExtractAdapter.java index aeaa10070c..94344549db 100644 --- a/instrumentation/kafka-clients-0.11/src/main/java/io/opentelemetry/javaagent/instrumentation/kafkaclients/TextMapExtractAdapter.java +++ b/instrumentation/kafka-clients-0.11/src/main/java/io/opentelemetry/javaagent/instrumentation/kafkaclients/TextMapExtractAdapter.java @@ -7,6 +7,8 @@ package io.opentelemetry.javaagent.instrumentation.kafkaclients; import io.opentelemetry.context.propagation.TextMapPropagator; import java.nio.charset.StandardCharsets; +import java.util.stream.Collectors; +import java.util.stream.StreamSupport; import org.apache.kafka.common.header.Header; import org.apache.kafka.common.header.Headers; @@ -14,6 +16,13 @@ public class TextMapExtractAdapter implements TextMapPropagator.Getter public static final TextMapExtractAdapter GETTER = new TextMapExtractAdapter(); + @Override + public Iterable keys(Headers headers) { + return StreamSupport.stream(headers.spliterator(), false) + .map(Header::key) + .collect(Collectors.toList()); + } + @Override public String get(Headers headers, String key) { Header header = headers.lastHeader(key); diff --git a/instrumentation/kafka-streams-0.11/src/main/java/io/opentelemetry/javaagent/instrumentation/kafkastreams/TextMapExtractAdapter.java b/instrumentation/kafka-streams-0.11/src/main/java/io/opentelemetry/javaagent/instrumentation/kafkastreams/TextMapExtractAdapter.java index 7908956e45..6f13bb5197 100644 --- a/instrumentation/kafka-streams-0.11/src/main/java/io/opentelemetry/javaagent/instrumentation/kafkastreams/TextMapExtractAdapter.java +++ b/instrumentation/kafka-streams-0.11/src/main/java/io/opentelemetry/javaagent/instrumentation/kafkastreams/TextMapExtractAdapter.java @@ -7,6 +7,8 @@ package io.opentelemetry.javaagent.instrumentation.kafkastreams; import io.opentelemetry.context.propagation.TextMapPropagator; import java.nio.charset.StandardCharsets; +import java.util.stream.Collectors; +import java.util.stream.StreamSupport; import org.apache.kafka.common.header.Header; import org.apache.kafka.common.header.Headers; @@ -14,6 +16,13 @@ public class TextMapExtractAdapter implements TextMapPropagator.Getter public static final TextMapExtractAdapter GETTER = new TextMapExtractAdapter(); + @Override + public Iterable keys(Headers headers) { + return StreamSupport.stream(headers.spliterator(), false) + .map(Header::key) + .collect(Collectors.toList()); + } + @Override public String get(Headers headers, String key) { Header header = headers.lastHeader(key); diff --git a/instrumentation/kafka-streams-0.11/src/test/groovy/KafkaStreamsTest.groovy b/instrumentation/kafka-streams-0.11/src/test/groovy/KafkaStreamsTest.groovy index ac656031ed..104b7d3536 100644 --- a/instrumentation/kafka-streams-0.11/src/test/groovy/KafkaStreamsTest.groovy +++ b/instrumentation/kafka-streams-0.11/src/test/groovy/KafkaStreamsTest.groovy @@ -207,6 +207,11 @@ class KafkaStreamsTest extends AgentTestRunner { headers.iterator().hasNext() def traceparent = new String(headers.headers("traceparent").iterator().next().value()) Context context = new HttpTraceContext().extract(Context.root(), "", new TextMapPropagator.Getter() { + @Override + Iterable keys(String carrier) { + return Collections.singleton("traceparent") + } + @Override String get(String carrier, String key) { if (key == "traceparent") { diff --git a/instrumentation/netty/netty-3.8/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v3_8/server/NettyRequestExtractAdapter.java b/instrumentation/netty/netty-3.8/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v3_8/server/NettyRequestExtractAdapter.java index aedcbdc59d..dcb7421c9b 100644 --- a/instrumentation/netty/netty-3.8/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v3_8/server/NettyRequestExtractAdapter.java +++ b/instrumentation/netty/netty-3.8/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v3_8/server/NettyRequestExtractAdapter.java @@ -12,6 +12,11 @@ public class NettyRequestExtractAdapter implements TextMapPropagator.Getter keys(HttpRequest request) { + return request.headers().names(); + } + @Override public String get(HttpRequest request, String key) { return request.headers().get(key); diff --git a/instrumentation/netty/netty-4.0/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v4_0/server/NettyRequestExtractAdapter.java b/instrumentation/netty/netty-4.0/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v4_0/server/NettyRequestExtractAdapter.java index 069c92d84d..47230e9d1a 100644 --- a/instrumentation/netty/netty-4.0/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v4_0/server/NettyRequestExtractAdapter.java +++ b/instrumentation/netty/netty-4.0/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v4_0/server/NettyRequestExtractAdapter.java @@ -12,6 +12,11 @@ public class NettyRequestExtractAdapter implements TextMapPropagator.Getter keys(HttpRequest request) { + return request.headers().names(); + } + @Override public String get(HttpRequest request, String key) { return request.headers().get(key); diff --git a/instrumentation/netty/netty-4.1/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v4_1/server/NettyRequestExtractAdapter.java b/instrumentation/netty/netty-4.1/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v4_1/server/NettyRequestExtractAdapter.java index cad572e199..7b399375d3 100644 --- a/instrumentation/netty/netty-4.1/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v4_1/server/NettyRequestExtractAdapter.java +++ b/instrumentation/netty/netty-4.1/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v4_1/server/NettyRequestExtractAdapter.java @@ -12,6 +12,11 @@ public class NettyRequestExtractAdapter implements TextMapPropagator.Getter keys(HttpRequest request) { + return request.headers().names(); + } + @Override public String get(HttpRequest request, String key) { return request.headers().get(key); diff --git a/instrumentation/opentelemetry-api-beta/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/context/propagation/ApplicationTextMapPropagator.java b/instrumentation/opentelemetry-api-beta/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/context/propagation/ApplicationTextMapPropagator.java index e0beee7885..758d834121 100644 --- a/instrumentation/opentelemetry-api-beta/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/context/propagation/ApplicationTextMapPropagator.java +++ b/instrumentation/opentelemetry-api-beta/src/main/java/io/opentelemetry/javaagent/instrumentation/opentelemetryapi/context/propagation/ApplicationTextMapPropagator.java @@ -54,6 +54,11 @@ class ApplicationTextMapPropagator implements TextMapPropagator { this.applicationGetter = applicationGetter; } + @Override + public Iterable keys(C c) { + return applicationGetter.keys(c); + } + @Override public String get(C carrier, String key) { return applicationGetter.get(carrier, key); diff --git a/instrumentation/rabbitmq-2.7/src/main/java/io/opentelemetry/javaagent/instrumentation/rabbitmq/amqp/TextMapExtractAdapter.java b/instrumentation/rabbitmq-2.7/src/main/java/io/opentelemetry/javaagent/instrumentation/rabbitmq/amqp/TextMapExtractAdapter.java index c75b736470..0385957d56 100644 --- a/instrumentation/rabbitmq-2.7/src/main/java/io/opentelemetry/javaagent/instrumentation/rabbitmq/amqp/TextMapExtractAdapter.java +++ b/instrumentation/rabbitmq-2.7/src/main/java/io/opentelemetry/javaagent/instrumentation/rabbitmq/amqp/TextMapExtractAdapter.java @@ -12,6 +12,11 @@ public class TextMapExtractAdapter implements TextMapPropagator.Getter keys(Map carrier) { + return carrier.keySet(); + } + @Override public String get(Map carrier, String key) { Object obj = carrier.get(key); diff --git a/instrumentation/rmi/src/main/java/io/opentelemetry/javaagent/instrumentation/rmi/context/ContextPayload.java b/instrumentation/rmi/src/main/java/io/opentelemetry/javaagent/instrumentation/rmi/context/ContextPayload.java index d44b741c86..03b5d99ace 100644 --- a/instrumentation/rmi/src/main/java/io/opentelemetry/javaagent/instrumentation/rmi/context/ContextPayload.java +++ b/instrumentation/rmi/src/main/java/io/opentelemetry/javaagent/instrumentation/rmi/context/ContextPayload.java @@ -70,6 +70,11 @@ public class ContextPayload { } public static class ExtractAdapter implements TextMapPropagator.Getter { + @Override + public Iterable keys(ContextPayload contextPayload) { + return contextPayload.getSpanContext().keySet(); + } + @Override public String get(ContextPayload carrier, String key) { return carrier.getSpanContext().get(key); diff --git a/javaagent-tooling/src/test/groovy/io/opentelemetry/javaagent/typed/server/SampleHttpServerTypedTracer.java b/javaagent-tooling/src/test/groovy/io/opentelemetry/javaagent/typed/server/SampleHttpServerTypedTracer.java index 1422f8d3f5..b8e294db21 100644 --- a/javaagent-tooling/src/test/groovy/io/opentelemetry/javaagent/typed/server/SampleHttpServerTypedTracer.java +++ b/javaagent-tooling/src/test/groovy/io/opentelemetry/javaagent/typed/server/SampleHttpServerTypedTracer.java @@ -34,6 +34,11 @@ public class SampleHttpServerTypedTracer @Override protected TextMapPropagator.Getter getGetter() { return new TextMapPropagator.Getter() { + @Override + public Iterable keys(String s) { + return null; + } + @Override public String get(String carrier, String key) { return null; diff --git a/testing-common/src/main/java/io/opentelemetry/instrumentation/test/server/http/HttpServletRequestExtractAdapter.java b/testing-common/src/main/java/io/opentelemetry/instrumentation/test/server/http/HttpServletRequestExtractAdapter.java index 0db2a0c155..f13061dc12 100644 --- a/testing-common/src/main/java/io/opentelemetry/instrumentation/test/server/http/HttpServletRequestExtractAdapter.java +++ b/testing-common/src/main/java/io/opentelemetry/instrumentation/test/server/http/HttpServletRequestExtractAdapter.java @@ -6,6 +6,7 @@ package io.opentelemetry.instrumentation.test.server.http; import io.opentelemetry.context.propagation.TextMapPropagator; +import java.util.Collections; import javax.servlet.http.HttpServletRequest; /** @@ -20,6 +21,11 @@ public class HttpServletRequestExtractAdapter public static final HttpServletRequestExtractAdapter GETTER = new HttpServletRequestExtractAdapter(); + @Override + public Iterable keys(HttpServletRequest carrier) { + return Collections.list(carrier.getHeaderNames()); + } + @Override public String get(HttpServletRequest carrier, String key) { return carrier.getHeader(key);