Skip to content

Commit eac5377

Browse files
Merge pull request #7 from spring-cloud-incubator/otel-upgrade-0.14
Otel upgrade to 0.14
2 parents 9b79cb8 + 74db4ab commit eac5377

File tree

10 files changed

+45
-178
lines changed

10 files changed

+45
-178
lines changed

pom.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -67,9 +67,9 @@
6767
<spring-cloud-netflix.version>3.0.0</spring-cloud-netflix.version>
6868
<spring-cloud-openfeign.version>3.0.0</spring-cloud-openfeign.version>
6969
<opentracing.version>0.32.0</opentracing.version>
70-
<opentelemetry.version>0.13.1</opentelemetry.version>
70+
<opentelemetry.version>0.14.1</opentelemetry.version>
7171
<!-- From maven local -->
72-
<opentelemetry-instrumentation.version>0.13.0</opentelemetry-instrumentation.version>
72+
<opentelemetry-instrumentation.version>0.14.0</opentelemetry-instrumentation.version>
7373
<spring-security-boot-autoconfigure.version>2.3.4.RELEASE</spring-security-boot-autoconfigure.version>
7474
<disable.nohttp.checks>false</disable.nohttp.checks>
7575
<okhttp.version>4.9.0</okhttp.version>

spring-cloud-sleuth-otel-autoconfigure/pom.xml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,10 @@
9898
<groupId>io.opentelemetry</groupId>
9999
<artifactId>opentelemetry-api</artifactId>
100100
</dependency>
101+
<dependency>
102+
<groupId>io.opentelemetry</groupId>
103+
<artifactId>opentelemetry-semconv</artifactId>
104+
</dependency>
101105
<dependency>
102106
<groupId>io.opentelemetry</groupId>
103107
<artifactId>opentelemetry-sdk-common</artifactId>

spring-cloud-sleuth-otel-autoconfigure/src/main/java/org/springframework/cloud/sleuth/autoconfig/otel/OtelAutoConfiguration.java

Lines changed: 9 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,9 @@
2020
import java.util.List;
2121
import java.util.stream.Collectors;
2222

23+
import io.opentelemetry.api.DefaultOpenTelemetry;
24+
import io.opentelemetry.api.GlobalOpenTelemetry;
2325
import io.opentelemetry.api.OpenTelemetry;
24-
import io.opentelemetry.api.metrics.MeterProvider;
2526
import io.opentelemetry.api.trace.Tracer;
2627
import io.opentelemetry.api.trace.TracerProvider;
2728
import io.opentelemetry.context.propagation.ContextPropagators;
@@ -31,8 +32,7 @@
3132
import io.opentelemetry.sdk.trace.export.SimpleSpanProcessor;
3233
import io.opentelemetry.sdk.trace.export.SpanExporter;
3334
import io.opentelemetry.sdk.trace.samplers.Sampler;
34-
import io.opentelemetry.sdk.trace.spi.TracerProviderFactorySdk;
35-
import io.opentelemetry.spi.metrics.MeterProviderFactory;
35+
import io.opentelemetry.sdk.trace.spi.SdkTracerProviderFactory;
3636
import io.opentelemetry.spi.trace.TracerProviderFactory;
3737

