From 10261ac77294c60d634cf84630b125773aa64117 Mon Sep 17 00:00:00 2001 From: Javier Salinas Date: Thu, 2 Dec 2021 23:04:09 +0100 Subject: [PATCH] Fix ratpack netty version --- .../ratpack-1.4/javaagent/build.gradle.kts | 27 ++-------- .../ratpack-1.4/library/build.gradle.kts | 18 ------- .../ratpack/OpenTelemetryExecInitializer.java | 9 +++- .../client/OpenTelemetryHttpClient.java | 51 ++++++++++--------- .../RatpackHttpClientAttributesExtractor.java | 16 +++--- .../ratpack/client/RatpackHttpTracing.java | 5 +- .../client/RatpackHttpTracingBuilder.java | 8 ++- .../client/InstrumentedHttpClientTest.groovy | 5 ++ 8 files changed, 58 insertions(+), 81 deletions(-) diff --git a/instrumentation/ratpack-1.4/javaagent/build.gradle.kts b/instrumentation/ratpack-1.4/javaagent/build.gradle.kts index f329c966a1e0..eb1393b6a4e5 100644 --- a/instrumentation/ratpack-1.4/javaagent/build.gradle.kts +++ b/instrumentation/ratpack-1.4/javaagent/build.gradle.kts @@ -6,41 +6,20 @@ muzzle { pass { group.set("io.ratpack") module.set("ratpack-core") - versions.set("[1.4.0,)") + versions.set("[1.7.0,)") } } dependencies { - library("io.ratpack:ratpack-core:1.4.0") + library("io.ratpack:ratpack-core:1.7.0") implementation(project(":instrumentation:netty:netty-4.1:javaagent")) testImplementation(project(":instrumentation:ratpack-1.4:testing")) - // 1.4.0 has a bug which makes tests flaky - // (https://github.com/ratpack/ratpack/commit/dde536ac138a76c34df03a0642c88d64edde688e) - testLibrary("io.ratpack:ratpack-test:1.4.1") + testLibrary("io.ratpack:ratpack-test:1.7.0") if (JavaVersion.current().isCompatibleWith(JavaVersion.VERSION_11)) { testImplementation("com.sun.activation:jakarta.activation:1.2.2") } } - -// Requires old Guava. Can't use enforcedPlatform since predates BOM -configurations.testRuntimeClasspath.resolutionStrategy.force("com.google.guava:guava:19.0") - -// to allow all tests to pass we need to choose a specific netty version -if (!(findProperty("testLatestDeps") as Boolean)) { - configurations.configureEach { - if (!name.contains("muzzle")) { - resolutionStrategy { - eachDependency { - // specifying a fixed version for all libraries with io.netty group - if (requested.group == "io.netty") { - useVersion("4.1.31.Final") - } - } - } - } - } -} diff --git a/instrumentation/ratpack-1.4/library/build.gradle.kts b/instrumentation/ratpack-1.4/library/build.gradle.kts index 75db606ee7cc..efff40972fad 100644 --- a/instrumentation/ratpack-1.4/library/build.gradle.kts +++ b/instrumentation/ratpack-1.4/library/build.gradle.kts @@ -8,8 +8,6 @@ dependencies { testImplementation(project(":instrumentation:ratpack-1.4:testing")) - // 1.4.0 has a bug which makes tests flaky - // (https://github.com/ratpack/ratpack/commit/dde536ac138a76c34df03a0642c88d64edde688e) testLibrary("io.ratpack:ratpack-test:1.7.0") testLibrary("io.ratpack:ratpack-guice:1.7.0") @@ -17,19 +15,3 @@ dependencies { testImplementation("com.sun.activation:jakarta.activation:1.2.2") } } - -// to allow all tests to pass we need to choose a specific netty version -if (!(findProperty("testLatestDeps") as Boolean)) { - configurations.configureEach { - if (!name.contains("muzzle")) { - resolutionStrategy { - eachDependency { - // specifying a fixed version for all libraries with io.netty group - if (requested.group == "io.netty") { - useVersion("4.1.63.Final") - } - } - } - } - } -} diff --git a/instrumentation/ratpack-1.4/library/src/main/java/io/opentelemetry/instrumentation/ratpack/OpenTelemetryExecInitializer.java b/instrumentation/ratpack-1.4/library/src/main/java/io/opentelemetry/instrumentation/ratpack/OpenTelemetryExecInitializer.java index 296b97368da7..fd3993c81040 100644 --- a/instrumentation/ratpack-1.4/library/src/main/java/io/opentelemetry/instrumentation/ratpack/OpenTelemetryExecInitializer.java +++ b/instrumentation/ratpack-1.4/library/src/main/java/io/opentelemetry/instrumentation/ratpack/OpenTelemetryExecInitializer.java @@ -1,3 +1,8 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + package io.opentelemetry.instrumentation.ratpack; import io.opentelemetry.context.Context; @@ -5,12 +10,12 @@ import ratpack.exec.Execution; import ratpack.http.client.RequestSpec; - public final class OpenTelemetryExecInitializer implements ExecInitializer { @Override public void init(Execution execution) { - execution.maybeParent() + execution + .maybeParent() .flatMap(parent -> parent.maybeGet(ContextHolder.class)) .ifPresent(execution::add); } diff --git a/instrumentation/ratpack-1.4/library/src/main/java/io/opentelemetry/instrumentation/ratpack/client/OpenTelemetryHttpClient.java b/instrumentation/ratpack-1.4/library/src/main/java/io/opentelemetry/instrumentation/ratpack/client/OpenTelemetryHttpClient.java index 2b20ad1ca3a3..056fc05d50d1 100644 --- a/instrumentation/ratpack-1.4/library/src/main/java/io/opentelemetry/instrumentation/ratpack/client/OpenTelemetryHttpClient.java +++ b/instrumentation/ratpack-1.4/library/src/main/java/io/opentelemetry/instrumentation/ratpack/client/OpenTelemetryHttpClient.java @@ -24,28 +24,33 @@ final class OpenTelemetryHttpClient { } public HttpClient instrument(HttpClient httpClient) throws Exception { - return httpClient.copyWith(httpClientSpec -> { - httpClientSpec.requestIntercept(requestSpec -> { - Context otelCtx = instrumenter.start(Context.current(), requestSpec); - Span span = Span.fromContext(otelCtx); - String path = requestSpec.getUri().getPath(); - span.updateName(path); - span.setAttribute(SemanticAttributes.HTTP_ROUTE, path); - Execution.current() - .add(new OpenTelemetryExecInitializer.ContextHolder(otelCtx, requestSpec)); - }); - - httpClientSpec.responseIntercept(httpResponse -> { - OpenTelemetryExecInitializer.ContextHolder contextHolder = Execution.current() - .get(OpenTelemetryExecInitializer.ContextHolder.class); - instrumenter.end(contextHolder.context(), contextHolder.requestSpec(), httpResponse, null); - }); - - httpClientSpec.errorIntercept(ex -> { - OpenTelemetryExecInitializer.ContextHolder contextHolder = Execution.current() - .get(OpenTelemetryExecInitializer.ContextHolder.class); - instrumenter.end(contextHolder.context(), contextHolder.requestSpec(), null, ex); - }); - }); + return httpClient.copyWith( + httpClientSpec -> { + httpClientSpec.requestIntercept( + requestSpec -> { + Context otelCtx = instrumenter.start(Context.current(), requestSpec); + Span span = Span.fromContext(otelCtx); + String path = requestSpec.getUri().getPath(); + span.updateName(path); + span.setAttribute(SemanticAttributes.HTTP_ROUTE, path); + Execution.current() + .add(new OpenTelemetryExecInitializer.ContextHolder(otelCtx, requestSpec)); + }); + + httpClientSpec.responseIntercept( + httpResponse -> { + OpenTelemetryExecInitializer.ContextHolder contextHolder = + Execution.current().get(OpenTelemetryExecInitializer.ContextHolder.class); + instrumenter.end( + contextHolder.context(), contextHolder.requestSpec(), httpResponse, null); + }); + + httpClientSpec.errorIntercept( + ex -> { + OpenTelemetryExecInitializer.ContextHolder contextHolder = + Execution.current().get(OpenTelemetryExecInitializer.ContextHolder.class); + instrumenter.end(contextHolder.context(), contextHolder.requestSpec(), null, ex); + }); + }); } } diff --git a/instrumentation/ratpack-1.4/library/src/main/java/io/opentelemetry/instrumentation/ratpack/client/RatpackHttpClientAttributesExtractor.java b/instrumentation/ratpack-1.4/library/src/main/java/io/opentelemetry/instrumentation/ratpack/client/RatpackHttpClientAttributesExtractor.java index 1b523b6e2ef5..444f4dd4326d 100644 --- a/instrumentation/ratpack-1.4/library/src/main/java/io/opentelemetry/instrumentation/ratpack/client/RatpackHttpClientAttributesExtractor.java +++ b/instrumentation/ratpack-1.4/library/src/main/java/io/opentelemetry/instrumentation/ratpack/client/RatpackHttpClientAttributesExtractor.java @@ -44,15 +44,15 @@ protected List requestHeader(RequestSpec requestSpec, String name) { @Nullable @Override - protected Long requestContentLength(RequestSpec requestSpec, - @Nullable HttpResponse httpResponse) { + protected Long requestContentLength( + RequestSpec requestSpec, @Nullable HttpResponse httpResponse) { return null; } @Nullable @Override - protected Long requestContentLengthUncompressed(RequestSpec requestSpec, - @Nullable HttpResponse httpResponse) { + protected Long requestContentLengthUncompressed( + RequestSpec requestSpec, @Nullable HttpResponse httpResponse) { return null; } @@ -70,14 +70,14 @@ protected Long responseContentLength(RequestSpec requestSpec, HttpResponse httpR @Nullable @Override - protected Long responseContentLengthUncompressed(RequestSpec requestSpec, - HttpResponse httpResponse) { + protected Long responseContentLengthUncompressed( + RequestSpec requestSpec, HttpResponse httpResponse) { return null; } @Override - protected List responseHeader(RequestSpec requestSpec, HttpResponse httpResponse, - String name) { + protected List responseHeader( + RequestSpec requestSpec, HttpResponse httpResponse, String name) { return httpResponse.getHeaders().getAll(name); } } diff --git a/instrumentation/ratpack-1.4/library/src/main/java/io/opentelemetry/instrumentation/ratpack/client/RatpackHttpTracing.java b/instrumentation/ratpack-1.4/library/src/main/java/io/opentelemetry/instrumentation/ratpack/client/RatpackHttpTracing.java index edcfe9ed8817..a03be65ec29e 100644 --- a/instrumentation/ratpack-1.4/library/src/main/java/io/opentelemetry/instrumentation/ratpack/client/RatpackHttpTracing.java +++ b/instrumentation/ratpack-1.4/library/src/main/java/io/opentelemetry/instrumentation/ratpack/client/RatpackHttpTracing.java @@ -19,7 +19,10 @@ public static RatpackHttpTracing create(OpenTelemetry openTelemetry) { return builder(openTelemetry).build(); } - /** Returns a new {@link RatpackHttpTracingBuilder} configured with the given {@link OpenTelemetry}. */ + /** + * Returns a new {@link RatpackHttpTracingBuilder} configured with the given {@link + * OpenTelemetry}. + */ public static RatpackHttpTracingBuilder builder(OpenTelemetry openTelemetry) { return new RatpackHttpTracingBuilder(openTelemetry); } diff --git a/instrumentation/ratpack-1.4/library/src/main/java/io/opentelemetry/instrumentation/ratpack/client/RatpackHttpTracingBuilder.java b/instrumentation/ratpack-1.4/library/src/main/java/io/opentelemetry/instrumentation/ratpack/client/RatpackHttpTracingBuilder.java index 08ddbef6bfe5..cdd06e6ef239 100644 --- a/instrumentation/ratpack-1.4/library/src/main/java/io/opentelemetry/instrumentation/ratpack/client/RatpackHttpTracingBuilder.java +++ b/instrumentation/ratpack-1.4/library/src/main/java/io/opentelemetry/instrumentation/ratpack/client/RatpackHttpTracingBuilder.java @@ -28,8 +28,8 @@ public final class RatpackHttpTracingBuilder { private final OpenTelemetry openTelemetry; - private final List> additionalExtractors = - new ArrayList<>(); + private final List> + additionalExtractors = new ArrayList<>(); private CapturedHttpHeaders capturedHttpHeaders = CapturedHttpHeaders.client(Config.get()); RatpackHttpTracingBuilder(OpenTelemetry openTelemetry) { @@ -66,9 +66,7 @@ public RatpackHttpTracing build() { Instrumenter instrumenter = Instrumenter.builder( - openTelemetry, - INSTRUMENTATION_NAME, - HttpSpanNameExtractor.create(httpAttributes)) + openTelemetry, INSTRUMENTATION_NAME, HttpSpanNameExtractor.create(httpAttributes)) .setSpanStatusExtractor(HttpSpanStatusExtractor.create(httpAttributes)) .addAttributesExtractor(netAttributes) .addAttributesExtractor(httpAttributes) diff --git a/instrumentation/ratpack-1.4/library/src/test/groovy/io/opentelemetry/instrumentation/ratpack/client/InstrumentedHttpClientTest.groovy b/instrumentation/ratpack-1.4/library/src/test/groovy/io/opentelemetry/instrumentation/ratpack/client/InstrumentedHttpClientTest.groovy index 9724d375c6f5..8264e08e7bbe 100644 --- a/instrumentation/ratpack-1.4/library/src/test/groovy/io/opentelemetry/instrumentation/ratpack/client/InstrumentedHttpClientTest.groovy +++ b/instrumentation/ratpack-1.4/library/src/test/groovy/io/opentelemetry/instrumentation/ratpack/client/InstrumentedHttpClientTest.groovy @@ -1,3 +1,8 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + package io.opentelemetry.instrumentation.ratpack.client import io.opentelemetry.api.trace.SpanKind