Skip to content

Commit bf24d73

Browse files
authored
Remove the use of GlobalOpenTelemetry (#394)
1 parent d1cdd22 commit bf24d73

File tree

2 files changed

+29
-15
lines changed

2 files changed

+29
-15
lines changed

examples/autoconf/build.gradle

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,8 @@ version = '0.1.0'
2727
dependencies {
2828
implementation(libraries.opentelemetry_api)
2929
implementation(libraries.opentelemetry_sdk_metrics)
30-
runtimeOnly(libraries.opentelemetry_sdk_autoconf)
31-
runtimeOnly(libraries.opentelemetry_sdk)
30+
implementation(libraries.opentelemetry_sdk_autoconf)
31+
implementation(libraries.opentelemetry_sdk)
3232
runtimeOnly project(':exporter-auto')
3333
// Provides resources to the autoconfiguration module
3434
runtimeOnly(libraries.opentelemetry_gcp_resources)
@@ -44,10 +44,9 @@ def autoconf_config = [
4444
'-Dotel.service.name=example-autoconf-service',
4545
]
4646

47-
mainClassName = 'com.google.cloud.opentelemetry.example.autoconf.AutoconfExample'
48-
4947
application {
5048
applicationDefaultJvmArgs = autoconf_config
49+
mainClassName = 'com.google.cloud.opentelemetry.example.autoconf.AutoconfExample'
5150
}
5251

5352

examples/autoconf/src/main/java/com/google/cloud/opentelemetry/example/autoconf/AutoconfExample.java

Lines changed: 26 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@
1515
*/
1616
package com.google.cloud.opentelemetry.example.autoconf;
1717

18-
import io.opentelemetry.api.GlobalOpenTelemetry;
1918
import io.opentelemetry.api.common.AttributeKey;
2019
import io.opentelemetry.api.common.Attributes;
2120
import io.opentelemetry.api.metrics.DoubleHistogram;
@@ -24,19 +23,22 @@
2423
import io.opentelemetry.api.trace.Span;
2524
import io.opentelemetry.api.trace.Tracer;
2625
import io.opentelemetry.context.Scope;
26+
import io.opentelemetry.sdk.OpenTelemetrySdk;
27+
import io.opentelemetry.sdk.autoconfigure.AutoConfiguredOpenTelemetrySdk;
28+
import io.opentelemetry.sdk.common.CompletableResultCode;
2729
import java.util.Objects;
2830
import java.util.Random;
31+
import java.util.concurrent.TimeUnit;
2932

3033
public class AutoconfExample {
3134
private static final Random random = new Random();
3235
private static final AttributeKey<String> DESCRIPTION_KEY = AttributeKey.stringKey("description");
3336

34-
private final Tracer tracer = GlobalOpenTelemetry.get().tracerBuilder("example-auto").build();
35-
private final Meter meter = GlobalOpenTelemetry.get().meterBuilder("example-auto").build();
36-
private final LongCounter useCaseCount = meter.counterBuilder("use_case").build();
37-
private final DoubleHistogram fakeLatency = meter.histogramBuilder("fakeLatency").build();
37+
private static Tracer tracer;
38+
private static LongCounter useCaseCount;
39+
private static DoubleHistogram fakeLatency;
3840

39-
private void myUseCase(String description) {
41+
private static void myUseCase(String description) {
4042
Span span = tracer.spanBuilder(description).startSpan();
4143
try (Scope scope = span.makeCurrent()) {
4244
useCaseCount.add(1, Attributes.of(DESCRIPTION_KEY, description));
@@ -54,7 +56,7 @@ private void myUseCase(String description) {
5456
}
5557
}
5658

57-
private void doWork(String description) {
59+
private static void doWork(String description) {
5860
// Child span
5961
Span span = tracer.spanBuilder(description).startSpan();
6062
try (Scope scope = span.makeCurrent()) {
@@ -71,11 +73,24 @@ private void doWork(String description) {
7173

7274
public static void main(String[] args) {
7375
// First, make sure we've configured opentelemetry with autoconfigure module.
74-
Objects.requireNonNull(GlobalOpenTelemetry.get(), "Failed to autoconfigure opentelemetry");
76+
OpenTelemetrySdk openTelemetrySdk =
77+
AutoConfiguredOpenTelemetrySdk.initialize().getOpenTelemetrySdk();
78+
Objects.requireNonNull(openTelemetrySdk, "Failed to autoconfigure opentelemetry");
79+
80+
// Initialize instruments
81+
tracer = openTelemetrySdk.tracerBuilder("example-auto").build();
82+
Meter meter = openTelemetrySdk.meterBuilder("example-auto").build();
83+
84+
// Initialize meters
85+
useCaseCount = meter.counterBuilder("use_case").build();
86+
fakeLatency = meter.histogramBuilder("fakeLatency").build();
7587

76-
AutoconfExample example = new AutoconfExample();
7788
// Application-specific logic
78-
example.myUseCase("One");
79-
example.myUseCase("Two");
89+
myUseCase("One");
90+
myUseCase("Two");
91+
92+
// Shutdown the OpenTelemetry instance
93+
CompletableResultCode completableResultCode = openTelemetrySdk.shutdown();
94+
completableResultCode.join(10, TimeUnit.SECONDS);
8095
}
8196
}

0 commit comments

Comments
 (0)