Skip to content

Commit 103eb59

Browse files
committed
tmp commit: manually tested all previous OpenTelemetry versions
1 parent 88a95e0 commit 103eb59

File tree

4 files changed

+58
-2
lines changed

4 files changed

+58
-2
lines changed

Diff for: README.md

+2
Original file line numberDiff line numberDiff line change
@@ -298,6 +298,8 @@ class YourClass {
298298

299299
## Exemplars
300300

301+
TODO: Document that Exemplars are supported with OpenTelemetry 0.16.0 or higher. When `client_java` 0.11.0 was released the current OpenTelemetry version was 1.1.0.
302+
301303
Exemplars are a feature of the [OpenMetrics](http://openmetrics.io) format that allows applications to link metrics
302304
to example traces. Starting with version 0.11.0, `client_java` automatically adds Exemplars for applications that
303305
are instrumented with [OpenTelemetry](https://opentelemetry.io/) distributed tracing. No code change is required.

Diff for: integration_tests/exemplars_otel/src/main/java/io/prometheus/it/exemplars_otel/Server.java

+46
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,57 @@ public static void main(String[] args) throws IOException, InterruptedException
1717
.help("help")
1818
.register();
1919

20+
// The following code works with OpenTelemetry versions 0.13.0 and higher.
21+
// Exemplars work with 0.16.0 and higher. With 0.15.0 or lower the example will run but not have exemplars.
22+
System.out.println(Tracer.class.getProtectionDomain().getCodeSource().getLocation());
2023
Tracer tracer = SdkTracerProvider.builder().build().get(null);
2124
Span span = tracer.spanBuilder("my span").startSpan();
2225
span.makeCurrent();
2326
counter.inc(1);
2427
span.end();
2528
Thread.currentThread().join(); // sleep forever
29+
30+
// Examples with older OpenTelemetry versions used for manual testing:
31+
32+
/*
33+
// OpenTelemetry versions 0.10.0 - 0.12.0
34+
System.out.println(Tracer.class.getProtectionDomain().getCodeSource().getLocation());
35+
Tracer tracer = OpenTelemetrySdk.get().getTracer("test");
36+
Span span = tracer.spanBuilder("my span").startSpan();
37+
span.makeCurrent();
38+
counter.inc(1);
39+
span.end();
40+
Thread.currentThread().join(); // sleep forever
41+
*/
42+
43+
/*
44+
// OpenTelemetry versions 0.4.0 - 0.9.1
45+
System.out.println(TracerSdkProvider.class.getProtectionDomain().getCodeSource().getLocation());
46+
Tracer tracer = TracerSdkProvider.builder().build().get("test");
47+
Span span = tracer.spanBuilder("my span").startSpan();
48+
counter.inc(1);
49+
span.end();
50+
Thread.currentThread().join(); // sleep forever
51+
*/
52+
53+
/*
54+
// OpenTelemetry version 0.3.0
55+
System.out.println(TracerSdkProvider.class.getProtectionDomain().getCodeSource().getLocation());
56+
TracerSdk tracer = TracerSdkProvider.builder().build().get("test");
57+
Span span = tracer.spanBuilder("my span").startSpan();
58+
counter.inc(1);
59+
span.end();
60+
Thread.currentThread().join(); // sleep forever
61+
*/
62+
63+
/*
64+
// OpenTelemetry version 0.2.0
65+
System.out.println(TracerSdkFactory.class.getProtectionDomain().getCodeSource().getLocation());
66+
TracerSdk tracer = TracerSdkFactory.create().get("test");
67+
Span span = tracer.spanBuilder("my span").startSpan();
68+
counter.inc(1);
69+
span.end();
70+
Thread.currentThread().join(); // sleep forever
71+
*/
2672
}
2773
}

Diff for: tracer_parent/tracer_otel/src/main/java/io/prometheus/client/exemplars/tracer/otel/OpenTelemetrySpanContextSupplier.java

+5-1
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,11 @@ public static boolean isAvailable() {
1313
test.getSpanId();
1414
test.getSpanId();
1515
return true;
16-
} catch (NoClassDefFoundError e) {
16+
} catch (LinkageError ignored) {
17+
// NoClassDefFoundError:
18+
// Either OpenTelemetry is not present, or it is version 0.9.1 or older when io.opentelemetry.api.trace.Span did not exist.
19+
// IncompatibleClassChangeError:
20+
// The application uses an OpenTelemetry version between 0.10.0 and 0.15.0 when SpanContext was a class, and not an interface.
1721
return false;
1822
}
1923
}

Diff for: tracer_parent/tracer_otel_agent/src/main/java/io/prometheus/client/exemplars/tracer/otel_agent/OpenTelemetryAgentSpanContextSupplier.java

+5-1
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,11 @@ public static boolean isAvailable() {
1818
test.getSpanId();
1919
test.getSpanId();
2020
return true;
21-
} catch (NoClassDefFoundError e) {
21+
} catch (LinkageError ignored) {
22+
// NoClassDefFoundError:
23+
// Either OpenTelemetry is not present, or it is version 0.9.1 or older when io.opentelemetry.api.trace.Span did not exist.
24+
// IncompatibleClassChangeError:
25+
// The application uses an OpenTelemetry version between 0.10.0 and 0.15.0 when SpanContext was a class, and not an interface.
2226
return false;
2327
}
2428
}

0 commit comments

Comments
 (0)