Merge branch '2.2.x'
This commit is contained in:
@@ -33,7 +33,7 @@
|
||||
<maven.compiler.target>1.8</maven.compiler.target>
|
||||
<maven.compiler.source>1.8</maven.compiler.source>
|
||||
<spring-boot.version>2.3.0.BUILD-SNAPSHOT</spring-boot.version>
|
||||
<brave.version>5.12.2</brave.version>
|
||||
<brave.version>5.12.3</brave.version>
|
||||
<okhttp.version>3.14.6</okhttp.version>
|
||||
</properties>
|
||||
|
||||
|
||||
2
pom.xml
2
pom.xml
@@ -243,7 +243,7 @@
|
||||
<spring-cloud-stream.version>3.1.0.BUILD-SNAPSHOT</spring-cloud-stream.version>
|
||||
<spring-cloud-netflix.version>3.0.0-SNAPSHOT</spring-cloud-netflix.version>
|
||||
<spring-cloud-openfeign.version>3.0.0-SNAPSHOT</spring-cloud-openfeign.version>
|
||||
<brave.version>5.12.2</brave.version>
|
||||
<brave.version>5.12.3</brave.version>
|
||||
<spring-security-boot-autoconfigure.version>2.1.7.RELEASE</spring-security-boot-autoconfigure.version>
|
||||
<disable.nohttp.checks>false</disable.nohttp.checks>
|
||||
<okhttp.version>3.14.6</okhttp.version>
|
||||
|
||||
@@ -16,7 +16,9 @@
|
||||
|
||||
package org.springframework.cloud.sleuth.autoconfig;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.Comparator;
|
||||
import java.util.List;
|
||||
|
||||
import brave.CurrentSpanCustomizer;
|
||||
@@ -37,6 +39,7 @@ import zipkin2.Span;
|
||||
import zipkin2.reporter.InMemoryReporterMetrics;
|
||||
import zipkin2.reporter.Reporter;
|
||||
import zipkin2.reporter.ReporterMetrics;
|
||||
import zipkin2.reporter.brave.ZipkinSpanHandler;
|
||||
import zipkin2.reporter.metrics.micrometer.MicrometerReporterMetrics;
|
||||
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
|
||||
@@ -82,6 +85,22 @@ public class TraceAutoConfiguration {
|
||||
*/
|
||||
public static final String DEFAULT_SERVICE_NAME = "default";
|
||||
|
||||
/**
|
||||
* Sort Zipkin Handlers last, so that redactions etc happen prior.
|
||||
*/
|
||||
static final Comparator<SpanHandler> SPAN_HANDLER_COMPARATOR = (o1, o2) -> {
|
||||
if (o1 instanceof ZipkinSpanHandler) {
|
||||
if (o2 instanceof ZipkinSpanHandler) {
|
||||
return 0;
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
else if (o2 instanceof ZipkinSpanHandler) {
|
||||
return -1;
|
||||
}
|
||||
return 0;
|
||||
};
|
||||
|
||||
@Bean
|
||||
@ConditionalOnMissingBean
|
||||
// NOTE: stable bean name as might be used outside sleuth
|
||||
@@ -110,9 +129,21 @@ public class TraceAutoConfiguration {
|
||||
customizer.customize(builder);
|
||||
}
|
||||
}
|
||||
|
||||
reorderZipkinHandlersLast(builder);
|
||||
return builder.build();
|
||||
}
|
||||
|
||||
private void reorderZipkinHandlersLast(Tracing.Builder builder) {
|
||||
List<SpanHandler> configuredSpanHandlers = new ArrayList<>(
|
||||
builder.spanHandlers());
|
||||
configuredSpanHandlers.sort(SPAN_HANDLER_COMPARATOR);
|
||||
builder.clearSpanHandlers();
|
||||
for (SpanHandler spanHandler : configuredSpanHandlers) {
|
||||
builder.addSpanHandler(spanHandler);
|
||||
}
|
||||
}
|
||||
|
||||
@Bean(name = TRACER_BEAN_NAME)
|
||||
@ConditionalOnMissingBean
|
||||
Tracer tracer(Tracing tracing) {
|
||||
|
||||
@@ -62,7 +62,7 @@ import org.springframework.lang.Nullable;
|
||||
* @since 2.0.0
|
||||
*/
|
||||
@Configuration(proxyBeanMethods = false)
|
||||
@EnableConfigurationProperties(SleuthBaggageProperties.class)
|
||||
@EnableConfigurationProperties({ SleuthProperties.class, SleuthBaggageProperties.class })
|
||||
class TraceBaggageConfiguration {
|
||||
|
||||
static final Log logger = LogFactory.getLog(TraceBaggageConfiguration.class);
|
||||
|
||||
@@ -33,8 +33,7 @@ import org.springframework.context.annotation.Configuration;
|
||||
public class TraceAutoConfigurationPropagationCustomizationTests {
|
||||
|
||||
// Default for spring-messaging is on 2.2.x is MULTI, though 3.x it is
|
||||
// SINGLE_NO_PARENT
|
||||
// spring-cloud/spring-cloud-sleuth#1607
|
||||
// SINGLE_NO_PARENT spring-cloud/spring-cloud-sleuth#1607
|
||||
Propagation.Factory defaultB3Propagation = B3Propagation.newFactoryBuilder()
|
||||
.injectFormat(Format.SINGLE_NO_PARENT).build();
|
||||
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
|
||||
package org.springframework.cloud.sleuth.autoconfig;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import brave.Tracing;
|
||||
@@ -23,6 +24,7 @@ import brave.baggage.BaggageField;
|
||||
import brave.baggage.BaggagePropagation;
|
||||
import brave.baggage.BaggagePropagationConfig.SingleBaggageField;
|
||||
import brave.baggage.BaggagePropagationCustomizer;
|
||||
import brave.handler.SpanHandler;
|
||||
import brave.propagation.B3SinglePropagation;
|
||||
import brave.propagation.Propagation;
|
||||
import brave.propagation.TraceContextOrSamplingFlags;
|
||||
@@ -35,6 +37,7 @@ import org.junit.jupiter.api.Test;
|
||||
import zipkin2.reporter.InMemoryReporterMetrics;
|
||||
import zipkin2.reporter.Reporter;
|
||||
import zipkin2.reporter.ReporterMetrics;
|
||||
import zipkin2.reporter.brave.ZipkinSpanHandler;
|
||||
import zipkin2.reporter.metrics.micrometer.MicrometerReporterMetrics;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
@@ -44,11 +47,33 @@ import org.springframework.boot.test.context.runner.ApplicationContextRunner;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
import static org.mockito.Mockito.mock;
|
||||
import static org.springframework.cloud.sleuth.autoconfig.TraceAutoConfiguration.SPAN_HANDLER_COMPARATOR;
|
||||
|
||||
public class TraceAutoConfigurationTests {
|
||||
|
||||
private final ApplicationContextRunner contextRunner = new ApplicationContextRunner()
|
||||
.withConfiguration(AutoConfigurations.of(TraceAutoConfiguration.class));
|
||||
|
||||
@Test
|
||||
void span_handler_comparator() {
|
||||
SpanHandler handler1 = mock(SpanHandler.class);
|
||||
SpanHandler handler2 = mock(SpanHandler.class);
|
||||
ZipkinSpanHandler zipkin1 = mock(ZipkinSpanHandler.class);
|
||||
ZipkinSpanHandler zipkin2 = mock(ZipkinSpanHandler.class);
|
||||
|
||||
ArrayList<SpanHandler> spanHandlers = new ArrayList<>();
|
||||
spanHandlers.add(handler1);
|
||||
spanHandlers.add(zipkin1);
|
||||
spanHandlers.add(handler2);
|
||||
spanHandlers.add(zipkin2);
|
||||
|
||||
spanHandlers.sort(SPAN_HANDLER_COMPARATOR);
|
||||
|
||||
assertThat(spanHandlers).containsExactly(handler1, handler2, zipkin1, zipkin2);
|
||||
}
|
||||
|
||||
@Test
|
||||
void should_apply_micrometer_reporter_metrics_when_meter_registry_bean_present() {
|
||||
this.contextRunner.withUserConfiguration(WithMeterRegistry.class)
|
||||
|
||||
@@ -31,7 +31,7 @@
|
||||
<name>spring-cloud-sleuth-dependencies</name>
|
||||
<description>Spring Cloud Sleuth Dependencies</description>
|
||||
<properties>
|
||||
<brave.version>5.12.2</brave.version>
|
||||
<brave.version>5.12.3</brave.version>
|
||||
<brave.opentracing.version>0.37.2</brave.opentracing.version>
|
||||
<grpc.spring.boot.version>3.4.1</grpc.spring.boot.version>
|
||||
</properties>
|
||||
|
||||
@@ -170,7 +170,7 @@ abstract class ITSpringConfiguredReactorClient
|
||||
|
||||
assertThat(server.getRequestCount()).isOne();
|
||||
|
||||
this.spanHandler.takeRemoteSpanWithErrorMessage(CLIENT, "CANCELLED");
|
||||
this.testSpanHandler.takeRemoteSpanWithErrorMessage(CLIENT, "CANCELLED");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user