From f7d0eefed3622eea7a3dba290847560da9ee91c3 Mon Sep 17 00:00:00 2001 From: Andriy Redko Date: Sun, 16 Feb 2025 16:11:26 -0500 Subject: [PATCH] Update Apache HttpClient5 to 5.4.2 --- instrumentation/httpclient5/pom.xml | 3 +-- .../src/main/java/brave/httpclient5/HttpClientUtils.java | 4 ++-- .../java/brave/httpclient5/TracingHttpAsyncClient.java | 7 +++++-- .../brave/httpclient5/ITTracingCachingH2ClientBuilder.java | 3 +++ .../ITTracingCachingHttpAsyncClientBuilder.java | 3 +++ .../httpclient5/ITTracingCachingHttpClientBuilder.java | 3 +++ 6 files changed, 17 insertions(+), 6 deletions(-) diff --git a/instrumentation/httpclient5/pom.xml b/instrumentation/httpclient5/pom.xml index bb672deae..7affa5056 100644 --- a/instrumentation/httpclient5/pom.xml +++ b/instrumentation/httpclient5/pom.xml @@ -24,8 +24,7 @@ ${project.basedir}/../.. - - 5.3.1 + 5.4.1 diff --git a/instrumentation/httpclient5/src/main/java/brave/httpclient5/HttpClientUtils.java b/instrumentation/httpclient5/src/main/java/brave/httpclient5/HttpClientUtils.java index 8d3e3a4e1..c3294ba63 100644 --- a/instrumentation/httpclient5/src/main/java/brave/httpclient5/HttpClientUtils.java +++ b/instrumentation/httpclient5/src/main/java/brave/httpclient5/HttpClientUtils.java @@ -58,8 +58,8 @@ static boolean isLocalCached(HttpContext context, Span span) { if (!HAS_CLIENT_CACHE_SUPPORT) { return false; } - boolean cacheHit = CacheResponseStatus.CACHE_HIT == context.getAttribute( - HttpCacheContext.CACHE_RESPONSE_STATUS); + final HttpCacheContext cacheContext = HttpCacheContext.cast(context); + final boolean cacheHit = CacheResponseStatus.CACHE_HIT == cacheContext.getCacheResponseStatus(); if (cacheHit) { span.tag("http.cache_hit", ""); } diff --git a/instrumentation/httpclient5/src/main/java/brave/httpclient5/TracingHttpAsyncClient.java b/instrumentation/httpclient5/src/main/java/brave/httpclient5/TracingHttpAsyncClient.java index 07ec6a1e1..e312913cb 100644 --- a/instrumentation/httpclient5/src/main/java/brave/httpclient5/TracingHttpAsyncClient.java +++ b/instrumentation/httpclient5/src/main/java/brave/httpclient5/TracingHttpAsyncClient.java @@ -9,6 +9,7 @@ import java.io.IOException; import java.util.concurrent.Future; import org.apache.hc.client5.http.impl.async.CloseableHttpAsyncClient; +import org.apache.hc.client5.http.protocol.HttpClientContext; import org.apache.hc.core5.concurrent.FutureCallback; import org.apache.hc.core5.function.Supplier; import org.apache.hc.core5.http.HttpHost; @@ -58,15 +59,17 @@ protected Future doExecute( HandlerFactory pushHandlerFactory, HttpContext context, FutureCallback callback) { TraceContext invocationContext = currentTraceContext.get(); + + final HttpClientContext clientContext = HttpClientContext.castOrCreate(context); if (invocationContext != null) { - context.setAttribute(TraceContext.class.getName(), invocationContext); + clientContext.setAttribute(TraceContext.class.getName(), invocationContext); } if (callback != null && invocationContext != null) { callback = new TraceContextFutureCallback<>(callback, currentTraceContext, invocationContext); } - return delegate.execute(target, requestProducer, responseConsumer, pushHandlerFactory, context, + return delegate.execute(target, requestProducer, responseConsumer, pushHandlerFactory, clientContext, callback); } diff --git a/instrumentation/httpclient5/src/test/java/brave/httpclient5/ITTracingCachingH2ClientBuilder.java b/instrumentation/httpclient5/src/test/java/brave/httpclient5/ITTracingCachingH2ClientBuilder.java index 5983148c5..f37f021a5 100644 --- a/instrumentation/httpclient5/src/test/java/brave/httpclient5/ITTracingCachingH2ClientBuilder.java +++ b/instrumentation/httpclient5/src/test/java/brave/httpclient5/ITTracingCachingH2ClientBuilder.java @@ -9,10 +9,12 @@ import brave.propagation.SamplingFlags; import brave.propagation.TraceContext; import java.io.IOException; +import java.time.ZonedDateTime; import java.util.Arrays; import okhttp3.mockwebserver.MockResponse; import org.apache.hc.client5.http.impl.async.H2AsyncClientBuilder; import org.apache.hc.client5.http.impl.cache.CachingH2AsyncClientBuilder; +import org.apache.hc.client5.http.utils.DateUtils; import org.junit.jupiter.api.Test; import static brave.Span.Kind.CLIENT; @@ -33,6 +35,7 @@ protected H2AsyncClientBuilder newClientBuilder() { server.enqueue(new MockResponse() .addHeader("Content-Type", "text/plain") .addHeader("Cache-Control", "max-age=600, stale-while-revalidate=1200") + .addHeader("Date", DateUtils.FORMATTER_RFC1123.format(ZonedDateTime.now())) .setBody("Hello")); TraceContext parent = newTraceContext(SamplingFlags.SAMPLED); diff --git a/instrumentation/httpclient5/src/test/java/brave/httpclient5/ITTracingCachingHttpAsyncClientBuilder.java b/instrumentation/httpclient5/src/test/java/brave/httpclient5/ITTracingCachingHttpAsyncClientBuilder.java index 671094c7b..0e61867e3 100644 --- a/instrumentation/httpclient5/src/test/java/brave/httpclient5/ITTracingCachingHttpAsyncClientBuilder.java +++ b/instrumentation/httpclient5/src/test/java/brave/httpclient5/ITTracingCachingHttpAsyncClientBuilder.java @@ -9,10 +9,12 @@ import brave.propagation.SamplingFlags; import brave.propagation.TraceContext; import java.io.IOException; +import java.time.ZonedDateTime; import java.util.Arrays; import okhttp3.mockwebserver.MockResponse; import org.apache.hc.client5.http.impl.async.HttpAsyncClientBuilder; import org.apache.hc.client5.http.impl.cache.CachingHttpAsyncClientBuilder; +import org.apache.hc.client5.http.utils.DateUtils; import org.junit.jupiter.api.Test; import static brave.Span.Kind.CLIENT; @@ -32,6 +34,7 @@ protected HttpAsyncClientBuilder newClientBuilder() { server.enqueue(new MockResponse() .addHeader("Content-Type", "text/plain") .addHeader("Cache-Control", "max-age=600, stale-while-revalidate=1200") + .addHeader("Date", DateUtils.FORMATTER_RFC1123.format(ZonedDateTime.now())) .setBody("Hello")); TraceContext parent = newTraceContext(SamplingFlags.SAMPLED); diff --git a/instrumentation/httpclient5/src/test/java/brave/httpclient5/ITTracingCachingHttpClientBuilder.java b/instrumentation/httpclient5/src/test/java/brave/httpclient5/ITTracingCachingHttpClientBuilder.java index bd54906ad..9eb0cb85e 100644 --- a/instrumentation/httpclient5/src/test/java/brave/httpclient5/ITTracingCachingHttpClientBuilder.java +++ b/instrumentation/httpclient5/src/test/java/brave/httpclient5/ITTracingCachingHttpClientBuilder.java @@ -9,10 +9,12 @@ import brave.propagation.SamplingFlags; import brave.propagation.TraceContext; import java.io.IOException; +import java.time.ZonedDateTime; import java.util.Arrays; import okhttp3.mockwebserver.MockResponse; import org.apache.hc.client5.http.impl.cache.CachingHttpClientBuilder; import org.apache.hc.client5.http.impl.classic.CloseableHttpClient; +import org.apache.hc.client5.http.utils.DateUtils; import org.junit.jupiter.api.Test; import static brave.Span.Kind.CLIENT; @@ -32,6 +34,7 @@ protected CloseableHttpClient newClient(int port) { server.enqueue(new MockResponse() .addHeader("Content-Type", "text/plain") .addHeader("Cache-Control", "max-age=600, stale-while-revalidate=1200") + .addHeader("Date", DateUtils.FORMATTER_RFC1123.format(ZonedDateTime.now())) .setBody("Hello")); TraceContext parent = newTraceContext(SamplingFlags.SAMPLED);