Skip to content

Commit 1c96955

Browse files
artur-ciocanusalaboy
authored andcommitted
Ensure OTEL version from examples aligns with SDK and ITs (#1403)
Signed-off-by: salaboy <[email protected]>
1 parent 14c50a1 commit 1c96955

File tree

6 files changed

+59
-47
lines changed

6 files changed

+59
-47
lines changed

examples/pom.xml

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,8 @@
2222
<maven.compiler.source>${java.version}</maven.compiler.source>
2323
<maven.compiler.target>${java.version}</maven.compiler.target>
2424
<spotbugs.fail>false</spotbugs.fail>
25-
<opentelemetry.version>0.14.0</opentelemetry.version>
26-
<opentelemetry-sdk-metrics.version>1.41.0</opentelemetry-sdk-metrics.version>
27-
<zipkin.version>2.16.3</zipkin.version>
25+
<opentelemetry.version>1.41.0</opentelemetry.version>
26+
<zipkin.version>3.4.0</zipkin.version>
2827
</properties>
2928

3029
<dependencies>
@@ -81,19 +80,24 @@
8180
</dependency>
8281
<dependency>
8382
<groupId>io.opentelemetry</groupId>
84-
<artifactId>opentelemetry-exporter-zipkin</artifactId>
83+
<artifactId>opentelemetry-sdk-metrics</artifactId>
8584
<version>${opentelemetry.version}</version>
8685
</dependency>
8786
<dependency>
8887
<groupId>io.opentelemetry</groupId>
89-
<artifactId>opentelemetry-sdk-metrics</artifactId>
90-
<version>${opentelemetry-sdk-metrics.version}</version>
88+
<artifactId>opentelemetry-exporter-zipkin</artifactId>
89+
<version>${opentelemetry.version}</version>
9190
</dependency>
9291
<dependency>
9392
<groupId>io.zipkin.reporter2</groupId>
9493
<artifactId>zipkin-reporter</artifactId>
9594
<version>${zipkin.version}</version>
9695
</dependency>
96+
<dependency>
97+
<groupId>io.zipkin.reporter2</groupId>
98+
<artifactId>zipkin-sender-urlconnection</artifactId>
99+
<version>${zipkin.version}</version>
100+
</dependency>
97101
<dependency>
98102
<groupId>org.junit.jupiter</groupId>
99103
<artifactId>junit-jupiter</artifactId>

examples/src/main/java/io/dapr/examples/OpenTelemetryConfig.java

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,10 @@
2020
import io.opentelemetry.api.trace.propagation.W3CTraceContextPropagator;
2121
import io.opentelemetry.context.Context;
2222
import io.opentelemetry.context.propagation.ContextPropagators;
23-
import io.opentelemetry.context.propagation.TextMapPropagator;
23+
import io.opentelemetry.context.propagation.TextMapSetter;
2424
import io.opentelemetry.exporter.zipkin.ZipkinSpanExporter;
2525
import io.opentelemetry.sdk.OpenTelemetrySdk;
26+
import io.opentelemetry.sdk.resources.Resource;
2627
import io.opentelemetry.sdk.trace.SdkTracerProvider;
2728
import io.opentelemetry.sdk.trace.export.SimpleSpanProcessor;
2829
import org.springframework.beans.factory.annotation.Autowired;
@@ -59,18 +60,23 @@ public Tracer initTracer(@Autowired OpenTelemetry openTelemetry) {
5960
* Creates an opentelemetry instance.
6061
* @return OpenTelemetry.
6162
*/
62-
public static OpenTelemetry createOpenTelemetry() {
63+
public static OpenTelemetrySdk createOpenTelemetry() {
6364
// Only exports to Zipkin if it is up. Otherwise, ignore it.
6465
// This is helpful to avoid exceptions for examples that do not require Zipkin.
6566
if (isZipkinUp()) {
67+
Resource serviceResource = Resource.getDefault()
68+
.toBuilder()
69+
.put("service.name", InvokeClient.class.getName()) // Use ResourceAttributes constant
70+
.build();
6671
String httpUrl = String.format("http://localhost:%d", ZIPKIN_PORT);
72+
6773
ZipkinSpanExporter zipkinExporter =
6874
ZipkinSpanExporter.builder()
6975
.setEndpoint(httpUrl + ENDPOINT_V2_SPANS)
70-
.setServiceName(InvokeClient.class.getName())
7176
.build();
7277

7378
SdkTracerProvider sdkTracerProvider = SdkTracerProvider.builder()
79+
.setResource(serviceResource)
7480
.addSpanProcessor(SimpleSpanProcessor.create(zipkinExporter))
7581
.build();
7682

@@ -100,7 +106,7 @@ public static reactor.util.context.ContextView getReactorContext() {
100106
*/
101107
public static reactor.util.context.Context getReactorContext(Context context) {
102108
Map<String, String> map = new HashMap<>();
103-
TextMapPropagator.Setter<Map<String, String>> setter =
109+
TextMapSetter<Map<String, String>> setter =
104110
(carrier, key, value) -> map.put(key, value);
105111

106112
GlobalOpenTelemetry.getPropagators().getTextMapPropagator().inject(context, map, setter);

examples/src/main/java/io/dapr/examples/OpenTelemetryInterceptor.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515

1616
import io.opentelemetry.api.OpenTelemetry;
1717
import io.opentelemetry.context.Context;
18+
import io.opentelemetry.context.propagation.TextMapGetter;
1819
import io.opentelemetry.context.propagation.TextMapPropagator;
1920
import jakarta.servlet.DispatcherType;
2021
import jakarta.servlet.http.HttpServletRequest;
@@ -34,8 +35,8 @@ public class OpenTelemetryInterceptor implements HandlerInterceptor {
3435
@Autowired
3536
private OpenTelemetry openTelemetry;
3637

37-
private static final TextMapPropagator.Getter<HttpServletRequest> HTTP_SERVLET_REQUEST_GETTER =
38-
new TextMapPropagator.Getter<>() {
38+
private static final TextMapGetter<HttpServletRequest> HTTP_SERVLET_REQUEST_GETTER =
39+
new TextMapGetter<>() {
3940
@Override
4041
public Iterable<String> keys(HttpServletRequest carrier) {
4142
return Collections.list(carrier.getHeaderNames());

examples/src/main/java/io/dapr/examples/pubsub/BulkPublisher.java

Lines changed: 19 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@
1919
import io.dapr.client.domain.BulkPublishResponse;
2020
import io.dapr.client.domain.BulkPublishResponseFailedEntry;
2121
import io.dapr.examples.OpenTelemetryConfig;
22-
import io.opentelemetry.api.OpenTelemetry;
2322
import io.opentelemetry.api.trace.Span;
23+
import io.opentelemetry.api.trace.SpanKind;
2424
import io.opentelemetry.api.trace.Tracer;
2525
import io.opentelemetry.context.Scope;
2626
import io.opentelemetry.sdk.OpenTelemetrySdk;
@@ -55,28 +55,41 @@ public class BulkPublisher {
5555
* @throws Exception any exception
5656
*/
5757
public static void main(String[] args) throws Exception {
58-
OpenTelemetry openTelemetry = OpenTelemetryConfig.createOpenTelemetry();
59-
Tracer tracer = openTelemetry.getTracer(BulkPublisher.class.getCanonicalName());
60-
Span span = tracer.spanBuilder("Bulk Publisher's Main").setSpanKind(Span.Kind.CLIENT).startSpan();
58+
OpenTelemetrySdk openTelemetrySdk = OpenTelemetryConfig.createOpenTelemetry();
59+
Tracer tracer = openTelemetrySdk.getTracer(BulkPublisher.class.getCanonicalName());
60+
Span span = tracer.spanBuilder("Bulk Publisher's Main").setSpanKind(SpanKind.CLIENT).startSpan();
61+
6162
try (DaprPreviewClient client = (new DaprClientBuilder()).buildPreviewClient()) {
6263
DaprClient c = (DaprClient) client;
64+
6365
c.waitForSidecar(10000);
66+
6467
try (Scope scope = span.makeCurrent()) {
6568
System.out.println("Using preview client...");
69+
6670
List<String> messages = new ArrayList<>();
71+
6772
System.out.println("Constructing the list of messages to publish");
73+
6874
for (int i = 0; i < NUM_MESSAGES; i++) {
6975
String message = String.format("This is message #%d", i);
76+
7077
messages.add(message);
78+
7179
System.out.println("Going to publish message : " + message);
7280
}
73-
BulkPublishResponse<?> res = client.publishEvents(PUBSUB_NAME, TOPIC_NAME, "text/plain", messages)
81+
82+
BulkPublishResponse<?> res = client
83+
.publishEvents(PUBSUB_NAME, TOPIC_NAME, "text/plain", messages)
7484
.contextWrite(getReactorContext()).block();
85+
7586
System.out.println("Published the set of messages in a single call to Dapr");
87+
7688
if (res != null) {
7789
if (res.getFailedEntries().size() > 0) {
7890
// Ideally this condition will not happen in examples
7991
System.out.println("Some events failed to be published");
92+
8093
for (BulkPublishResponseFailedEntry<?> entry : res.getFailedEntries()) {
8194
System.out.println("EntryId : " + entry.getEntry().getEntryId()
8295
+ " Error message : " + entry.getErrorMessage());
@@ -86,16 +99,11 @@ public static void main(String[] args) throws Exception {
8699
throw new Exception("null response from dapr");
87100
}
88101
}
89-
// Close the span.
90102

91103
span.end();
92-
// Allow plenty of time for Dapr to export all relevant spans to the tracing infra.
93104
Thread.sleep(10000);
94-
// Shutdown the OpenTelemetry tracer.
95-
OpenTelemetrySdk.getGlobalTracerManagement().shutdown();
96-
105+
openTelemetrySdk.getSdkTracerProvider().shutdown();
97106
System.out.println("Done");
98107
}
99108
}
100109
}
101-

examples/src/main/java/io/dapr/examples/pubsub/PublisherWithTracing.java

Lines changed: 8 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@
1616
import io.dapr.client.DaprClient;
1717
import io.dapr.client.DaprClientBuilder;
1818
import io.dapr.examples.OpenTelemetryConfig;
19-
import io.opentelemetry.api.OpenTelemetry;
2019
import io.opentelemetry.api.trace.Span;
20+
import io.opentelemetry.api.trace.SpanKind;
2121
import io.opentelemetry.api.trace.Tracer;
2222
import io.opentelemetry.context.Scope;
2323
import io.opentelemetry.sdk.OpenTelemetrySdk;
@@ -51,39 +51,36 @@ public class PublisherWithTracing {
5151
* @throws Exception A startup Exception.
5252
*/
5353
public static void main(String[] args) throws Exception {
54-
OpenTelemetry openTelemetry = OpenTelemetryConfig.createOpenTelemetry();
55-
Tracer tracer = openTelemetry.getTracer(PublisherWithTracing.class.getCanonicalName());
56-
Span span = tracer.spanBuilder("Publisher's Main").setSpanKind(Span.Kind.CLIENT).startSpan();
54+
OpenTelemetrySdk openTelemetrySdk = OpenTelemetryConfig.createOpenTelemetry();
55+
Tracer tracer = openTelemetrySdk.getTracer(PublisherWithTracing.class.getCanonicalName());
56+
Span span = tracer.spanBuilder("Publisher's Main").setSpanKind(SpanKind.CLIENT).startSpan();
5757

5858
try (DaprClient client = new DaprClientBuilder().build()) {
5959
try (Scope scope = span.makeCurrent()) {
6060
for (int i = 0; i < NUM_MESSAGES; i++) {
6161
String message = String.format("This is message #%d", i);
62+
6263
// Publishing messages, notice the use of subscriberContext() for tracing.
6364
client.publishEvent(
6465
PUBSUB_NAME,
6566
TOPIC_NAME,
6667
message).contextWrite(getReactorContext()).block();
68+
6769
System.out.println("Published message: " + message);
6870

6971
try {
7072
Thread.sleep((long) (1000 * Math.random()));
7173
} catch (InterruptedException e) {
7274
e.printStackTrace();
7375
Thread.currentThread().interrupt();
76+
7477
return;
7578
}
7679
}
7780
}
7881

79-
// Close the span.
8082
span.end();
81-
82-
// Shutdown the OpenTelemetry tracer.
83-
OpenTelemetrySdk.getGlobalTracerManagement().shutdown();
84-
85-
// This is an example, so for simplicity we are just exiting here.
86-
// Normally a dapr app would be a web service and not exit main.
83+
openTelemetrySdk.getSdkTracerProvider().shutdown();
8784
System.out.println("Done.");
8885
}
8986
}

examples/src/main/java/io/dapr/examples/tracing/InvokeClient.java

Lines changed: 9 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@
1919
import io.dapr.client.domain.InvokeMethodRequest;
2020
import io.dapr.examples.OpenTelemetryConfig;
2121
import io.dapr.utils.TypeRef;
22-
import io.opentelemetry.api.OpenTelemetry;
2322
import io.opentelemetry.api.trace.Span;
23+
import io.opentelemetry.api.trace.SpanKind;
2424
import io.opentelemetry.api.trace.Tracer;
2525
import io.opentelemetry.context.Scope;
2626
import io.opentelemetry.sdk.OpenTelemetrySdk;
@@ -48,10 +48,10 @@ public class InvokeClient {
4848
* @param args Messages to be sent as request for the invoke API.
4949
*/
5050
public static void main(String[] args) throws Exception {
51-
final OpenTelemetry openTelemetry = OpenTelemetryConfig.createOpenTelemetry();
52-
final Tracer tracer = openTelemetry.getTracer(InvokeClient.class.getCanonicalName());
51+
OpenTelemetrySdk openTelemetrySdk = OpenTelemetryConfig.createOpenTelemetry();
52+
Tracer tracer = openTelemetrySdk.getTracer(InvokeClient.class.getCanonicalName());
53+
Span span = tracer.spanBuilder("Example's Main").setSpanKind(SpanKind.CLIENT).startSpan();
5354

54-
Span span = tracer.spanBuilder("Example's Main").setSpanKind(Span.Kind.CLIENT).startSpan();
5555
try (DaprClient client = (new DaprClientBuilder()).build()) {
5656
for (String message : args) {
5757
try (Scope scope = span.makeCurrent()) {
@@ -70,15 +70,11 @@ public static void main(String[] args) throws Exception {
7070
}).contextWrite(getReactorContext()).block();
7171
}
7272
}
73-
}
74-
span.end();
75-
shutdown();
76-
System.out.println("Done");
77-
}
7873

79-
private static void shutdown() throws Exception {
80-
OpenTelemetrySdk.getGlobalTracerManagement().shutdown();
81-
Validation.validate();
74+
span.end();
75+
openTelemetrySdk.getSdkTracerProvider().shutdown();
76+
Validation.validate();
77+
System.out.println("Done");
78+
}
8279
}
83-
8480
}

0 commit comments

Comments
 (0)