diff --git a/pom.xml b/pom.xml
index ad600ecae..bca53de35 100644
--- a/pom.xml
+++ b/pom.xml
@@ -274,7 +274,7 @@
2.1.0.BUILD-SNAPSHOT
2.1.0.BUILD-SNAPSHOT
5.2.0
- 2.0.0.RELEASE
+ 2.0.4.RELEASE
diff --git a/spring-cloud-sleuth-core/pom.xml b/spring-cloud-sleuth-core/pom.xml
index 924ec10da..e8882d5e5 100644
--- a/spring-cloud-sleuth-core/pom.xml
+++ b/spring-cloud-sleuth-core/pom.xml
@@ -52,6 +52,11 @@
reactor-core
true
+
+ io.projectreactor.netty
+ reactor-netty
+ true
+
org.reactivestreams
reactive-streams
@@ -107,6 +112,11 @@
2.2.0.RELEASE
true
+
+ org.springframework.boot
+ spring-boot-starter-security
+ true
+
org.springframework
spring-context
diff --git a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/autoconfig/TraceAutoConfiguration.java b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/autoconfig/TraceAutoConfiguration.java
index 2244c40e8..6046afe72 100644
--- a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/autoconfig/TraceAutoConfiguration.java
+++ b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/autoconfig/TraceAutoConfiguration.java
@@ -134,7 +134,7 @@ public class TraceAutoConfiguration {
}
@Bean
- CurrentTraceContext currentTraceContext(CurrentTraceContext.Builder builder) {
+ CurrentTraceContext sleuthCurrentTraceContext(CurrentTraceContext.Builder builder) {
for (CurrentTraceContext.ScopeDecorator scopeDecorator : this.scopeDecorators) {
builder.addScopeDecorator(scopeDecorator);
}
diff --git a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/async/AsyncAutoConfiguration.java b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/async/AsyncAutoConfiguration.java
index 9c0580992..5b9facb0e 100644
--- a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/async/AsyncAutoConfiguration.java
+++ b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/async/AsyncAutoConfiguration.java
@@ -27,7 +27,6 @@ import org.springframework.scheduling.annotation.AsyncConfigurer;
* @author Jesus Alonso
* @since 2.1.0
*/
-
@Configuration
@EnableConfigurationProperties(SleuthAsyncProperties.class)
public class AsyncAutoConfiguration {
diff --git a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/web/client/TraceWebClientAutoConfiguration.java b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/web/client/TraceWebClientAutoConfiguration.java
index 04507b6df..12d365307 100644
--- a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/web/client/TraceWebClientAutoConfiguration.java
+++ b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/web/client/TraceWebClientAutoConfiguration.java
@@ -17,15 +17,12 @@
package org.springframework.cloud.sleuth.instrument.web.client;
import java.io.IOException;
-import java.nio.charset.Charset;
-import java.nio.file.Path;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.atomic.AtomicReference;
-import java.util.function.Consumer;
-import java.util.function.Function;
+import java.util.function.BiFunction;
import brave.Span;
import brave.Tracer;
@@ -36,8 +33,6 @@ import brave.httpclient.TracingHttpClientBuilder;
import brave.propagation.Propagation;
import brave.propagation.TraceContext;
import brave.spring.web.TracingClientHttpRequestInterceptor;
-import io.netty.buffer.ByteBuf;
-import io.netty.buffer.ByteBufAllocator;
import io.netty.handler.codec.http.HttpHeaders;
import io.netty.handler.codec.http.HttpMethod;
import io.netty.handler.codec.http.HttpVersion;
@@ -51,7 +46,6 @@ import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Pointcut;
import org.reactivestreams.Publisher;
-import org.reactivestreams.Subscriber;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.ListableBeanFactory;
@@ -76,16 +70,11 @@ import org.springframework.http.client.ClientHttpResponse;
import org.springframework.security.oauth2.client.OAuth2RestTemplate;
import org.springframework.web.client.RestTemplate;
import org.springframework.web.reactive.function.client.WebClient;
-import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;
-import reactor.ipc.netty.NettyContext;
-import reactor.ipc.netty.NettyOutbound;
-import reactor.ipc.netty.NettyPipeline;
-import reactor.ipc.netty.channel.data.FileChunkedStrategy;
-import reactor.ipc.netty.http.client.HttpClient;
-import reactor.ipc.netty.http.client.HttpClientRequest;
-import reactor.ipc.netty.http.client.HttpClientResponse;
-import reactor.ipc.netty.http.websocket.WebsocketOutbound;
+import reactor.netty.NettyOutbound;
+import reactor.netty.http.client.HttpClient;
+import reactor.netty.http.client.HttpClientRequest;
+import reactor.netty.http.client.HttpClientResponse;
/**
* {@link org.springframework.boot.autoconfigure.EnableAutoConfiguration
@@ -309,17 +298,16 @@ class NettyAspect {
this.instrumentation = TracingHttpClientInstrumentation.create(httpTracing);
}
- @Pointcut("execution(public * reactor.ipc.netty.http.client.HttpClient.request(..)) && args(method, url, handler)")
- private void anyHttpClientRequestSending(HttpMethod method,
- String url, Function super HttpClientRequest, ? extends Publisher> handler) { } // NOSONAR
+ @Pointcut("execution(public * reactor.netty.http.client.HttpClient.RequestSender.send(..)) && args(function)")
+ private void anyHttpClientRequestSending(
+ BiFunction super HttpClientRequest,? super NettyOutbound,? extends Publisher> function) { } // NOSONAR
- @Around("anyHttpClientRequestSending(method, url, handler)")
+ @Around("anyHttpClientRequestSending(function)")
public Object wrapHttpClientRequestSending(ProceedingJoinPoint pjp,
- HttpMethod method,
- String url, Function super HttpClientRequest, ? extends Publisher> handler) throws Throwable {
+ BiFunction super HttpClientRequest,? super NettyOutbound,? extends Publisher> function) throws Throwable {
return Mono.defer(() -> {
try {
- return this.instrumentation.wrapHttpClientRequestSending(pjp, method, url, handler);
+ return this.instrumentation.wrapHttpClientRequestSending(pjp, function);
}
catch (Throwable e) {
return Mono.error(e);
@@ -370,13 +358,12 @@ class TracingHttpClientInstrumentation {
}
Mono wrapHttpClientRequestSending(ProceedingJoinPoint pjp,
- HttpMethod method,
- String url, Function super HttpClientRequest, ? extends Publisher> handler) throws Throwable {
+ BiFunction super HttpClientRequest,? super NettyOutbound,? extends Publisher> function) throws Throwable {
// add headers and set CS
final Span currentSpan = this.tracer.currentSpan();
final AtomicReference span = new AtomicReference<>();
- Function> combinedFunction =
- req -> {
+ BiFunction> combinedFunction =
+ (req, nettyOutbound) -> {
try (Tracer.SpanInScope spanInScope = this.tracer.withSpanInScope(currentSpan)) {
io.netty.handler.codec.http.HttpHeaders originalHeaders = req
.requestHeaders().copy();
@@ -392,13 +379,13 @@ class TracingHttpClientInstrumentation {
if (log.isDebugEnabled()) {
log.debug("Created a new client span for Netty client");
}
- return handle(handler, new TracedHttpClientRequest(req, addedHeaders));
+ return handle(function, new TracedHttpClientRequest(req, addedHeaders), nettyOutbound);
}
}
};
// run
Mono responseMono =
- (Mono) pjp.proceed(new Object[] { method , url, combinedFunction });
+ (Mono) pjp.proceed(new Object[] { combinedFunction });
// get response
return responseMono.doOnSuccessOrError((httpClientResponse, throwable) -> {
try (Tracer.SpanInScope ws = this.tracer.withSpanInScope(span.get())) {
@@ -441,38 +428,6 @@ class TracingHttpClientInstrumentation {
return this;
}
- @Override public HttpClientRequest context(
- Consumer contextCallback) {
- this.delegate = this.delegate.context(contextCallback);
- return this;
- }
-
- @Override public HttpClientRequest chunkedTransfer(boolean chunked) {
- this.delegate = this.delegate.chunkedTransfer(chunked);
- return this;
- }
-
- @Override public HttpClientRequest options(
- Consumer super NettyPipeline.SendOptions> configurator) {
- this.delegate = this.delegate.options(configurator);
- return this;
- }
-
- @Override public HttpClientRequest followRedirect() {
- this.delegate = this.delegate.followRedirect();
- return this;
- }
-
- @Override public HttpClientRequest failOnClientError(boolean shouldFail) {
- this.delegate = this.delegate.failOnClientError(shouldFail);
- return this;
- }
-
- @Override public HttpClientRequest failOnServerError(boolean shouldFail) {
- this.delegate = this.delegate.failOnServerError(shouldFail);
- return this;
- }
-
@Override public boolean hasSentHeaders() {
return this.delegate.hasSentHeaders();
}
@@ -498,12 +453,6 @@ class TracingHttpClientInstrumentation {
return this;
}
- @Override public HttpClientRequest onWriteIdle(long idleTimeout,
- Runnable onWriteIdle) {
- this.delegate = this.delegate.onWriteIdle(idleTimeout, onWriteIdle);
- return this;
- }
-
@Override public String[] redirectedFrom() {
return this.delegate.redirectedFrom();
}
@@ -512,99 +461,6 @@ class TracingHttpClientInstrumentation {
return this.delegate.requestHeaders();
}
- @Override public Mono send() {
- return this.delegate.send();
- }
-
- @Override public Flux sendForm(Consumer
-
- org.springframework.cloud
- spring-cloud-sleuth-reactor
- ${project.version}
-
org.springframework.cloud
spring-cloud-sleuth-zipkin-legacy
@@ -64,11 +59,6 @@
spring-cloud-sleuth-zipkin-stream
${project.version}
-
- org.springframework.cloud
- spring-cloud-starter-zipkin-legacy
- ${project.version}
-
org.springframework.cloud
spring-cloud-starter-zipkin