From 7555f6c71ec84984d31f62a001d24afb4152f3c8 Mon Sep 17 00:00:00 2001 From: Moritz Halbritter Date: Tue, 20 Feb 2024 12:12:39 +0100 Subject: [PATCH] Polish "Migrate to Brave 6 and Zipkin Reporter 3" See gh-39049 --- .../zipkin/ZipkinAutoConfiguration.java | 21 ++++++++++++++----- .../tracing/zipkin/ZipkinConfigurations.java | 7 ------- .../tracing/zipkin/ZipkinProperties.java | 18 ++++++++++++++-- .../zipkin/ZipkinAutoConfigurationTests.java | 3 ++- ...ationsOpenTelemetryConfigurationTests.java | 2 ++ .../spring-boot-dependencies/build.gradle | 2 +- 6 files changed, 37 insertions(+), 16 deletions(-) diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/tracing/zipkin/ZipkinAutoConfiguration.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/tracing/zipkin/ZipkinAutoConfiguration.java index 6c70fc0ebad..ebb1e4c7818 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/tracing/zipkin/ZipkinAutoConfiguration.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/tracing/zipkin/ZipkinAutoConfiguration.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,8 +16,10 @@ package org.springframework.boot.actuate.autoconfigure.tracing.zipkin; -import zipkin2.reporter.BytesMessageSender; +import zipkin2.Span; +import zipkin2.reporter.BytesEncoder; import zipkin2.reporter.Encoding; +import zipkin2.reporter.SpanBytesEncoder; import org.springframework.boot.actuate.autoconfigure.tracing.zipkin.ZipkinConfigurations.BraveConfiguration; import org.springframework.boot.actuate.autoconfigure.tracing.zipkin.ZipkinConfigurations.OpenTelemetryConfiguration; @@ -41,7 +43,7 @@ import org.springframework.context.annotation.Import; * @since 3.0.0 */ @AutoConfiguration(after = RestTemplateAutoConfiguration.class) -@ConditionalOnClass(BytesMessageSender.class) +@ConditionalOnClass(Encoding.class) @Import({ SenderConfiguration.class, BraveConfiguration.class, OpenTelemetryConfiguration.class }) @EnableConfigurationProperties(ZipkinProperties.class) public class ZipkinAutoConfiguration { @@ -54,8 +56,17 @@ public class ZipkinAutoConfiguration { @Bean @ConditionalOnMissingBean - public Encoding encoding(ZipkinProperties properties) { - return properties.getEncoding(); + Encoding encoding(ZipkinProperties properties) { + return switch (properties.getEncoding()) { + case JSON -> Encoding.JSON; + case PROTO3 -> Encoding.PROTO3; + }; + } + + @Bean + @ConditionalOnMissingBean(value = Span.class, parameterizedContainer = BytesEncoder.class) + BytesEncoder zipkinSpanEncoder(Encoding encoding) { + return SpanBytesEncoder.forEncoding(encoding); } } diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/tracing/zipkin/ZipkinConfigurations.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/tracing/zipkin/ZipkinConfigurations.java index dc7d93cd264..f19e9d96418 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/tracing/zipkin/ZipkinConfigurations.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/tracing/zipkin/ZipkinConfigurations.java @@ -26,7 +26,6 @@ import zipkin2.reporter.BytesMessageSender; import zipkin2.reporter.Encoding; import zipkin2.reporter.HttpEndpointSupplier; import zipkin2.reporter.HttpEndpointSuppliers; -import zipkin2.reporter.SpanBytesEncoder; import zipkin2.reporter.brave.AsyncZipkinSpanHandler; import zipkin2.reporter.brave.MutableSpanBytesEncoder; import zipkin2.reporter.urlconnection.URLConnectionSender; @@ -170,12 +169,6 @@ class ZipkinConfigurations { @ConditionalOnClass(ZipkinSpanExporter.class) static class OpenTelemetryConfiguration { - @Bean - @ConditionalOnMissingBean(value = Span.class, parameterizedContainer = BytesEncoder.class) - BytesEncoder zipkinSpanEncoder(Encoding encoding) { - return SpanBytesEncoder.forEncoding(encoding); - } - @Bean @ConditionalOnMissingBean @ConditionalOnBean(BytesMessageSender.class) diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/tracing/zipkin/ZipkinProperties.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/tracing/zipkin/ZipkinProperties.java index 4642e88c840..4b8f2698afc 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/tracing/zipkin/ZipkinProperties.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/tracing/zipkin/ZipkinProperties.java @@ -18,8 +18,6 @@ package org.springframework.boot.actuate.autoconfigure.tracing.zipkin; import java.time.Duration; -import zipkin2.reporter.Encoding; - import org.springframework.boot.context.properties.ConfigurationProperties; /** @@ -83,4 +81,20 @@ public class ZipkinProperties { this.readTimeout = readTimeout; } + /** + * Zipkin message encoding. + */ + public enum Encoding { + + /** + * JSON. + */ + JSON, + /** + * Protocol Buffers v3. + */ + PROTO3 + + } + } diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/tracing/zipkin/ZipkinAutoConfigurationTests.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/tracing/zipkin/ZipkinAutoConfigurationTests.java index e70d9f308cd..e0fac436583 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/tracing/zipkin/ZipkinAutoConfigurationTests.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/tracing/zipkin/ZipkinAutoConfigurationTests.java @@ -40,7 +40,8 @@ class ZipkinAutoConfigurationTests { @Test void shouldSupplyBeans() { this.contextRunner.run((context) -> assertThat(context).hasSingleBean(Encoding.class) - .hasSingleBean(PropertiesZipkinConnectionDetails.class)); + .hasSingleBean(PropertiesZipkinConnectionDetails.class) + .hasBean("zipkinSpanEncoder")); } @Test diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/tracing/zipkin/ZipkinConfigurationsOpenTelemetryConfigurationTests.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/tracing/zipkin/ZipkinConfigurationsOpenTelemetryConfigurationTests.java index a32a49ffb6f..92f241c966f 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/tracing/zipkin/ZipkinConfigurationsOpenTelemetryConfigurationTests.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/tracing/zipkin/ZipkinConfigurationsOpenTelemetryConfigurationTests.java @@ -31,6 +31,7 @@ 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; /** * Tests for {@link OpenTelemetryConfiguration}. @@ -48,6 +49,7 @@ class ZipkinConfigurationsOpenTelemetryConfigurationTests { @Test void shouldSupplyBeans() { this.contextRunner.withUserConfiguration(SenderConfiguration.class) + .withBean(BytesEncoder.class, () -> mock(BytesEncoder.class)) .run((context) -> assertThat(context).hasSingleBean(ZipkinSpanExporter.class)); } diff --git a/spring-boot-project/spring-boot-dependencies/build.gradle b/spring-boot-project/spring-boot-dependencies/build.gradle index 34734b53228..b1f3bc7f129 100644 --- a/spring-boot-project/spring-boot-dependencies/build.gradle +++ b/spring-boot-project/spring-boot-dependencies/build.gradle @@ -112,7 +112,7 @@ bom { library("Zipkin Reporter", "3.3.0") { group("io.zipkin.reporter2") { imports = [ - "zipkin-reporter-bom" + "zipkin-reporter-bom" ] } }