diff --git a/README.md b/README.md index 205fc899dfc9..ce232c97a79a 100644 --- a/README.md +++ b/README.md @@ -221,6 +221,7 @@ Because the automatic instrumentation runs in a different classpath than the ins | [Apache HttpAsyncClient](https://hc.apache.org/index.html) | 4.0+ | | [Apache HttpClient](https://hc.apache.org/index.html) | 2.0+ | | [Armeria](https://armeria.dev) | 0.99.8+ | +| [AsyncHttpClient](https://github.com/AsyncHttpClient/async-http-client) | 1.9+ (not including 2.x yet) | | [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/java-handler.html) | 1.0+ | | [AWS SDK](https://aws.amazon.com/sdk-for-java/) | 1.11.x and 2.2.0+ | | [Cassandra Driver](https://github.com/datastax/java-driver) | 3.0+ | @@ -232,11 +233,10 @@ Because the automatic instrumentation runs in a different classpath than the ins | [Geode Client](https://geode.apache.org/) | 1.4+ | | [Google HTTP Client](https://github.com/googleapis/google-http-java-client) | 1.19+ | | [Grizzly](https://javaee.github.io/grizzly/httpserverframework.html) | 2.0+ (disabled by default, see below) | -| [Grizzly Client](https://github.com/javaee/grizzly-ahc) | 1.9+ | | [gRPC](https://github.com/grpc/grpc-java) | 1.5+ | | [Hibernate](https://github.com/hibernate/hibernate-orm) | 3.3+ | | [HttpURLConnection](https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/net/HttpURLConnection.html) | Java 7+ | -| [http4k ](https://www.http4k.org/guide/modules/opentelemetry/) | 3.270.0+ | +| [http4k ](https://www.http4k.org/guide/modules/opentelemetry/) | 3.270.0+ | | [Hystrix](https://github.com/Netflix/Hystrix) | 1.4+ | | [JAX-RS](https://javaee.github.io/javaee-spec/javadocs/javax/ws/rs/package-summary.html) | 0.5+ | | [JAX-RS Client](https://javaee.github.io/javaee-spec/javadocs/javax/ws/rs/client/package-summary.html) | 2.0+ | @@ -260,7 +260,7 @@ Because the automatic instrumentation runs in a different classpath than the ins | [RabbitMQ Client](https://github.com/rabbitmq/rabbitmq-java-client) | 2.7+ | | [Ratpack](https://github.com/ratpack/ratpack) | 1.4+ | | [Reactor](https://github.com/reactor/reactor-core) | 3.1+ | -| [Reactor Netty](https://github.com/reactor/reactor-netty) | 0.9+ (not including 1.0) | +| [Reactor Netty](https://github.com/reactor/reactor-netty) | 0.9+ (not including 1.0) | | [Rediscala](https://github.com/etaty/rediscala) | 1.8+ | | [Redisson](https://github.com/redisson/redisson) | 3.0+ | | [RMI](https://docs.oracle.com/en/java/javase/11/docs/api/java.rmi/java/rmi/package-summary.html) | Java 7+ | diff --git a/instrumentation/async-http-client-1.9/async-http-client-1.9.gradle b/instrumentation/async-http-client-1.9/async-http-client-1.9.gradle new file mode 100644 index 000000000000..23c6e49a2c54 --- /dev/null +++ b/instrumentation/async-http-client-1.9/async-http-client-1.9.gradle @@ -0,0 +1,14 @@ +apply from: "$rootDir/gradle/instrumentation.gradle" + +muzzle { + pass { + group = "com.ning" + module = "async-http-client" + versions = "[1.9.0,)" + assertInverse = true + } +} + +dependencies { + library group: 'com.ning', name: 'async-http-client', version: '1.9.0' +} diff --git a/instrumentation/grizzly-client-1.9/src/main/java/io/opentelemetry/javaagent/instrumentation/grizzly/client/GrizzlyInjectAdapter.java b/instrumentation/async-http-client-1.9/src/main/java/io/opentelemetry/javaagent/instrumentation/asynchttpclient/AsyncHttpClientInjectAdapter.java similarity index 55% rename from instrumentation/grizzly-client-1.9/src/main/java/io/opentelemetry/javaagent/instrumentation/grizzly/client/GrizzlyInjectAdapter.java rename to instrumentation/async-http-client-1.9/src/main/java/io/opentelemetry/javaagent/instrumentation/asynchttpclient/AsyncHttpClientInjectAdapter.java index 7b89a4825bc9..45c532463cd6 100644 --- a/instrumentation/grizzly-client-1.9/src/main/java/io/opentelemetry/javaagent/instrumentation/grizzly/client/GrizzlyInjectAdapter.java +++ b/instrumentation/async-http-client-1.9/src/main/java/io/opentelemetry/javaagent/instrumentation/asynchttpclient/AsyncHttpClientInjectAdapter.java @@ -3,14 +3,14 @@ * SPDX-License-Identifier: Apache-2.0 */ -package io.opentelemetry.javaagent.instrumentation.grizzly.client; +package io.opentelemetry.javaagent.instrumentation.asynchttpclient; import com.ning.http.client.Request; import io.opentelemetry.context.propagation.TextMapPropagator; -public class GrizzlyInjectAdapter implements TextMapPropagator.Setter { +public class AsyncHttpClientInjectAdapter implements TextMapPropagator.Setter { - public static final GrizzlyInjectAdapter SETTER = new GrizzlyInjectAdapter(); + public static final AsyncHttpClientInjectAdapter SETTER = new AsyncHttpClientInjectAdapter(); @Override public void set(Request carrier, String key, String value) { diff --git a/instrumentation/grizzly-client-1.9/src/main/java/io/opentelemetry/javaagent/instrumentation/grizzly/client/GrizzlyClientInstrumentationModule.java b/instrumentation/async-http-client-1.9/src/main/java/io/opentelemetry/javaagent/instrumentation/asynchttpclient/AsyncHttpClientInstrumentationModule.java similarity index 52% rename from instrumentation/grizzly-client-1.9/src/main/java/io/opentelemetry/javaagent/instrumentation/grizzly/client/GrizzlyClientInstrumentationModule.java rename to instrumentation/async-http-client-1.9/src/main/java/io/opentelemetry/javaagent/instrumentation/asynchttpclient/AsyncHttpClientInstrumentationModule.java index 452d04c397f5..147a88574fcb 100644 --- a/instrumentation/grizzly-client-1.9/src/main/java/io/opentelemetry/javaagent/instrumentation/grizzly/client/GrizzlyClientInstrumentationModule.java +++ b/instrumentation/async-http-client-1.9/src/main/java/io/opentelemetry/javaagent/instrumentation/asynchttpclient/AsyncHttpClientInstrumentationModule.java @@ -3,44 +3,38 @@ * SPDX-License-Identifier: Apache-2.0 */ -package io.opentelemetry.javaagent.instrumentation.grizzly.client; +package io.opentelemetry.javaagent.instrumentation.asynchttpclient; import static java.util.Arrays.asList; import static java.util.Collections.singletonMap; import com.google.auto.service.AutoService; import io.opentelemetry.javaagent.instrumentation.api.Pair; -import io.opentelemetry.javaagent.tooling.InstrumentationModule; import io.opentelemetry.javaagent.tooling.TypeInstrumentation; import java.util.List; import java.util.Map; -@AutoService(InstrumentationModule.class) -public class GrizzlyClientInstrumentationModule extends InstrumentationModule { - public GrizzlyClientInstrumentationModule() { - super("grizzly-client", "grizzly-client-1.9", "ning"); +@AutoService(io.opentelemetry.javaagent.tooling.InstrumentationModule.class) +public class AsyncHttpClientInstrumentationModule + extends io.opentelemetry.javaagent.tooling.InstrumentationModule { + public AsyncHttpClientInstrumentationModule() { + super("async-http-client", "async-http-client-1.9"); } @Override public String[] helperClassNames() { return new String[] { - packageName + ".GrizzlyClientTracer", packageName + ".GrizzlyInjectAdapter" + packageName + ".AsyncHttpClientTracer", packageName + ".AsyncHttpClientInjectAdapter" }; } @Override public List typeInstrumentations() { - return asList( - new GrizzlyClientRequestInstrumentation(), new GrizzlyClientResponseInstrumentation()); + return asList(new RequestInstrumentation(), new ResponseInstrumentation()); } @Override public Map contextStore() { return singletonMap("com.ning.http.client.AsyncHandler", Pair.class.getName()); } - - @Override - protected boolean defaultEnabled() { - return false; - } } diff --git a/instrumentation/grizzly-client-1.9/src/main/java/io/opentelemetry/javaagent/instrumentation/grizzly/client/GrizzlyClientTracer.java b/instrumentation/async-http-client-1.9/src/main/java/io/opentelemetry/javaagent/instrumentation/asynchttpclient/AsyncHttpClientTracer.java similarity index 73% rename from instrumentation/grizzly-client-1.9/src/main/java/io/opentelemetry/javaagent/instrumentation/grizzly/client/GrizzlyClientTracer.java rename to instrumentation/async-http-client-1.9/src/main/java/io/opentelemetry/javaagent/instrumentation/asynchttpclient/AsyncHttpClientTracer.java index 1393ffe1785d..48355b6e89c4 100644 --- a/instrumentation/grizzly-client-1.9/src/main/java/io/opentelemetry/javaagent/instrumentation/grizzly/client/GrizzlyClientTracer.java +++ b/instrumentation/async-http-client-1.9/src/main/java/io/opentelemetry/javaagent/instrumentation/asynchttpclient/AsyncHttpClientTracer.java @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -package io.opentelemetry.javaagent.instrumentation.grizzly.client; +package io.opentelemetry.javaagent.instrumentation.asynchttpclient; import com.ning.http.client.Request; import com.ning.http.client.Response; @@ -12,11 +12,11 @@ import java.net.URI; import java.net.URISyntaxException; -public class GrizzlyClientTracer extends HttpClientTracer { +public class AsyncHttpClientTracer extends HttpClientTracer { - private static final GrizzlyClientTracer TRACER = new GrizzlyClientTracer(); + private static final AsyncHttpClientTracer TRACER = new AsyncHttpClientTracer(); - public static GrizzlyClientTracer tracer() { + public static AsyncHttpClientTracer tracer() { return TRACER; } @@ -47,11 +47,11 @@ protected String responseHeader(Response response, String name) { @Override protected Setter getSetter() { - return GrizzlyInjectAdapter.SETTER; + return AsyncHttpClientInjectAdapter.SETTER; } @Override protected String getInstrumentationName() { - return "io.opentelemetry.javaagent.grizzly-client"; + return "io.opentelemetry.javaagent.async-http-client"; } } diff --git a/instrumentation/grizzly-client-1.9/src/main/java/io/opentelemetry/javaagent/instrumentation/grizzly/client/GrizzlyClientRequestAdvice.java b/instrumentation/async-http-client-1.9/src/main/java/io/opentelemetry/javaagent/instrumentation/asynchttpclient/RequestAdvice.java similarity index 78% rename from instrumentation/grizzly-client-1.9/src/main/java/io/opentelemetry/javaagent/instrumentation/grizzly/client/GrizzlyClientRequestAdvice.java rename to instrumentation/async-http-client-1.9/src/main/java/io/opentelemetry/javaagent/instrumentation/asynchttpclient/RequestAdvice.java index 165f77887a04..6d1ae8c5c392 100644 --- a/instrumentation/grizzly-client-1.9/src/main/java/io/opentelemetry/javaagent/instrumentation/grizzly/client/GrizzlyClientRequestAdvice.java +++ b/instrumentation/async-http-client-1.9/src/main/java/io/opentelemetry/javaagent/instrumentation/asynchttpclient/RequestAdvice.java @@ -3,9 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -package io.opentelemetry.javaagent.instrumentation.grizzly.client; - -import static io.opentelemetry.javaagent.instrumentation.grizzly.client.GrizzlyClientTracer.tracer; +package io.opentelemetry.javaagent.instrumentation.asynchttpclient; import com.ning.http.client.AsyncHandler; import com.ning.http.client.Request; @@ -17,17 +15,17 @@ import io.opentelemetry.javaagent.instrumentation.api.Pair; import net.bytebuddy.asm.Advice; -public class GrizzlyClientRequestAdvice { +public class RequestAdvice { @Advice.OnMethodEnter(suppress = Throwable.class) public static Scope onEnter( @Advice.Argument(0) Request request, @Advice.Argument(1) AsyncHandler handler) { Context parentContext = Java8BytecodeBridge.currentContext(); - Span span = tracer().startSpan(request); + Span span = AsyncHttpClientTracer.tracer().startSpan(request); InstrumentationContext.get(AsyncHandler.class, Pair.class) .put(handler, Pair.of(parentContext, span)); - return tracer().startScope(span, request); + return AsyncHttpClientTracer.tracer().startScope(span, request); } @Advice.OnMethodExit(onThrowable = Throwable.class, suppress = Throwable.class) diff --git a/instrumentation/grizzly-client-1.9/src/main/java/io/opentelemetry/javaagent/instrumentation/grizzly/client/GrizzlyClientRequestInstrumentation.java b/instrumentation/async-http-client-1.9/src/main/java/io/opentelemetry/javaagent/instrumentation/asynchttpclient/RequestInstrumentation.java similarity index 84% rename from instrumentation/grizzly-client-1.9/src/main/java/io/opentelemetry/javaagent/instrumentation/grizzly/client/GrizzlyClientRequestInstrumentation.java rename to instrumentation/async-http-client-1.9/src/main/java/io/opentelemetry/javaagent/instrumentation/asynchttpclient/RequestInstrumentation.java index b1f6bc88e5d7..d616b6374722 100644 --- a/instrumentation/grizzly-client-1.9/src/main/java/io/opentelemetry/javaagent/instrumentation/grizzly/client/GrizzlyClientRequestInstrumentation.java +++ b/instrumentation/async-http-client-1.9/src/main/java/io/opentelemetry/javaagent/instrumentation/asynchttpclient/RequestInstrumentation.java @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -package io.opentelemetry.javaagent.instrumentation.grizzly.client; +package io.opentelemetry.javaagent.instrumentation.asynchttpclient; import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.isPublic; @@ -16,7 +16,7 @@ import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; -final class GrizzlyClientRequestInstrumentation implements TypeInstrumentation { +final class RequestInstrumentation implements TypeInstrumentation { @Override public ElementMatcher typeMatcher() { @@ -30,6 +30,6 @@ public Map, String> transfor .and(takesArgument(0, named("com.ning.http.client.Request"))) .and(takesArgument(1, named("com.ning.http.client.AsyncHandler"))) .and(isPublic()), - GrizzlyClientRequestAdvice.class.getName()); + RequestAdvice.class.getName()); } } diff --git a/instrumentation/grizzly-client-1.9/src/main/java/io/opentelemetry/javaagent/instrumentation/grizzly/client/GrizzlyClientResponseAdvice.java b/instrumentation/async-http-client-1.9/src/main/java/io/opentelemetry/javaagent/instrumentation/asynchttpclient/ResponseAdvice.java similarity index 84% rename from instrumentation/grizzly-client-1.9/src/main/java/io/opentelemetry/javaagent/instrumentation/grizzly/client/GrizzlyClientResponseAdvice.java rename to instrumentation/async-http-client-1.9/src/main/java/io/opentelemetry/javaagent/instrumentation/asynchttpclient/ResponseAdvice.java index 5f81cdb88053..513ffc18deaa 100644 --- a/instrumentation/grizzly-client-1.9/src/main/java/io/opentelemetry/javaagent/instrumentation/grizzly/client/GrizzlyClientResponseAdvice.java +++ b/instrumentation/async-http-client-1.9/src/main/java/io/opentelemetry/javaagent/instrumentation/asynchttpclient/ResponseAdvice.java @@ -3,9 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -package io.opentelemetry.javaagent.instrumentation.grizzly.client; - -import static io.opentelemetry.javaagent.instrumentation.grizzly.client.GrizzlyClientTracer.tracer; +package io.opentelemetry.javaagent.instrumentation.asynchttpclient; import com.ning.http.client.AsyncCompletionHandler; import com.ning.http.client.AsyncHandler; @@ -18,7 +16,7 @@ import io.opentelemetry.javaagent.instrumentation.api.Pair; import net.bytebuddy.asm.Advice; -public class GrizzlyClientResponseAdvice { +public class ResponseAdvice { @Advice.OnMethodEnter(suppress = Throwable.class) public static Scope onEnter( @@ -33,7 +31,7 @@ public static Scope onEnter( contextStore.put(handler, null); } if (spanWithParent.hasRight()) { - tracer().end(spanWithParent.getRight(), response); + AsyncHttpClientTracer.tracer().end(spanWithParent.getRight(), response); } return spanWithParent.hasLeft() ? spanWithParent.getLeft().makeCurrent() : null; } diff --git a/instrumentation/grizzly-client-1.9/src/main/java/io/opentelemetry/javaagent/instrumentation/grizzly/client/GrizzlyClientResponseInstrumentation.java b/instrumentation/async-http-client-1.9/src/main/java/io/opentelemetry/javaagent/instrumentation/asynchttpclient/ResponseInstrumentation.java similarity index 86% rename from instrumentation/grizzly-client-1.9/src/main/java/io/opentelemetry/javaagent/instrumentation/grizzly/client/GrizzlyClientResponseInstrumentation.java rename to instrumentation/async-http-client-1.9/src/main/java/io/opentelemetry/javaagent/instrumentation/asynchttpclient/ResponseInstrumentation.java index 97e0c110d2d3..55e45aeec52a 100644 --- a/instrumentation/grizzly-client-1.9/src/main/java/io/opentelemetry/javaagent/instrumentation/grizzly/client/GrizzlyClientResponseInstrumentation.java +++ b/instrumentation/async-http-client-1.9/src/main/java/io/opentelemetry/javaagent/instrumentation/asynchttpclient/ResponseInstrumentation.java @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -package io.opentelemetry.javaagent.instrumentation.grizzly.client; +package io.opentelemetry.javaagent.instrumentation.asynchttpclient; import static io.opentelemetry.javaagent.tooling.ClassLoaderMatcher.hasClassesNamed; import static java.util.Collections.singletonMap; @@ -18,7 +18,7 @@ import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; -final class GrizzlyClientResponseInstrumentation implements TypeInstrumentation { +final class ResponseInstrumentation implements TypeInstrumentation { @Override public ElementMatcher classLoaderMatcher() { @@ -36,6 +36,6 @@ public Map, String> transfor named("onCompleted") .and(takesArgument(0, named("com.ning.http.client.Response"))) .and(isPublic()), - GrizzlyClientResponseAdvice.class.getName()); + ResponseAdvice.class.getName()); } } diff --git a/instrumentation/grizzly-client-1.9/src/test/groovy/GrizzlyAsyncHttpClientTest.groovy b/instrumentation/async-http-client-1.9/src/test/groovy/AsyncHttpClientTest.groovy similarity index 90% rename from instrumentation/grizzly-client-1.9/src/test/groovy/GrizzlyAsyncHttpClientTest.groovy rename to instrumentation/async-http-client-1.9/src/test/groovy/AsyncHttpClientTest.groovy index 892acb40d289..6fedc3e551fd 100644 --- a/instrumentation/grizzly-client-1.9/src/test/groovy/GrizzlyAsyncHttpClientTest.groovy +++ b/instrumentation/async-http-client-1.9/src/test/groovy/AsyncHttpClientTest.groovy @@ -13,11 +13,7 @@ import io.opentelemetry.instrumentation.test.base.HttpClientTest import spock.lang.AutoCleanup import spock.lang.Shared -class GrizzlyAsyncHttpClientTest extends HttpClientTest { - - static { - System.setProperty("otel.instrumentation.grizzly-client.enabled", "true") - } +class AsyncHttpClientTest extends HttpClientTest { @AutoCleanup @Shared diff --git a/instrumentation/grizzly-client-1.9/grizzly-client-1.9.gradle b/instrumentation/grizzly-client-1.9/grizzly-client-1.9.gradle deleted file mode 100644 index f7c1715c6281..000000000000 --- a/instrumentation/grizzly-client-1.9/grizzly-client-1.9.gradle +++ /dev/null @@ -1,24 +0,0 @@ -apply from: "$rootDir/gradle/instrumentation.gradle" - -muzzle { - pass { - group = "org.glassfish.grizzly" - module = "grizzly-http-client" - versions = "[1.9,1.16]" - assertInverse = true - } - pass { - group = "com.ning" - module = "async-http-client" - versions = "[1.9.0,)" - assertInverse = true - } -} - -dependencies { - library group: 'org.glassfish.grizzly', name: 'grizzly-http-client', version: '1.9' - // for some reason, the tests don't *load* until 1.12, but muzzles works as far back as 1.9 - testLibrary group: 'org.glassfish.grizzly', name: 'grizzly-http-client', version: '1.12' - - latestDepTestLibrary group: 'org.glassfish.grizzly', name: 'grizzly-http-client', version: '1.16' -} diff --git a/settings.gradle b/settings.gradle index 514fa5ac550e..4fc4704b8e91 100644 --- a/settings.gradle +++ b/settings.gradle @@ -62,6 +62,7 @@ include ':instrumentation:apache-httpclient:apache-httpclient-4.0' include ':instrumentation:armeria-1.0:javaagent' include ':instrumentation:armeria-1.0:library' include ':instrumentation:armeria-1.0:testing' +include ':instrumentation:async-http-client-1.9' include ':instrumentation:aws-lambda-1.0:javaagent' include ':instrumentation:aws-lambda-1.0:library' include ':instrumentation:aws-lambda-1.0:testing' @@ -89,7 +90,6 @@ include ':instrumentation:finatra-2.9' include ':instrumentation:geode-1.4' include ':instrumentation:google-http-client-1.19' include ':instrumentation:grizzly-2.0' -include ':instrumentation:grizzly-client-1.9' include ':instrumentation:grpc-1.5:javaagent' include ':instrumentation:grpc-1.5:library' include ':instrumentation:grpc-1.5:testing'