Skip to content

Commit 53cdcaa

Browse files
committed
Tracing: added OpenTelemetry integration test
The test verifies that span tree structure and status code are valid. Speculative executions are run parallel to the main thread, so some of them can finish only after query result has been returned. Thus, in order to collect span data from entire request, we decided to wait until all speculative executions end. The main thread uses conditional variable `allEnded` to wait for them and lock is used for concurrent mutation of activeSpans.
1 parent e30928a commit 53cdcaa

File tree

3 files changed

+902
-13
lines changed

3 files changed

+902
-13
lines changed

driver-opentelemetry/src/main/java/com/datastax/driver/opentelemetry/OpenTelemetryTracingInfo.java

+8-8
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,8 @@
2020
import com.datastax.driver.core.policies.LoadBalancingPolicy;
2121
import com.datastax.driver.core.policies.RetryPolicy;
2222
import com.datastax.driver.core.policies.SpeculativeExecutionPolicy;
23-
import com.datastax.driver.core.tracing.PrecisionLevel;
2423
import com.datastax.driver.core.tracing.TracingInfo;
24+
import com.datastax.driver.core.tracing.VerbosityLevel;
2525
import io.opentelemetry.api.trace.Span;
2626
import io.opentelemetry.api.trace.Tracer;
2727
import io.opentelemetry.context.Context;
@@ -32,9 +32,9 @@ public class OpenTelemetryTracingInfo implements TracingInfo {
3232
private final Tracer tracer;
3333
private final Context context;
3434
private boolean tracingStarted;
35-
private final PrecisionLevel precision;
35+
private final VerbosityLevel precision;
3636

37-
protected OpenTelemetryTracingInfo(Tracer tracer, Context context, PrecisionLevel precision) {
37+
protected OpenTelemetryTracingInfo(Tracer tracer, Context context, VerbosityLevel precision) {
3838
this.tracer = tracer;
3939
this.context = context;
4040
this.precision = precision;
@@ -53,7 +53,7 @@ private void assertStarted() {
5353
assert tracingStarted : "TracingInfo.setStartTime must be called before any other method";
5454
}
5555

56-
public PrecisionLevel getPrecision() {
56+
public VerbosityLevel getVerbosity() {
5757
return precision;
5858
}
5959

@@ -72,14 +72,14 @@ public void setConsistencyLevel(ConsistencyLevel consistency) {
7272

7373
public void setStatement(String statement) {
7474
assertStarted();
75-
if (currentPrecisionLevelIsAtLeast(PrecisionLevel.FULL)) {
75+
if (currentVerbosityLevelIsAtLeast(VerbosityLevel.FULL)) {
7676
span.setAttribute("db.scylladb.statement", statement);
7777
}
7878
}
7979

8080
public void setHostname(String hostname) {
8181
assertStarted();
82-
if (currentPrecisionLevelIsAtLeast(PrecisionLevel.FULL)) {
82+
if (currentVerbosityLevelIsAtLeast(VerbosityLevel.FULL)) {
8383
span.setAttribute("net.peer.name", hostname);
8484
}
8585
}
@@ -168,7 +168,7 @@ public void setRowsCount(int rowsCount) {
168168
@Override
169169
public void setStatement(String statement, int limit) {
170170
assertStarted();
171-
if (currentPrecisionLevelIsAtLeast(PrecisionLevel.FULL)) {
171+
if (currentVerbosityLevelIsAtLeast(VerbosityLevel.FULL)) {
172172
if (statement.length() > limit) statement = statement.substring(0, limit);
173173
span.setAttribute("db.scylladb.statement", statement);
174174
}
@@ -244,7 +244,7 @@ public void tracingFinished() {
244244
span.end();
245245
}
246246

247-
private boolean currentPrecisionLevelIsAtLeast(PrecisionLevel requiredLevel) {
247+
private boolean currentVerbosityLevelIsAtLeast(VerbosityLevel requiredLevel) {
248248
return requiredLevel.compareTo(precision) <= 0;
249249
}
250250
}

driver-opentelemetry/src/main/java/com/datastax/driver/opentelemetry/OpenTelemetryTracingInfoFactory.java

+5-5
Original file line numberDiff line numberDiff line change
@@ -17,22 +17,22 @@
1717
package com.datastax.driver.opentelemetry;
1818

1919
import com.datastax.driver.core.tracing.NoopTracingInfoFactory;
20-
import com.datastax.driver.core.tracing.PrecisionLevel;
2120
import com.datastax.driver.core.tracing.TracingInfo;
2221
import com.datastax.driver.core.tracing.TracingInfoFactory;
22+
import com.datastax.driver.core.tracing.VerbosityLevel;
2323
import io.opentelemetry.api.trace.Span;
2424
import io.opentelemetry.api.trace.Tracer;
2525
import io.opentelemetry.context.Context;
2626

2727
public class OpenTelemetryTracingInfoFactory implements TracingInfoFactory {
2828
private final Tracer tracer;
29-
private final PrecisionLevel precision;
29+
private final VerbosityLevel precision;
3030

3131
public OpenTelemetryTracingInfoFactory(final Tracer tracer) {
32-
this(tracer, PrecisionLevel.NORMAL);
32+
this(tracer, VerbosityLevel.NORMAL);
3333
}
3434

35-
public OpenTelemetryTracingInfoFactory(final Tracer tracer, final PrecisionLevel precision) {
35+
public OpenTelemetryTracingInfoFactory(final Tracer tracer, final VerbosityLevel precision) {
3636
this.tracer = tracer;
3737
this.precision = precision;
3838
}
@@ -48,7 +48,7 @@ public TracingInfo buildTracingInfo(TracingInfo parent) {
4848
if (parent instanceof OpenTelemetryTracingInfo) {
4949
final OpenTelemetryTracingInfo castedParent = (OpenTelemetryTracingInfo) parent;
5050
return new OpenTelemetryTracingInfo(
51-
castedParent.getTracer(), castedParent.getContext(), castedParent.getPrecision());
51+
castedParent.getTracer(), castedParent.getContext(), castedParent.getVerbosity());
5252
}
5353

5454
return new NoopTracingInfoFactory().buildTracingInfo();

0 commit comments

Comments
 (0)