From deb4239696360dadfe8ecfcda692adf344938909 Mon Sep 17 00:00:00 2001 From: Joe Wang <106995533+JoeWang1127@users.noreply.github.com> Date: Fri, 3 Feb 2023 22:08:05 +0000 Subject: [PATCH] feat: add an encoder bean in Trace auto-configuration (#1568) * feat: add an encoder bean * fix typo in comment --- .../trace/StackdriverTraceAutoConfiguration.java | 9 +++++++++ .../trace/StackdriverTraceAutoConfigurationTests.java | 10 ++++++++++ .../src/main/java/com/example/Application.java | 5 ++--- 3 files changed, 21 insertions(+), 3 deletions(-) diff --git a/spring-cloud-gcp-autoconfigure/src/main/java/com/google/cloud/spring/autoconfigure/trace/StackdriverTraceAutoConfiguration.java b/spring-cloud-gcp-autoconfigure/src/main/java/com/google/cloud/spring/autoconfigure/trace/StackdriverTraceAutoConfiguration.java index 18ad5f892f..8aff2d56e9 100644 --- a/spring-cloud-gcp-autoconfigure/src/main/java/com/google/cloud/spring/autoconfigure/trace/StackdriverTraceAutoConfiguration.java +++ b/spring-cloud-gcp-autoconfigure/src/main/java/com/google/cloud/spring/autoconfigure/trace/StackdriverTraceAutoConfiguration.java @@ -50,6 +50,8 @@ import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler; import zipkin2.CheckResult; import zipkin2.Span; +import zipkin2.codec.BytesEncoder; +import zipkin2.codec.SpanBytesEncoder; import zipkin2.reporter.AsyncReporter; import zipkin2.reporter.Reporter; import zipkin2.reporter.ReporterMetrics; @@ -250,6 +252,13 @@ public BaggagePropagation.FactoryBuilder baggagePropagationFactoryBuilder() { return BaggagePropagation.newFactoryBuilder(StackdriverTracePropagation.newFactory(primary)); } + // Add this bean to suppress other encoding schema, e.g., JSON. + @Bean + @ConditionalOnMissingBean + public BytesEncoder spanBytesEncoder() { + return SpanBytesEncoder.PROTO3; + } + @PreDestroy public void closeScheduler() { if (this.defaultTraceSenderThreadPool != null) { diff --git a/spring-cloud-gcp-autoconfigure/src/test/java/com/google/cloud/spring/autoconfigure/trace/StackdriverTraceAutoConfigurationTests.java b/spring-cloud-gcp-autoconfigure/src/test/java/com/google/cloud/spring/autoconfigure/trace/StackdriverTraceAutoConfigurationTests.java index f18b93949a..03a0b71382 100644 --- a/spring-cloud-gcp-autoconfigure/src/test/java/com/google/cloud/spring/autoconfigure/trace/StackdriverTraceAutoConfigurationTests.java +++ b/spring-cloud-gcp-autoconfigure/src/test/java/com/google/cloud/spring/autoconfigure/trace/StackdriverTraceAutoConfigurationTests.java @@ -59,6 +59,7 @@ import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler; import zipkin2.Call; import zipkin2.CheckResult; +import zipkin2.codec.BytesEncoder; import zipkin2.codec.Encoding; import zipkin2.codec.SpanBytesEncoder; import zipkin2.reporter.AsyncReporter; @@ -102,6 +103,15 @@ void test() { }); } + @Test + void testEncodingSchema() { + this.contextRunner + .run( + context -> assertThat( + context.getBean(BytesEncoder.class)) + .isEqualTo(SpanBytesEncoder.PROTO3)); + } + @Test void testDefaultConfig() { this.contextRunner diff --git a/spring-cloud-gcp-samples/spring-cloud-gcp-trace-sample/src/main/java/com/example/Application.java b/spring-cloud-gcp-samples/spring-cloud-gcp-trace-sample/src/main/java/com/example/Application.java index 4de0374b44..ad2f5be68b 100644 --- a/spring-cloud-gcp-samples/spring-cloud-gcp-trace-sample/src/main/java/com/example/Application.java +++ b/spring-cloud-gcp-samples/spring-cloud-gcp-trace-sample/src/main/java/com/example/Application.java @@ -1,5 +1,5 @@ /* - * Copyright 2017-2022 the original author or authors. + * Copyright 2017-2023 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. @@ -30,7 +30,6 @@ import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.SpringApplication; -import org.springframework.boot.actuate.autoconfigure.tracing.zipkin.ZipkinAutoConfiguration; import org.springframework.boot.autoconfigure.AutoConfiguration; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.web.client.RestTemplateBuilder; @@ -48,7 +47,7 @@ /** Sample spring boot application. */ @AutoConfiguration -@SpringBootApplication(exclude = ZipkinAutoConfiguration.class) +@SpringBootApplication public class Application implements WebMvcConfigurer { private static final Logger LOGGER = LoggerFactory.getLogger(Application.class);