Skip to content

Commit bd5adc3

Browse files
authored
Update for the 0.17.x releases of opentelemetry libraries (#18)
* Update for the 0.17.x releases of opentelemetry libraries * update for upstream changes to enable resource customization * use a standard Supplier, rather than a custom interface.
1 parent 8ef0d4d commit bd5adc3

File tree

20 files changed

+100
-71
lines changed

20 files changed

+100
-71
lines changed

pom.xml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -67,9 +67,9 @@
6767
<spring-cloud-netflix.version>3.0.1</spring-cloud-netflix.version>
6868
<spring-cloud-openfeign.version>3.0.1</spring-cloud-openfeign.version>
6969
<opentracing.version>0.32.0</opentracing.version>
70-
<opentelemetry.version>0.16.0</opentelemetry.version>
71-
<opentelemetry.alpha.version>0.16.0-alpha</opentelemetry.alpha.version>
72-
<opentelemetry-instrumentation.version>0.16.0</opentelemetry-instrumentation.version>
70+
<opentelemetry.version>0.17.1</opentelemetry.version>
71+
<opentelemetry.alpha.version>0.17.1-alpha</opentelemetry.alpha.version>
72+
<opentelemetry-instrumentation.version>0.17.0-alpha</opentelemetry-instrumentation.version>
7373
<wavefront.version>2.1.1-SNAPSHOT</wavefront.version>
7474
<spring-security-boot-autoconfigure.version>2.3.4.RELEASE</spring-security-boot-autoconfigure.version>
7575
<disable.nohttp.checks>false</disable.nohttp.checks>

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

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -130,6 +130,17 @@
130130
</exclusion>
131131
</exclusions>
132132
</dependency>
133+
<!-- Note: the metrics API is needed for the instrumentation API at version 0.17.0. This should change soon. -->
134+
<dependency>
135+
<groupId>io.opentelemetry</groupId>
136+
<artifactId>opentelemetry-api-metrics</artifactId>
137+
<exclusions>
138+
<exclusion>
139+
<groupId>io.opentelemetry</groupId>
140+
<artifactId>*</artifactId>
141+
</exclusion>
142+
</exclusions>
143+
</dependency>
133144
<dependency>
134145
<groupId>io.opentelemetry</groupId>
135146
<artifactId>opentelemetry-sdk</artifactId>
@@ -140,6 +151,16 @@
140151
</exclusion>
141152
</exclusions>
142153
</dependency>
154+
<dependency>
155+
<groupId>io.opentelemetry</groupId>
156+
<artifactId>opentelemetry-sdk-extension-autoconfigure</artifactId>
157+
<exclusions>
158+
<exclusion>
159+
<groupId>io.opentelemetry</groupId>
160+
<artifactId>*</artifactId>
161+
</exclusion>
162+
</exclusions>
163+
</dependency>
143164
<dependency>
144165
<groupId>io.opentelemetry.instrumentation</groupId>
145166
<artifactId>opentelemetry-instrumentation-api</artifactId>

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

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818

1919
import java.util.ArrayList;
2020
import java.util.List;
21+
import java.util.function.Supplier;
2122
import java.util.stream.Collectors;
2223

2324
import io.opentelemetry.api.OpenTelemetry;
@@ -27,7 +28,6 @@
2728
import io.opentelemetry.context.propagation.ContextPropagators;
2829
import io.opentelemetry.sdk.OpenTelemetrySdk;
2930
import io.opentelemetry.sdk.resources.Resource;
30-
import io.opentelemetry.sdk.resources.ResourceProvider;
3131
import io.opentelemetry.sdk.trace.SdkTracerProvider;
3232
import io.opentelemetry.sdk.trace.SdkTracerProviderBuilder;
3333
import io.opentelemetry.sdk.trace.SpanLimits;
@@ -99,13 +99,12 @@ SdkTracerProvider otelTracerProvider(SpanLimits spanLimits, ObjectProvider<List<
9999

100100
@Bean
101101
@ConditionalOnMissingBean
102-
Resource otelResource(Environment env, ObjectProvider<List<ResourceProvider>> resourceProviders) {
102+
Resource otelResource(Environment env, ObjectProvider<List<Supplier<Resource>>> resourceProviders) {
103103
String applicationName = env.getProperty("spring.application.name");
104104
Resource resource = defaultResource(applicationName);
105-
List<ResourceProvider> resourceCustomizers = resourceProviders.getIfAvailable(ArrayList::new);
106-
for (ResourceProvider provider : resourceCustomizers) {
107-
Resource providedResource = provider.create();
108-
resource = resource.merge(providedResource);
105+
List<Supplier<Resource>> resourceCustomizers = resourceProviders.getIfAvailable(ArrayList::new);
106+
for (Supplier<Resource> provider : resourceCustomizers) {
107+
resource = resource.merge(provider.get());
109108
}
110109
return resource;
111110
}
@@ -121,8 +120,7 @@ private Resource defaultResource(String applicationName) {
121120
@Bean
122121
@ConditionalOnMissingBean
123122
SpanLimits otelSpanLimits(OtelProperties otelProperties) {
124-
return SpanLimits.getDefault().toBuilder().setMaxLengthOfAttributeValues(otelProperties.getMaxAttrLength())
125-
.setMaxNumberOfAttributes(otelProperties.getMaxAttrs())
123+
return SpanLimits.getDefault().toBuilder().setMaxNumberOfAttributes(otelProperties.getMaxAttrs())
126124
.setMaxNumberOfAttributesPerEvent(otelProperties.getMaxEventAttrs())
127125
.setMaxNumberOfAttributesPerLink(otelProperties.getMaxLinkAttrs())
128126
.setMaxNumberOfEvents(otelProperties.getMaxEvents()).setMaxNumberOfLinks(otelProperties.getMaxLinks())

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

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,9 @@
2222

2323
import io.opentelemetry.context.Context;
2424
import io.opentelemetry.context.propagation.ContextPropagators;
25+
import io.opentelemetry.context.propagation.TextMapGetter;
2526
import io.opentelemetry.context.propagation.TextMapPropagator;
27+
import io.opentelemetry.context.propagation.TextMapSetter;
2628

2729
import org.springframework.beans.factory.BeanFactory;
2830
import org.springframework.beans.factory.ObjectProvider;
@@ -73,12 +75,12 @@ public List<String> fields() {
7375
}
7476

7577
@Override
76-
public <C> void inject(Context context, @Nullable C carrier, Setter<C> setter) {
78+
public <C> void inject(Context context, @Nullable C carrier, TextMapSetter<C> setter) {
7779

7880
}
7981

8082
@Override
81-
public <C> Context extract(Context context, @Nullable C carrier, Getter<C> getter) {
83+
public <C> Context extract(Context context, @Nullable C carrier, TextMapGetter<C> getter) {
8284
return context;
8385
}
8486
};

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

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -70,11 +70,6 @@ public class OtelProperties {
7070
*/
7171
private int maxLinkAttrs = SpanLimits.getDefault().getMaxNumberOfAttributesPerLink();
7272

73-
/**
74-
* Returns the global default max length of string attribute value in characters.
75-
*/
76-
private int maxAttrLength = SpanLimits.getDefault().getMaxLengthOfAttributeValues();
77-
7873
public String getInstrumentationName() {
7974
return this.instrumentationName;
8075
}
@@ -139,12 +134,4 @@ public void setMaxLinkAttrs(int maxLinkAttrs) {
139134
this.maxLinkAttrs = maxLinkAttrs;
140135
}
141136

142-
public int getMaxAttrLength() {
143-
return this.maxAttrLength;
144-
}
145-
146-
public void setMaxAttrLength(int maxAttrLength) {
147-
this.maxAttrLength = maxAttrLength;
148-
}
149-
150137
}

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

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,12 @@
1616

1717
package org.springframework.cloud.sleuth.autoconfig.otel;
1818

19+
import java.util.function.Supplier;
20+
1921
import io.opentelemetry.sdk.extension.resources.OsResource;
2022
import io.opentelemetry.sdk.extension.resources.ProcessResource;
2123
import io.opentelemetry.sdk.extension.resources.ProcessRuntimeResource;
24+
import io.opentelemetry.sdk.resources.Resource;
2225

2326
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
2427
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
@@ -40,18 +43,18 @@
4043
class OtelResourceConfiguration {
4144

4245
@Bean
43-
OsResource otelOsResourceProvider() {
44-
return new OsResource();
46+
Supplier<Resource> otelOsResourceProvider() {
47+
return OsResource::get;
4548
}
4649

4750
@Bean
48-
ProcessResource otelProcessResourceProvider() {
49-
return new ProcessResource();
51+
Supplier<Resource> otelProcessResourceProvider() {
52+
return ProcessResource::get;
5053
}
5154

5255
@Bean
53-
ProcessRuntimeResource otelProcessRuntimeResourceProvider() {
54-
return new ProcessRuntimeResource();
56+
Supplier<Resource> otelProcessRuntimeResourceProvider() {
57+
return ProcessRuntimeResource::get;
5558
}
5659

5760
}

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616

1717
package org.springframework.cloud.sleuth.autoconfig.otel;
1818

19-
import io.opentelemetry.sdk.resources.ResourceProvider;
19+
import io.opentelemetry.sdk.resources.Resource;
2020

2121
import org.springframework.boot.context.properties.ConfigurationProperties;
2222

@@ -30,7 +30,7 @@
3030
public class OtelResourceProperties {
3131

3232
/**
33-
* Enables default {@link ResourceProvider} implementations.
33+
* Enables default {@link Resource} implementations.
3434
*/
3535
private boolean enabled = true;
3636

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

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,12 @@
1616

1717
package org.springframework.cloud.sleuth.autoconfig.otel.zipkin2;
1818

19+
import java.util.function.Supplier;
20+
1921
import io.opentelemetry.api.common.Attributes;
2022
import io.opentelemetry.api.trace.Tracer;
2123
import io.opentelemetry.exporter.zipkin.ZipkinSpanExporter;
22-
import io.opentelemetry.sdk.resources.ResourceProvider;
24+
import io.opentelemetry.sdk.resources.Resource;
2325
import io.opentelemetry.semconv.resource.attributes.ResourceAttributes;
2426
import zipkin2.reporter.Sender;
2527

@@ -71,17 +73,17 @@ ZipkinSpanExporter otelZipkinSpanExporter(ZipkinProperties zipkinProperties,
7173
}
7274

7375
@Bean
74-
ResourceProvider zipkinResourceProvider(Environment environment) {
75-
return new ResourceProvider() {
76-
77-
@Override
78-
protected Attributes getAttributes() {
79-
String zipkinServiceName = environment.getProperty("spring.zipkin.service.name");
80-
if (zipkinServiceName == null) {
81-
return Attributes.empty();
82-
}
83-
return Attributes.of(ResourceAttributes.SERVICE_NAME, zipkinServiceName);
76+
Supplier<Resource> zipkinResourceProvider(Environment environment) {
77+
return () -> {
78+
Attributes attributes;
79+
String zipkinServiceName = environment.getProperty("spring.zipkin.service.name");
80+
if (zipkinServiceName == null) {
81+
attributes = Attributes.empty();
82+
}
83+
else {
84+
attributes = Attributes.of(ResourceAttributes.SERVICE_NAME, zipkinServiceName);
8485
}
86+
return Resource.create(attributes);
8587
};
8688
}
8789

spring-cloud-sleuth-otel-autoconfigure/src/test/java/org/springframework/cloud/sleuth/autoconfig/otel/OtelPropagationConfigurationTests.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,9 @@
2828
import io.opentelemetry.api.trace.TraceFlags;
2929
import io.opentelemetry.api.trace.TraceState;
3030
import io.opentelemetry.context.Context;
31+
import io.opentelemetry.context.propagation.TextMapGetter;
3132
import io.opentelemetry.context.propagation.TextMapPropagator;
33+
import io.opentelemetry.context.propagation.TextMapSetter;
3234
import org.junit.jupiter.api.Test;
3335

3436
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
@@ -101,7 +103,7 @@ void should_inject_and_extract_from_custom_propagator() {
101103

102104
// Extraction
103105
Context extract = customPropagator.extract(Context.current(), carrier,
104-
new TextMapPropagator.Getter<Map<String, String>>() {
106+
new TextMapGetter<Map<String, String>>() {
105107
@Override
106108
public Iterable<String> keys(Map<String, String> carrier) {
107109
return carrier.keySet();
@@ -159,7 +161,7 @@ public List<String> fields() {
159161
}
160162

161163
@Override
162-
public <C> void inject(Context context, C carrier, Setter<C> setter) {
164+
public <C> void inject(Context context, C carrier, TextMapSetter<C> setter) {
163165
SpanContext spanContext = Span.fromContext(context).getSpanContext();
164166
if (!spanContext.isValid()) {
165167
return;
@@ -169,7 +171,7 @@ public <C> void inject(Context context, C carrier, Setter<C> setter) {
169171
}
170172

171173
@Override
172-
public <C> Context extract(Context context, C carrier, Getter<C> getter) {
174+
public <C> Context extract(Context context, C carrier, TextMapGetter<C> getter) {
173175
String traceParent = getter.get(carrier, "myCustomTraceId");
174176
if (traceParent == null) {
175177
return Span.getInvalid().storeInContext(context);

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.16.0</opentelemetry.version>
34+
<opentelemetry.version>0.17.1</opentelemetry.version>
3535
</properties>
3636
<dependencyManagement>
3737
<dependencies>

0 commit comments

Comments
 (0)