3838
import org.springframework.beans.factory.ObjectProvider;
@@ -48,7 +48,6 @@
4848
import org.springframework.cloud.sleuth.autoconfig.TraceConfiguration;
4949
import org.springframework.cloud.sleuth.autoconfig.brave.BraveAutoConfiguration;
5050
import org.springframework.cloud.sleuth.internal.SleuthContextListener;
51-
import org.springframework.cloud.sleuth.otel.bridge.OtelOpenTelemetry;
5251
import org.springframework.cloud.sleuth.otel.bridge.SpanExporterCustomizer;
5352
import org.springframework.context.annotation.Bean;
5453
import org.springframework.context.annotation.Configuration;
@@ -77,19 +76,17 @@ public class OtelAutoConfiguration {
7776

7877
@Bean
7978
@ConditionalOnMissingBean
80-
OpenTelemetry otel(TracerProviderFactory tracerProviderFactory, MeterProviderFactory meterProviderFactory,
81-
TracerProvider tracerProvider, MeterProvider meterProvider, ContextPropagators contextPropagators) {
82-
OtelOpenTelemetry otelOpenTelemetry = new OtelOpenTelemetry(tracerProviderFactory, meterProviderFactory,
83-
tracerProvider, meterProvider, contextPropagators);
84-
OpenTelemetry.set(otelOpenTelemetry);
85-
OpenTelemetry.setGlobalPropagators(contextPropagators);
86-
return otelOpenTelemetry;
79+
OpenTelemetry otel(TracerProvider tracerProvider, ContextPropagators contextPropagators) {
80+
OpenTelemetry openTelemetry = DefaultOpenTelemetry.builder().setTracerProvider(tracerProvider)
81+
.setPropagators(contextPropagators).build();
82+
GlobalOpenTelemetry.set(openTelemetry);
83+
return openTelemetry;
8784
}
8885

8986
@Bean
9087
@ConditionalOnMissingBean
9188
TracerProviderFactory otelTracerProviderFactory() {
92-
return new TracerProviderFactorySdk();
89+
return new SdkTracerProviderFactory();
9390
}
9491

9592
@Bean
@@ -98,18 +95,6 @@ TracerProvider otelTracerProvider(TracerProviderFactory tracerProviderFactory) {
9895
return tracerProviderFactory.create();
9996
}
10097

101-
@Bean
102-
@ConditionalOnMissingBean
103-
MeterProviderFactory otelMeterProviderFactory() {
104-
return OpenTelemetry::getGlobalMeterProvider;
105-
}
106-
107-
@Bean
108-
@ConditionalOnMissingBean
109-
MeterProvider otelMeterProvider(MeterProviderFactory meterProviderFactory) {
110-
return meterProviderFactory.create();
111-
}
112-
11398
@Bean
11499
@ConditionalOnMissingBean
115100
TraceConfig otelTracerConfig(OtelProperties otelProperties, Sampler sampler) {

spring-cloud-sleuth-otel-dependencies/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@
3131
<name>spring-cloud-sleuth-otel-dependencies</name>
3232
<description>Spring Cloud Sleuth OTel Dependencies</description>
3333
<properties>
34-
<opentelemetry.version>0.13.1</opentelemetry.version>
34+
<opentelemetry.version>0.14.1</opentelemetry.version>
3535
</properties>
3636
<dependencyManagement>
3737
<dependencies>

spring-cloud-sleuth-otel/pom.xml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,10 @@
5454
<groupId>io.opentelemetry</groupId>
5555
<artifactId>opentelemetry-api</artifactId>
5656
</dependency>
57+
<dependency>
58+
<groupId>io.opentelemetry</groupId>
59+
<artifactId>opentelemetry-semconv</artifactId>
60+
</dependency>
5761
<dependency>
5862
<groupId>io.opentelemetry</groupId>
5963
<artifactId>opentelemetry-sdk-common</artifactId>

spring-cloud-sleuth-otel/src/main/java/org/springframework/cloud/sleuth/otel/bridge/ArrayListSpanProcessor.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,8 @@
2828
import io.opentelemetry.sdk.trace.data.SpanData;
2929
import io.opentelemetry.sdk.trace.export.SpanExporter;
3030

31+
import static java.util.concurrent.TimeUnit.SECONDS;
32+
3133
/**
3234
* Stores spans in a queue.
3335
*
@@ -78,6 +80,11 @@ public CompletableResultCode forceFlush() {
7880
return CompletableResultCode.ofSuccess();
7981
}
8082

83+
@Override
84+
public void close() {
85+
shutdown().join(10, SECONDS);
86+
}
87+
8188
public SpanData takeLocalSpan() {
8289
return this.spans.poll();
8390
}

spring-cloud-sleuth-otel/src/main/java/org/springframework/cloud/sleuth/otel/bridge/OtelOpenTelemetry.java

Lines changed: 0 additions & 127 deletions
This file was deleted.

spring-cloud-sleuth-otel/src/main/java/org/springframework/cloud/sleuth/otel/propagation/CompositeTextMapPropagator.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@
3131
import io.opentelemetry.api.trace.propagation.W3CTraceContextPropagator;
3232
import io.opentelemetry.context.Context;
3333
import io.opentelemetry.context.propagation.TextMapPropagator;
34-
import io.opentelemetry.extension.trace.propagation.AwsXRayPropagator;
34+
import io.opentelemetry.extension.trace.propagation.AwsXrayPropagator;
3535
import io.opentelemetry.extension.trace.propagation.B3Propagator;
3636
import io.opentelemetry.extension.trace.propagation.JaegerPropagator;
3737
import io.opentelemetry.extension.trace.propagation.OtTracerPropagator;
@@ -60,8 +60,8 @@ public class CompositeTextMapPropagator implements TextMapPropagator {
6060
public CompositeTextMapPropagator(BeanFactory beanFactory, List<PropagationType> types) {
6161
this.types = types;
6262
if (isOnClasspath("io.opentelemetry.extension.trace.propagation.AwsXRayPropagator")) {
63-
this.mapping.put(PropagationType.AWS, beanFactory.getBeanProvider(AwsXRayPropagator.class)
64-
.getIfAvailable(AwsXRayPropagator::getInstance));
63+
this.mapping.put(PropagationType.AWS, beanFactory.getBeanProvider(AwsXrayPropagator.class)
64+
.getIfAvailable(AwsXrayPropagator::getInstance));
6565
}
6666
if (isOnClasspath("io.opentelemetry.extension.trace.propagation.B3Propagator")) {
6767
this.mapping.put(PropagationType.B3,

tests/common/src/main/java/org/springframework/cloud/sleuth/otel/OtelTestSpanHandler.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import java.util.Collection;
2020
import java.util.Iterator;
2121
import java.util.List;
22+
import java.util.concurrent.TimeUnit;
2223
import java.util.stream.Collectors;
2324

2425
import io.opentelemetry.context.Context;
@@ -121,6 +122,11 @@ public CompletableResultCode forceFlush() {
121122
return spanProcessor.forceFlush();
122123
}
123124

125+
@Override
126+
public void close() {
127+
shutdown().join(10, TimeUnit.SECONDS);
128+
}
129+
124130
@Override
125131
public String toString() {
126132
return "OtelTestSpanHandler{" + "spanProcessor=" + this.spanProcessor + '}';

tests/common/src/main/java/org/springframework/cloud/sleuth/otel/OtelTestTracing.java

Lines changed: 9 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -19,16 +19,16 @@
1919
import java.io.Closeable;
2020
import java.util.regex.Pattern;
2121

22+
import io.opentelemetry.api.DefaultOpenTelemetry;
23+
import io.opentelemetry.api.GlobalOpenTelemetry;
2224
import io.opentelemetry.api.OpenTelemetry;
23-
import io.opentelemetry.api.metrics.MeterProvider;
2425
import io.opentelemetry.api.trace.TracerProvider;
2526
import io.opentelemetry.context.propagation.ContextPropagators;
2627
import io.opentelemetry.extension.trace.propagation.B3Propagator;
2728
import io.opentelemetry.sdk.trace.SdkTracerProvider;
2829
import io.opentelemetry.sdk.trace.config.TraceConfig;
2930
import io.opentelemetry.sdk.trace.samplers.Sampler;
30-
import io.opentelemetry.sdk.trace.spi.TracerProviderFactorySdk;
31-
import io.opentelemetry.spi.metrics.MeterProviderFactory;
31+
import io.opentelemetry.sdk.trace.spi.SdkTracerProviderFactory;
3232
import io.opentelemetry.spi.trace.TracerProviderFactory;
3333

3434
import org.springframework.cloud.sleuth.CurrentTraceContext;
@@ -40,7 +40,6 @@
4040
import org.springframework.cloud.sleuth.http.HttpServerHandler;
4141
import org.springframework.cloud.sleuth.otel.bridge.ArrayListSpanProcessor;
4242
import org.springframework.cloud.sleuth.otel.bridge.OtelAccessor;
43-
import org.springframework.cloud.sleuth.otel.bridge.OtelOpenTelemetry;
4443
import org.springframework.cloud.sleuth.propagation.Propagator;
4544
import org.springframework.cloud.sleuth.test.TestSpanHandler;
4645
import org.springframework.cloud.sleuth.test.TestTracingAssertions;
@@ -57,7 +56,7 @@ public class OtelTestTracing implements TracerAware, TestTracingAware, TestTraci
5756

5857
OpenTelemetry openTelemetry = otel();
5958

60-
ContextPropagators defaultContextPropagators = OpenTelemetry.getGlobalPropagators();
59+
ContextPropagators defaultContextPropagators = openTelemetry.getPropagators();
6160

6261
Sampler sampler = Sampler.alwaysOn();
6362

@@ -80,30 +79,20 @@ protected ContextPropagators contextPropagators() {
8079

8180
OpenTelemetry otel() {
8281
TracerProviderFactory providerFactory = otelTracerProviderFactory();
83-
MeterProviderFactory meterProviderFactory = otelMeterProviderFactory();
84-
OtelOpenTelemetry otelOpenTelemetry = new OtelOpenTelemetry(providerFactory, meterProviderFactory,
85-
otelTracerProvider(providerFactory), otelMeterProvider(meterProviderFactory), this.contextPropagators);
86-
OpenTelemetry.set(otelOpenTelemetry);
87-
OpenTelemetry.setGlobalPropagators(contextPropagators);
88-
return otelOpenTelemetry;
82+
OpenTelemetry openTelemetry = DefaultOpenTelemetry.builder()
83+
.setTracerProvider(otelTracerProvider(providerFactory)).setPropagators(this.contextPropagators).build();
84+
GlobalOpenTelemetry.set(openTelemetry);
85+
return openTelemetry;
8986
}
9087

9188
TracerProviderFactory otelTracerProviderFactory() {
92-
return new TracerProviderFactorySdk();
89+
return new SdkTracerProviderFactory();
9390
}
9491

9592
TracerProvider otelTracerProvider(TracerProviderFactory tracerProviderFactory) {
9693
return tracerProviderFactory.create();
9794
}
9895

99-
MeterProviderFactory otelMeterProviderFactory() {
100-
return OpenTelemetry::getGlobalMeterProvider;
101-
}
102-
103-
MeterProvider otelMeterProvider(MeterProviderFactory meterProviderFactory) {
104-
return meterProviderFactory.create();
105-
}
106-
10796
private void reset() {
10897
this.contextPropagators = contextPropagators();
10998
this.tracer = otelTracer();
@@ -134,7 +123,6 @@ public TestTracingAssertions assertions() {
134123
@Override
135124
public void close() {
136125
this.spanProcessor.clear();
137-
OpenTelemetry.setGlobalPropagators(this.defaultContextPropagators);
138126
this.sampler = Sampler.alwaysOn();
139127
}
140128

0 commit comments

Comments
 (0)