Skip to content

Commit 7555f6c

Browse files
committed
Polish "Migrate to Brave 6 and Zipkin Reporter 3"
See gh-39049
1 parent 4b0bed2 commit 7555f6c

File tree

6 files changed

+37
-16
lines changed

6 files changed

+37
-16
lines changed

Diff for: spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/tracing/zipkin/ZipkinAutoConfiguration.java

+16-5
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2012-2023 the original author or authors.
2+
* Copyright 2012-2024 the original author or authors.
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -16,8 +16,10 @@
1616

1717
package org.springframework.boot.actuate.autoconfigure.tracing.zipkin;
1818

19-
import zipkin2.reporter.BytesMessageSender;
19+
import zipkin2.Span;
20+
import zipkin2.reporter.BytesEncoder;
2021
import zipkin2.reporter.Encoding;
22+
import zipkin2.reporter.SpanBytesEncoder;
2123

2224
import org.springframework.boot.actuate.autoconfigure.tracing.zipkin.ZipkinConfigurations.BraveConfiguration;
2325
import org.springframework.boot.actuate.autoconfigure.tracing.zipkin.ZipkinConfigurations.OpenTelemetryConfiguration;
@@ -41,7 +43,7 @@
4143
* @since 3.0.0
4244
*/
4345
@AutoConfiguration(after = RestTemplateAutoConfiguration.class)
44-
@ConditionalOnClass(BytesMessageSender.class)
46+
@ConditionalOnClass(Encoding.class)
4547
@Import({ SenderConfiguration.class, BraveConfiguration.class, OpenTelemetryConfiguration.class })
4648
@EnableConfigurationProperties(ZipkinProperties.class)
4749
public class ZipkinAutoConfiguration {
@@ -54,8 +56,17 @@ PropertiesZipkinConnectionDetails zipkinConnectionDetails(ZipkinProperties prope
5456

5557
@Bean
5658
@ConditionalOnMissingBean
57-
public Encoding encoding(ZipkinProperties properties) {
58-
return properties.getEncoding();
59+
Encoding encoding(ZipkinProperties properties) {
60+
return switch (properties.getEncoding()) {
61+
case JSON -> Encoding.JSON;
62+
case PROTO3 -> Encoding.PROTO3;
63+
};
64+
}
65+
66+
@Bean
67+
@ConditionalOnMissingBean(value = Span.class, parameterizedContainer = BytesEncoder.class)
68+
BytesEncoder<Span> zipkinSpanEncoder(Encoding encoding) {
69+
return SpanBytesEncoder.forEncoding(encoding);
5970
}
6071

6172
}

Diff for: spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/tracing/zipkin/ZipkinConfigurations.java

-7
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@
2626
import zipkin2.reporter.Encoding;
2727
import zipkin2.reporter.HttpEndpointSupplier;
2828
import zipkin2.reporter.HttpEndpointSuppliers;
29-
import zipkin2.reporter.SpanBytesEncoder;
3029
import zipkin2.reporter.brave.AsyncZipkinSpanHandler;
3130
import zipkin2.reporter.brave.MutableSpanBytesEncoder;
3231
import zipkin2.reporter.urlconnection.URLConnectionSender;
@@ -170,12 +169,6 @@ AsyncZipkinSpanHandler asyncZipkinSpanHandler(BytesMessageSender sender,
170169
@ConditionalOnClass(ZipkinSpanExporter.class)
171170
static class OpenTelemetryConfiguration {
172171

173-
@Bean
174-
@ConditionalOnMissingBean(value = Span.class, parameterizedContainer = BytesEncoder.class)
175-
BytesEncoder<Span> zipkinSpanEncoder(Encoding encoding) {
176-
return SpanBytesEncoder.forEncoding(encoding);
177-
}
178-
179172
@Bean
180173
@ConditionalOnMissingBean
181174
@ConditionalOnBean(BytesMessageSender.class)

Diff for: spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/tracing/zipkin/ZipkinProperties.java

+16-2
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,6 @@
1818

1919
import java.time.Duration;
2020

21-
import zipkin2.reporter.Encoding;
22-
2321
import org.springframework.boot.context.properties.ConfigurationProperties;
2422

2523
/**
@@ -83,4 +81,20 @@ public void setReadTimeout(Duration readTimeout) {
8381
this.readTimeout = readTimeout;
8482
}
8583

84+
/**
85+
* Zipkin message encoding.
86+
*/
87+
public enum Encoding {
88+
89+
/**
90+
* JSON.
91+
*/
92+
JSON,
93+
/**
94+
* Protocol Buffers v3.
95+
*/
96+
PROTO3
97+
98+
}
99+
86100
}

Diff for: spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/tracing/zipkin/ZipkinAutoConfigurationTests.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,8 @@ class ZipkinAutoConfigurationTests {
4040
@Test
4141
void shouldSupplyBeans() {
4242
this.contextRunner.run((context) -> assertThat(context).hasSingleBean(Encoding.class)
43-
.hasSingleBean(PropertiesZipkinConnectionDetails.class));
43+
.hasSingleBean(PropertiesZipkinConnectionDetails.class)
44+
.hasBean("zipkinSpanEncoder"));
4445
}
4546

4647
@Test

Diff for: spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/tracing/zipkin/ZipkinConfigurationsOpenTelemetryConfigurationTests.java

+2
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
import org.springframework.context.annotation.Configuration;
3232

3333
import static org.assertj.core.api.Assertions.assertThat;
34+
import static org.mockito.Mockito.mock;
3435

3536
/**
3637
* Tests for {@link OpenTelemetryConfiguration}.
@@ -48,6 +49,7 @@ class ZipkinConfigurationsOpenTelemetryConfigurationTests {
4849
@Test
4950
void shouldSupplyBeans() {
5051
this.contextRunner.withUserConfiguration(SenderConfiguration.class)
52+
.withBean(BytesEncoder.class, () -> mock(BytesEncoder.class))
5153
.run((context) -> assertThat(context).hasSingleBean(ZipkinSpanExporter.class));
5254
}
5355

Diff for: spring-boot-project/spring-boot-dependencies/build.gradle

+1-1
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,7 @@ bom {
112112
library("Zipkin Reporter", "3.3.0") {
113113
group("io.zipkin.reporter2") {
114114
imports = [
115-
"zipkin-reporter-bom"
115+
"zipkin-reporter-bom"
116116
]
117117
}
118118
}

0 commit comments

Comments
 (0)