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
This commit is contained in:
Albumen Kevin 2023-11-30 11:30:46 +08:00
commit 40f44f91f5
15 changed files with 176 additions and 144 deletions

View File

@ -254,7 +254,7 @@
<dependency>
<groupId>org.testcontainers</groupId>
<artifactId>testcontainers</artifactId>
<version>1.19.1</version>
<version>1.19.3</version>
<scope>test</scope>
</dependency>

View File

@ -28,7 +28,7 @@
<description>The spring config module of dubbo project</description>
<properties>
<skip_maven_deploy>false</skip_maven_deploy>
<spring-boot.version>2.7.17</spring-boot.version>
<spring-boot.version>2.7.18</spring-boot.version>
<!-- Uncomment spring_version property to check Spring 4.x compatibility -->
<!-- <spring_version>4.3.30.RELEASE</spring_version> -->
</properties>

View File

@ -34,7 +34,7 @@
<properties>
<skip_maven_deploy>true</skip_maven_deploy>
<spring-boot-maven-plugin.version>2.7.17</spring-boot-maven-plugin.version>
<spring-boot-maven-plugin.version>2.7.18</spring-boot-maven-plugin.version>
</properties>
<build>

View File

@ -36,7 +36,7 @@
<properties>
<skip_maven_deploy>true</skip_maven_deploy>
<spring-boot-maven-plugin.version>2.7.17</spring-boot-maven-plugin.version>
<spring-boot-maven-plugin.version>2.7.18</spring-boot-maven-plugin.version>
</properties>
<build>

View File

@ -33,9 +33,9 @@
<properties>
<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>

View File

@ -40,7 +40,7 @@
<properties>
<skip_maven_deploy>true</skip_maven_deploy>
<spring-boot-maven-plugin.version>2.7.17</spring-boot-maven-plugin.version>
<spring-boot-maven-plugin.version>2.7.18</spring-boot-maven-plugin.version>
</properties>
<build>

View File

@ -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>
<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>
@ -113,7 +113,7 @@
<cxf_version>3.5.5</cxf_version>
<thrift_version>0.19.0</thrift_version>
<hessian_version>4.0.66</hessian_version>
<protobuf-java_version>3.25.0</protobuf-java_version>
<protobuf-java_version>3.25.1</protobuf-java_version>
<javax_annotation-api_version>1.3.2</javax_annotation-api_version>
<servlet_version>3.1.0</servlet_version>
<jetty_version>9.4.53.v20231009</jetty_version>
@ -132,14 +132,14 @@
<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>
<reactor.version>3.5.11</reactor.version>
<reactor.version>3.6.0</reactor.version>
<rxjava.version>2.2.21</rxjava.version>
<okhttp_version>3.14.9</okhttp_version>
@ -186,7 +186,7 @@
<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>
@ -196,7 +196,7 @@
<metrics_version>2.0.6</metrics_version>
<sofa_registry_version>5.4.3</sofa_registry_version>
<gson_version>2.10.1</gson_version>
<jackson_version>2.15.3</jackson_version>
<jackson_version>2.16.0</jackson_version>
<mortbay_jetty_version>6.1.26</mortbay_jetty_version>
<portlet_version>2.0</portlet_version>
<maven_flatten_version>1.5.0</maven_flatten_version>

View File

