This is an automated email from the ASF dual-hosted git repository. albumenj pushed a commit to branch 3.3 in repository https://gitbox.apache.org/repos/asf/dubbo.git
commit 40f44f91f5a8c132fcc46bb4931a7f512ba2dea3 Merge: 93ec8e368d 8ac2eaa326 Author: Albumen Kevin <jhq0...@gmail.com> AuthorDate: Thu Nov 30 11:30:46 2023 +0800 Merge branch 'apache-3.2' into apache-3.3 # Conflicts: # dubbo-demo/dubbo-demo-spring-boot/dubbo-demo-spring-boot-consumer/pom.xml # dubbo-demo/dubbo-demo-spring-boot/dubbo-demo-spring-boot-provider/pom.xml # dubbo-dependencies-bom/pom.xml # dubbo-spring-boot/dubbo-spring-boot-starters/observability/autoconfigure/src/main/java/org/apache/dubbo/spring/boot/observability/autoconfigure/otel/OpenTelemetryAutoConfiguration.java # dubbo-spring-boot/pom.xml dubbo-config/dubbo-config-api/pom.xml | 2 +- dubbo-config/dubbo-config-spring/pom.xml | 2 +- dubbo-demo/dubbo-demo-annotation/pom.xml | 2 +- dubbo-demo/dubbo-demo-api/pom.xml | 2 +- dubbo-demo/dubbo-demo-spring-boot/pom.xml | 6 +- dubbo-demo/dubbo-demo-xml/pom.xml | 2 +- dubbo-dependencies-bom/pom.xml | 14 +- .../main/resources/Dubbo3InterfaceStub.mustache | 14 +- .../resources/Dubbo3TripleInterfaceStub.mustache | 29 +-- .../src/main/resources/Dubbo3TripleStub.mustache | 37 +++- .../registry/nacos/NacosAggregateListener.java | 2 +- .../otel/OpenTelemetryAutoConfiguration.java | 196 ++++++++++++--------- .../observability/pom.xml | 6 +- dubbo-spring-boot/pom.xml | 4 +- pom.xml | 2 +- 15 files changed, 176 insertions(+), 144 deletions(-) diff --cc dubbo-demo/dubbo-demo-spring-boot/pom.xml index 2833598889,109112302b..ac0e86dfb6 --- a/dubbo-demo/dubbo-demo-spring-boot/pom.xml +++ b/dubbo-demo/dubbo-demo-spring-boot/pom.xml @@@ -32,12 -32,13 +32,12 @@@ </modules> <properties> - <maven.compiler.source>8</maven.compiler.source> - <maven.compiler.target>8</maven.compiler.target> <skip_maven_deploy>true</skip_maven_deploy> - <spring-boot.version>2.7.17</spring-boot.version> - <spring-boot-maven-plugin.version>2.7.17</spring-boot-maven-plugin.version> - <micrometer-core.version>1.11.5</micrometer-core.version> + <spring-boot.version>2.7.18</spring-boot.version> + <spring-boot-maven-plugin.version>2.7.18</spring-boot-maven-plugin.version> + <micrometer-core.version>1.12.0</micrometer-core.version> </properties> + <dependencyManagement> <dependencies> <dependency> diff --cc dubbo-dependencies-bom/pom.xml index 1cd24fde22,fd7fa4e541..ab6073a88b --- a/dubbo-dependencies-bom/pom.xml +++ b/dubbo-dependencies-bom/pom.xml @@@ -93,7 -93,7 +93,7 @@@ <spring_version>5.3.25</spring_version> <spring_security_version>5.8.8</spring_security_version> <javassist_version>3.29.2-GA</javassist_version> - <byte-buddy_version>1.14.9</byte-buddy_version> - <bytebuddy.version>1.14.10</bytebuddy.version> ++ <byte-buddy_version>1.14.10</byte-buddy_version> <netty_version>3.2.10.Final</netty_version> <netty4_version>4.1.101.Final</netty4_version> <mina_version>2.2.1</mina_version> @@@ -132,10 -132,9 +132,10 @@@ <commons_lang3_version>3.12.0</commons_lang3_version> <protostuff_version>1.8.0</protostuff_version> <envoy_api_version>0.1.35</envoy_api_version> - <micrometer.version>1.11.5</micrometer.version> + <micrometer.version>1.12.0</micrometer.version> - + <opentelemetry.version>1.26.0</opentelemetry.version> + <zipkin-reporter.version>2.16.4</zipkin-reporter.version> - <micrometer-tracing.version>1.1.6</micrometer-tracing.version> + <micrometer-tracing.version>1.2.0</micrometer-tracing.version> <t_digest.version>3.3</t_digest.version> <prometheus_client.version>0.16.0</prometheus_client.version> <reactive.version>1.0.4</reactive.version> @@@ -176,17 -171,9 +176,17 @@@ <!-- Alibaba --> <alibaba_spring_context_support_version>1.0.11</alibaba_spring_context_support_version> + <!-- Test libs --> + <junit_jupiter_version>5.9.3</junit_jupiter_version> + <junit_version>4.13.2</junit_version> + <awaitility_version>4.2.0</awaitility_version> + <hamcrest_version>2.2</hamcrest_version> + <cglib_version>2.2.2</cglib_version> + <mockito_version>4.11.0</mockito_version> + <jaxb_version>2.2.7</jaxb_version> <activation_version>1.2.0</activation_version> - <test_container_version>1.19.1</test_container_version> + <test_container_version>1.19.3</test_container_version> <etcd_launcher_version>0.7.6</etcd_launcher_version> <hessian_lite_version>3.2.13</hessian_lite_version> <swagger_version>1.6.12</swagger_version> diff --cc dubbo-plugin/dubbo-compiler/src/main/resources/Dubbo3InterfaceStub.mustache index 2764d63e83,0000000000..15172691bf mode 100644,000000..100644 --- a/dubbo-plugin/dubbo-compiler/src/main/resources/Dubbo3InterfaceStub.mustache +++ b/dubbo-plugin/dubbo-compiler/src/main/resources/Dubbo3InterfaceStub.mustache @@@ -1,76 -1,0 +1,76 @@@ +/* +* Licensed to the Apache Software Foundation (ASF) under one or more +* contributor license agreements. See the NOTICE file distributed with +* this work for additional information regarding copyright ownership. +* The ASF licenses this file to You under the Apache License, Version 2.0 +* (the "License"); you may not use this file except in compliance with +* the License. You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +{{#packageName}} +package {{packageName}}; +{{/packageName}} + +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.atomic.AtomicBoolean; + +{{#deprecated}} - @java.lang.Deprecated ++@java.lang.Deprecated +{{/deprecated}} +public interface {{interfaceClassName}} extends org.apache.dubbo.rpc.model.DubboStub { + + static final String JAVA_SERVICE_NAME = "{{packageName}}.{{serviceName}}"; +{{#commonPackageName}} + static final String SERVICE_NAME = "{{commonPackageName}}.{{serviceName}}"; +{{/commonPackageName}} +{{^commonPackageName}} + static final String SERVICE_NAME = "{{serviceName}}"; +{{/commonPackageName}} + + // FIXME, initialize Dubbo3 stub when interface loaded, thinking of new ways doing this. + static final boolean inited = {{className}}.init(); + +{{#unaryMethods}} + {{#javaDoc}} - {{{javaDoc}}} ++ {{{javaDoc}}} + {{/javaDoc}} + {{#deprecated}} - @java.lang.Deprecated ++ @java.lang.Deprecated + {{/deprecated}} + {{outputType}} {{methodName}}({{inputType}} request); + + default CompletableFuture<{{outputType}}> {{methodName}}Async({{inputType}} request){ + return CompletableFuture.supplyAsync(() -> {{methodName}}(request)); + } + +{{/unaryMethods}} + +{{#serverStreamingMethods}} + {{#javaDoc}} - {{{javaDoc}}} ++ {{{javaDoc}}} + {{/javaDoc}} + {{#deprecated}} - @java.lang.Deprecated ++ @java.lang.Deprecated + {{/deprecated}} + void {{methodName}}({{inputType}} request, org.apache.dubbo.common.stream.StreamObserver<{{outputType}}> responseObserver); +{{/serverStreamingMethods}} + +{{#biStreamingMethods}} + {{#javaDoc}} - {{{javaDoc}}} ++ {{{javaDoc}}} + {{/javaDoc}} + {{#deprecated}} - @java.lang.Deprecated ++ @java.lang.Deprecated + {{/deprecated}} + org.apache.dubbo.common.stream.StreamObserver<{{inputType}}> {{methodName}}(org.apache.dubbo.common.stream.StreamObserver<{{outputType}}> responseObserver); +{{/biStreamingMethods}} + +} diff --cc dubbo-plugin/dubbo-compiler/src/main/resources/Dubbo3TripleInterfaceStub.mustache index d4ca6653f9,0000000000..d31fed7efb mode 100644,000000..100644 --- a/dubbo-plugin/dubbo-compiler/src/main/resources/Dubbo3TripleInterfaceStub.mustache +++ b/dubbo-plugin/dubbo-compiler/src/main/resources/Dubbo3TripleInterfaceStub.mustache @@@ -1,88 -1,0 +1,73 @@@ +/* +* Licensed to the Apache Software Foundation (ASF) under one or more +* contributor license agreements. See the NOTICE file distributed with +* this work for additional information regarding copyright ownership. +* The ASF licenses this file to You under the Apache License, Version 2.0 +* (the "License"); you may not use this file except in compliance with +* the License. You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +{{#packageName}} - package {{packageName}}; ++package {{packageName}}; +{{/packageName}} + +import org.apache.dubbo.common.stream.StreamObserver; +import com.google.protobuf.Message; + +import java.util.HashMap; +import java.util.Map; +import java.util.function.BiConsumer; +import java.util.concurrent.CompletableFuture; + +public interface {{interfaceClassName}} extends org.apache.dubbo.rpc.model.DubboStub { + + String JAVA_SERVICE_NAME = "{{packageName}}.{{serviceName}}"; +{{#commonPackageName}} + String SERVICE_NAME = "{{commonPackageName}}.{{serviceName}}"; +{{/commonPackageName}} +{{^commonPackageName}} + String SERVICE_NAME = "{{serviceName}}"; +{{/commonPackageName}} +{{#unaryMethods}} + {{#javaDoc}} - {{{javaDoc}}} ++ {{{javaDoc}}} + {{/javaDoc}} + {{outputType}} {{methodName}}({{inputType}} request); + - default CompletableFuture<{{outputType}}> {{methodName}}Async({{inputType}} request){ - return CompletableFuture.completedFuture({{methodName}}(request)); - } ++ CompletableFuture<{{outputType}}> {{methodName}}Async({{inputType}} request); ++ + - /** - * This server stream type unary method is <b>only</b> used for generated stub to support async unary method. - * It will not be called if you are NOT using Dubbo3 generated triple stub and <b>DO NOT</b> implement this method. - */ - default void {{methodName}}({{inputType}} request, StreamObserver<{{outputType}}> responseObserver){ - {{methodName}}Async(request).whenComplete((r, t) -> { - if (t != null) { - responseObserver.onError(t); - } else { - responseObserver.onNext(r); - responseObserver.onCompleted(); - } - }); - } + +{{/unaryMethods}} + +{{#serverStreamingMethods}} + {{#javaDoc}} - {{{javaDoc}}} ++ {{{javaDoc}}} + {{/javaDoc}} + void {{methodName}}({{inputType}} request, StreamObserver<{{outputType}}> responseObserver); +{{/serverStreamingMethods}} + +{{#biStreamingWithoutClientStreamMethods}} + {{#javaDoc}} - {{{javaDoc}}} ++ {{{javaDoc}}} + {{/javaDoc}} + StreamObserver<{{inputType}}> {{methodName}}(StreamObserver<{{outputType}}> responseObserver); +{{/biStreamingWithoutClientStreamMethods}} + + +{{#clientStreamingMethods}} + {{#javaDoc}} - {{{javaDoc}}} ++ {{{javaDoc}}} + {{/javaDoc}} + StreamObserver<{{inputType}}> {{methodName}}(StreamObserver<{{outputType}}> responseObserver); +{{/clientStreamingMethods}} + +} diff --cc dubbo-spring-boot/dubbo-spring-boot-starters/observability/autoconfigure/src/main/java/org/apache/dubbo/spring/boot/observability/autoconfigure/otel/OpenTelemetryAutoConfiguration.java index 3d9520e115,4eba4950dc..e8c1ef063e --- a/dubbo-spring-boot/dubbo-spring-boot-starters/observability/autoconfigure/src/main/java/org/apache/dubbo/spring/boot/observability/autoconfigure/otel/OpenTelemetryAutoConfiguration.java +++ b/dubbo-spring-boot/dubbo-spring-boot-starters/observability/autoconfigure/src/main/java/org/apache/dubbo/spring/boot/observability/autoconfigure/otel/OpenTelemetryAutoConfiguration.java @@@ -43,16 -46,16 +46,16 @@@ import static org.apache.dubbo.spring.b */ @ConditionalOnProperty(prefix = DUBBO_PREFIX, name = "enabled", matchIfMissing = true) @AutoConfiguration( -- before = DubboMicrometerTracingAutoConfiguration.class, -- afterName = "org.springframework.boot.actuate.autoconfigure.tracing.OpenTelemetryAutoConfiguration") ++ before = DubboMicrometerTracingAutoConfiguration.class, ++ afterName = "org.springframework.boot.actuate.autoconfigure.tracing.OpenTelemetryAutoConfiguration") @ConditionalOnDubboTracingEnable @ConditionalOnClass( -- name = { -- "io.micrometer.tracing.otel.bridge.OtelTracer", -- "io.opentelemetry.sdk.trace.SdkTracerProvider", -- "io.opentelemetry.api.OpenTelemetry", -- "io.micrometer.tracing.SpanCustomizer" -- }) ++ name = { ++ "io.micrometer.tracing.otel.bridge.OtelTracer", ++ "io.opentelemetry.sdk.trace.SdkTracerProvider", ++ "io.opentelemetry.api.OpenTelemetry", ++ "io.micrometer.tracing.SpanCustomizer" ++ }) @EnableConfigurationProperties(DubboConfigurationProperties.class) public class OpenTelemetryAutoConfiguration { @@@ -70,30 -76,48 +76,48 @@@ @Bean @ConditionalOnMissingBean io.opentelemetry.api.OpenTelemetry openTelemetry( -- io.opentelemetry.sdk.trace.SdkTracerProvider sdkTracerProvider, -- io.opentelemetry.context.propagation.ContextPropagators contextPropagators) { ++ io.opentelemetry.sdk.trace.SdkTracerProvider sdkTracerProvider, ++ io.opentelemetry.context.propagation.ContextPropagators contextPropagators) { return io.opentelemetry.sdk.OpenTelemetrySdk.builder() -- .setTracerProvider(sdkTracerProvider) -- .setPropagators(contextPropagators) -- .build(); ++ .setTracerProvider(sdkTracerProvider) ++ .setPropagators(contextPropagators) ++ .build(); } @Bean @ConditionalOnMissingBean io.opentelemetry.sdk.trace.SdkTracerProvider otelSdkTracerProvider( -- ObjectProvider<io.opentelemetry.sdk.trace.SpanProcessor> spanProcessors, -- io.opentelemetry.sdk.trace.samplers.Sampler sampler) { - String applicationName = dubboConfigProperties.getApplication().getName(); - if (StringUtils.isEmpty(applicationName)) { - applicationName = DEFAULT_APPLICATION_NAME; ++ ObjectProvider<io.opentelemetry.sdk.trace.SpanProcessor> spanProcessors, ++ io.opentelemetry.sdk.trace.samplers.Sampler sampler) { + String applicationName = moduleModel - .getApplicationModel() - .getApplicationConfigManager() - .getApplication() - .map(ApplicationConfig::getName) - .orElse(DEFAULT_APPLICATION_NAME); ++ .getApplicationModel() ++ .getApplicationConfigManager() ++ .getApplication() ++ .map(ApplicationConfig::getName) ++ .orElse(DEFAULT_APPLICATION_NAME); + // Due to https://github.com/micrometer-metrics/tracing/issues/343 + String RESOURCE_ATTRIBUTES_CLASS_NAME = "io.opentelemetry.semconv.ResourceAttributes"; + boolean isLowVersion = !ClassUtils.isPresent( - RESOURCE_ATTRIBUTES_CLASS_NAME, Thread.currentThread().getContextClassLoader()); ++ RESOURCE_ATTRIBUTES_CLASS_NAME, Thread.currentThread().getContextClassLoader()); + AttributeKey<String> serviceNameAttributeKey = AttributeKey.stringKey("service.name"); + String SERVICE_NAME = "SERVICE_NAME"; + + if (isLowVersion) { + RESOURCE_ATTRIBUTES_CLASS_NAME = "io.opentelemetry.semconv.resource.attributes.ResourceAttributes"; + } + try { + serviceNameAttributeKey = (AttributeKey<String>) ClassUtils.resolveClass( - RESOURCE_ATTRIBUTES_CLASS_NAME, - Thread.currentThread().getContextClassLoader()) - .getDeclaredField(SERVICE_NAME) - .get(null); ++ RESOURCE_ATTRIBUTES_CLASS_NAME, ++ Thread.currentThread().getContextClassLoader()) ++ .getDeclaredField(SERVICE_NAME) ++ .get(null); + } catch (Throwable ignored) { } io.opentelemetry.sdk.trace.SdkTracerProviderBuilder builder = -- io.opentelemetry.sdk.trace.SdkTracerProvider.builder() -- .setSampler(sampler) -- .setResource(io.opentelemetry.sdk.resources.Resource.create( - io.opentelemetry.api.common.Attributes.of( - io.opentelemetry.semconv.resource.attributes.ResourceAttributes.SERVICE_NAME, - applicationName))); - io.opentelemetry.api.common.Attributes.of(serviceNameAttributeKey, applicationName))); ++ io.opentelemetry.sdk.trace.SdkTracerProvider.builder() ++ .setSampler(sampler) ++ .setResource(io.opentelemetry.sdk.resources.Resource.create( ++ io.opentelemetry.api.common.Attributes.of(serviceNameAttributeKey, applicationName))); spanProcessors.orderedStream().forEach(builder::addSpanProcessor); return builder.build(); } @@@ -101,35 -125,35 +125,35 @@@ @Bean @ConditionalOnMissingBean io.opentelemetry.context.propagation.ContextPropagators otelContextPropagators( -- ObjectProvider<io.opentelemetry.context.propagation.TextMapPropagator> textMapPropagators) { ++ ObjectProvider<io.opentelemetry.context.propagation.TextMapPropagator> textMapPropagators) { return io.opentelemetry.context.propagation.ContextPropagators.create( -- io.opentelemetry.context.propagation.TextMapPropagator.composite( -- textMapPropagators.orderedStream().collect(Collectors.toList()))); ++ io.opentelemetry.context.propagation.TextMapPropagator.composite( ++ textMapPropagators.orderedStream().collect(Collectors.toList()))); } @Bean @ConditionalOnMissingBean io.opentelemetry.sdk.trace.samplers.Sampler otelSampler() { io.opentelemetry.sdk.trace.samplers.Sampler rootSampler = -- io.opentelemetry.sdk.trace.samplers.Sampler.traceIdRatioBased( -- this.dubboConfigProperties.getTracing().getSampling().getProbability()); ++ io.opentelemetry.sdk.trace.samplers.Sampler.traceIdRatioBased( ++ this.dubboConfigProperties.getTracing().getSampling().getProbability()); return io.opentelemetry.sdk.trace.samplers.Sampler.parentBased(rootSampler); } @Bean @ConditionalOnMissingBean io.opentelemetry.sdk.trace.SpanProcessor otelSpanProcessor( -- ObjectProvider<io.opentelemetry.sdk.trace.export.SpanExporter> spanExporters, -- ObjectProvider<io.micrometer.tracing.exporter.SpanExportingPredicate> spanExportingPredicates, -- ObjectProvider<io.micrometer.tracing.exporter.SpanReporter> spanReporters, -- ObjectProvider<io.micrometer.tracing.exporter.SpanFilter> spanFilters) { ++ ObjectProvider<io.opentelemetry.sdk.trace.export.SpanExporter> spanExporters, ++ ObjectProvider<io.micrometer.tracing.exporter.SpanExportingPredicate> spanExportingPredicates, ++ ObjectProvider<io.micrometer.tracing.exporter.SpanReporter> spanReporters, ++ ObjectProvider<io.micrometer.tracing.exporter.SpanFilter> spanFilters) { return io.opentelemetry.sdk.trace.export.BatchSpanProcessor.builder( -- new io.micrometer.tracing.otel.bridge.CompositeSpanExporter( -- spanExporters.orderedStream().collect(Collectors.toList()), -- spanExportingPredicates.orderedStream().collect(Collectors.toList()), -- spanReporters.orderedStream().collect(Collectors.toList()), -- spanFilters.orderedStream().collect(Collectors.toList()))) -- .build(); ++ new io.micrometer.tracing.otel.bridge.CompositeSpanExporter( ++ spanExporters.orderedStream().collect(Collectors.toList()), ++ spanExportingPredicates.orderedStream().collect(Collectors.toList()), ++ spanReporters.orderedStream().collect(Collectors.toList()), ++ spanFilters.orderedStream().collect(Collectors.toList()))) ++ .build(); } @Bean @@@ -141,40 -165,40 +165,40 @@@ @Bean @ConditionalOnMissingBean(io.micrometer.tracing.Tracer.class) io.micrometer.tracing.otel.bridge.OtelTracer micrometerOtelTracer( -- io.opentelemetry.api.trace.Tracer tracer, -- io.micrometer.tracing.otel.bridge.OtelTracer.EventPublisher eventPublisher, -- io.micrometer.tracing.otel.bridge.OtelCurrentTraceContext otelCurrentTraceContext) { ++ io.opentelemetry.api.trace.Tracer tracer, ++ io.micrometer.tracing.otel.bridge.OtelTracer.EventPublisher eventPublisher, ++ io.micrometer.tracing.otel.bridge.OtelCurrentTraceContext otelCurrentTraceContext) { return new io.micrometer.tracing.otel.bridge.OtelTracer( -- tracer, ++ tracer, ++ otelCurrentTraceContext, ++ eventPublisher, ++ new io.micrometer.tracing.otel.bridge.OtelBaggageManager( otelCurrentTraceContext, -- eventPublisher, -- new io.micrometer.tracing.otel.bridge.OtelBaggageManager( -- otelCurrentTraceContext, -- this.dubboConfigProperties.getTracing().getBaggage().getRemoteFields(), -- Collections.emptyList())); ++ this.dubboConfigProperties.getTracing().getBaggage().getRemoteFields(), ++ Collections.emptyList())); } @Bean @ConditionalOnMissingBean io.micrometer.tracing.otel.bridge.OtelPropagator otelPropagator( -- io.opentelemetry.context.propagation.ContextPropagators contextPropagators, -- io.opentelemetry.api.trace.Tracer tracer) { ++ io.opentelemetry.context.propagation.ContextPropagators contextPropagators, ++ io.opentelemetry.api.trace.Tracer tracer) { return new io.micrometer.tracing.otel.bridge.OtelPropagator(contextPropagators, tracer); } @Bean @ConditionalOnMissingBean io.micrometer.tracing.otel.bridge.OtelTracer.EventPublisher otelTracerEventPublisher( -- List<io.micrometer.tracing.otel.bridge.EventListener> eventListeners) { ++ List<io.micrometer.tracing.otel.bridge.EventListener> eventListeners) { return new OTelEventPublisher(eventListeners); } @Bean @ConditionalOnMissingBean io.micrometer.tracing.otel.bridge.OtelCurrentTraceContext otelCurrentTraceContext( -- io.micrometer.tracing.otel.bridge.OtelTracer.EventPublisher publisher) { ++ io.micrometer.tracing.otel.bridge.OtelTracer.EventPublisher publisher) { io.opentelemetry.context.ContextStorage.addWrapper( -- new io.micrometer.tracing.otel.bridge.EventPublishingContextWrapper(publisher)); ++ new io.micrometer.tracing.otel.bridge.EventPublishingContextWrapper(publisher)); return new io.micrometer.tracing.otel.bridge.OtelCurrentTraceContext(); } @@@ -203,50 -227,50 +227,50 @@@ @Bean @ConditionalOnMissingBean @ConditionalOnProperty( -- prefix = ObservabilityUtils.DUBBO_TRACING_PROPAGATION, -- name = "type", -- havingValue = "W3C", -- matchIfMissing = true) ++ prefix = ObservabilityUtils.DUBBO_TRACING_PROPAGATION, ++ name = "type", ++ havingValue = "W3C", ++ matchIfMissing = true) io.opentelemetry.context.propagation.TextMapPropagator w3cTextMapPropagatorWithBaggage( -- io.micrometer.tracing.otel.bridge.OtelCurrentTraceContext otelCurrentTraceContext) { ++ io.micrometer.tracing.otel.bridge.OtelCurrentTraceContext otelCurrentTraceContext) { List<String> remoteFields = -- this.dubboConfigProperties.getTracing().getBaggage().getRemoteFields(); ++ this.dubboConfigProperties.getTracing().getBaggage().getRemoteFields(); return io.opentelemetry.context.propagation.TextMapPropagator.composite( -- io.opentelemetry.api.trace.propagation.W3CTraceContextPropagator.getInstance(), -- io.opentelemetry.api.baggage.propagation.W3CBaggagePropagator.getInstance(), -- new io.micrometer.tracing.otel.propagation.BaggageTextMapPropagator( -- remoteFields, -- new io.micrometer.tracing.otel.bridge.OtelBaggageManager( -- otelCurrentTraceContext, remoteFields, Collections.emptyList()))); ++ io.opentelemetry.api.trace.propagation.W3CTraceContextPropagator.getInstance(), ++ io.opentelemetry.api.baggage.propagation.W3CBaggagePropagator.getInstance(), ++ new io.micrometer.tracing.otel.propagation.BaggageTextMapPropagator( ++ remoteFields, ++ new io.micrometer.tracing.otel.bridge.OtelBaggageManager( ++ otelCurrentTraceContext, remoteFields, Collections.emptyList()))); } @Bean @ConditionalOnMissingBean @ConditionalOnProperty(prefix = ObservabilityUtils.DUBBO_TRACING_PROPAGATION, name = "type", havingValue = "B3") io.opentelemetry.context.propagation.TextMapPropagator b3BaggageTextMapPropagator( -- io.micrometer.tracing.otel.bridge.OtelCurrentTraceContext otelCurrentTraceContext) { ++ io.micrometer.tracing.otel.bridge.OtelCurrentTraceContext otelCurrentTraceContext) { List<String> remoteFields = -- this.dubboConfigProperties.getTracing().getBaggage().getRemoteFields(); ++ this.dubboConfigProperties.getTracing().getBaggage().getRemoteFields(); return io.opentelemetry.context.propagation.TextMapPropagator.composite( -- io.opentelemetry.extension.trace.propagation.B3Propagator.injectingSingleHeader(), -- new io.micrometer.tracing.otel.propagation.BaggageTextMapPropagator( -- remoteFields, -- new io.micrometer.tracing.otel.bridge.OtelBaggageManager( -- otelCurrentTraceContext, remoteFields, Collections.emptyList()))); ++ io.opentelemetry.extension.trace.propagation.B3Propagator.injectingSingleHeader(), ++ new io.micrometer.tracing.otel.propagation.BaggageTextMapPropagator( ++ remoteFields, ++ new io.micrometer.tracing.otel.bridge.OtelBaggageManager( ++ otelCurrentTraceContext, remoteFields, Collections.emptyList()))); } @Bean @ConditionalOnMissingBean @ConditionalOnProperty( -- prefix = ObservabilityUtils.DUBBO_TRACING_BAGGAGE_CORRELATION, -- name = "enabled", -- matchIfMissing = true) ++ prefix = ObservabilityUtils.DUBBO_TRACING_BAGGAGE_CORRELATION, ++ name = "enabled", ++ matchIfMissing = true) io.micrometer.tracing.otel.bridge.Slf4JBaggageEventListener otelSlf4JBaggageEventListener() { return new io.micrometer.tracing.otel.bridge.Slf4JBaggageEventListener(this.dubboConfigProperties -- .getTracing() -- .getBaggage() -- .getCorrelation() -- .getFields()); ++ .getTracing() ++ .getBaggage() ++ .getCorrelation() ++ .getFields()); } } @@@ -264,10 -288,10 +288,10 @@@ @Bean @ConditionalOnMissingBean @ConditionalOnProperty( -- prefix = ObservabilityUtils.DUBBO_TRACING_PROPAGATION, -- name = "type", -- havingValue = "W3C", -- matchIfMissing = true) ++ prefix = ObservabilityUtils.DUBBO_TRACING_PROPAGATION, ++ name = "type", ++ havingValue = "W3C", ++ matchIfMissing = true) io.opentelemetry.api.trace.propagation.W3CTraceContextPropagator w3cTextMapPropagatorWithoutBaggage() { return io.opentelemetry.api.trace.propagation.W3CTraceContextPropagator.getInstance(); } diff --cc dubbo-spring-boot/pom.xml index 2cb2846207,06e68f168f..30cfd6cc63 --- a/dubbo-spring-boot/pom.xml +++ b/dubbo-spring-boot/pom.xml @@@ -39,10 -38,12 +39,10 @@@ </modules> <properties> - <spring-boot.version>2.7.17</spring-boot.version> + <spring-boot.version>2.7.18</spring-boot.version> - <dubbo.version>${revision}</dubbo.version> - <!-- Fix the bug of log4j refer:https://github.com/apache/logging-log4j2/pull/608 --> - <log4j2_version>2.20.0</log4j2_version> <!-- Spring boot buddy is lower than the delivery dependency package version and can only show the defined dependency version --> - <byte-buddy.version>1.14.9</byte-buddy.version> + <byte-buddy.version>1.14.10</byte-buddy.version> + <mockito_version>4.11.0</mockito_version> </properties> <dependencyManagement>