@ -23,7 +23,7 @@ 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 {
@ -40,10 +40,10 @@ public interface {{interfaceClassName}} extends org.apache.dubbo.rpc.model.Dubbo
{{#unaryMethods}}
{{#javaDoc}}
{{{javaDoc}}}
{{{javaDoc}}}
{{/javaDoc}}
{{#deprecated}}
@java.lang.Deprecated
@java.lang.Deprecated
{{/deprecated}}
{{outputType}} {{methodName}}({{inputType}} request);
@ -55,20 +55,20 @@ public interface {{interfaceClassName}} extends org.apache.dubbo.rpc.model.Dubbo
{{#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}}

View File

@ -16,7 +16,7 @@
*/
{{#packageName}}
package {{packageName}};
package {{packageName}};
{{/packageName}}
import org.apache.dubbo.common.stream.StreamObserver;
@ -38,41 +38,26 @@ public interface {{interfaceClassName}} extends org.apache.dubbo.rpc.model.Dubbo
{{/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}}
@ -80,7 +65,7 @@ public interface {{interfaceClassName}} extends org.apache.dubbo.rpc.model.Dubbo
{{#clientStreamingMethods}}
{{#javaDoc}}
{{{javaDoc}}}
{{{javaDoc}}}
{{/javaDoc}}
StreamObserver<{{inputType}}> {{methodName}}(StreamObserver<{{outputType}}> responseObserver);
{{/clientStreamingMethods}}

View File

@ -16,7 +16,7 @@
*/
{{#packageName}}
package {{packageName}};
package {{packageName}};
{{/packageName}}
import org.apache.dubbo.common.stream.StreamObserver;
@ -125,7 +125,7 @@ public final class {{className}} {
{{#unaryMethods}}
{{#javaDoc}}
{{{javaDoc}}}
{{{javaDoc}}}
{{/javaDoc}}
@Override
public {{outputType}} {{methodName}}({{inputType}} request){
@ -137,9 +137,8 @@ public final class {{className}} {
}
{{#javaDoc}}
{{{javaDoc}}}
{{{javaDoc}}}
{{/javaDoc}}
@Override
public void {{methodName}}({{inputType}} request, StreamObserver<{{outputType}}> responseObserver){
StubInvocationUtil.unaryCall(invoker, {{methodName}}Method , request, responseObserver);
}
@ -147,7 +146,7 @@ public final class {{className}} {
{{#serverStreamingMethods}}
{{#javaDoc}}
{{{javaDoc}}}
{{{javaDoc}}}
{{/javaDoc}}
@Override
public void {{methodName}}({{inputType}} request, StreamObserver<{{outputType}}> responseObserver){
@ -157,7 +156,7 @@ public final class {{className}} {
{{#biStreamingWithoutClientStreamMethods}}
{{#javaDoc}}
{{{javaDoc}}}
{{{javaDoc}}}
{{/javaDoc}}
@Override
public StreamObserver<{{inputType}}> {{methodName}}(StreamObserver<{{outputType}}> responseObserver){
@ -167,7 +166,7 @@ public final class {{className}} {
{{#clientStreamingMethods}}
{{#javaDoc}}
{{{javaDoc}}}
{{{javaDoc}}}
{{/javaDoc}}
@Override
public StreamObserver<{{inputType}}> {{methodName}}(StreamObserver<{{outputType}}> responseObserver){
@ -193,6 +192,30 @@ public final class {{className}} {
};
}
{{#unaryMethods}}
@Override
public CompletableFuture<{{outputType}}> {{methodName}}Async({{inputType}} request){
return CompletableFuture.completedFuture({{methodName}}(request));
}
{{/unaryMethods}}
/**
* 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.
*/
{{#unaryMethods}}
public 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}}
@Override
public final Invoker<{{interfaceClassName}}> getInvoker(URL url) {
PathResolver pathResolver = url.getOrDefaultFrameworkModel()

View File

@ -98,6 +98,6 @@ public class NacosAggregateListener {
@Override
public int hashCode() {
return Objects.hash(notifyListener, serviceNames, serviceInstances);
return Objects.hash(notifyListener);
}
}

View File

@ -17,7 +17,9 @@
package org.apache.dubbo.spring.boot.observability.autoconfigure.otel;
import org.apache.dubbo.common.Version;
import org.apache.dubbo.common.utils.StringUtils;
import org.apache.dubbo.common.utils.ClassUtils;
import org.apache.dubbo.config.ApplicationConfig;
import org.apache.dubbo.rpc.model.ModuleModel;
import org.apache.dubbo.spring.boot.autoconfigure.DubboConfigurationProperties;
import org.apache.dubbo.spring.boot.observability.autoconfigure.DubboMicrometerTracingAutoConfiguration;
import org.apache.dubbo.spring.boot.observability.autoconfigure.ObservabilityUtils;
@ -27,6 +29,7 @@ import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;
import io.opentelemetry.api.common.AttributeKey;
import org.springframework.beans.factory.ObjectProvider;
import org.springframework.boot.autoconfigure.AutoConfiguration;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
@ -43,57 +46,78 @@ import static org.apache.dubbo.spring.boot.util.DubboUtils.DUBBO_PREFIX;
*/
@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 {
/**
* Default value for application name if {@code spring.application.name} is not set.
*/
private static final String DEFAULT_APPLICATION_NAME = "dubbo-application";
private static final String DEFAULT_APPLICATION_NAME = "application";
private final DubboConfigurationProperties dubboConfigProperties;
OpenTelemetryAutoConfiguration(DubboConfigurationProperties dubboConfigProperties) {
private final ModuleModel moduleModel;
OpenTelemetryAutoConfiguration(DubboConfigurationProperties dubboConfigProperties, ModuleModel moduleModel) {
this.dubboConfigProperties = dubboConfigProperties;
this.moduleModel = moduleModel;
}
@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);
// 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());
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);
} 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.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 @@ public class OpenTelemetryAutoConfiguration {
@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 @@ public class OpenTelemetryAutoConfiguration {
@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 @@ public class OpenTelemetryAutoConfiguration {
@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 @@ public class OpenTelemetryAutoConfiguration {
@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();
}

View File

@ -36,9 +36,9 @@
</modules>
<properties>
<micrometer.version>1.11.5</micrometer.version>
<micrometer-tracing.version>1.1.6</micrometer-tracing.version>
<opentelemetry.version>1.31.0</opentelemetry.version>
<micrometer.version>1.12.0</micrometer.version>
<micrometer-tracing.version>1.2.0</micrometer-tracing.version>
<opentelemetry.version>1.32.0</opentelemetry.version>
<zipkin-reporter.version>2.16.4</zipkin-reporter.version>
<prometheus-client.version>0.16.0</prometheus-client.version>
</properties>

View File

@ -39,9 +39,9 @@
</modules>
<properties>
<spring-boot.version>2.7.17</spring-boot.version>
<spring-boot.version>2.7.18</spring-boot.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>

View File

@ -268,7 +268,7 @@
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>3.4.0</version>
<version>3.5.0</version>
</plugin>
<plugin>
<groupId>org.fusesource.hawtjni</groupId>