Skip to content

Commit b6cd535

Browse files
committed
Span is not created for non json metadata
1 parent c0a5a42 commit b6cd535

File tree

2 files changed

+29
-6
lines changed

2 files changed

+29
-6
lines changed

db-client-java/src/main/java/com/eventstore/dbclient/ClientTelemetry.java

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -77,14 +77,18 @@ private static SpanContext tryExtractTracingContext(byte[] userMetadataBytes) {
7777
if (!TraceId.isValid(traceId) || !SpanId.isValid(spanId))
7878
return null;
7979

80-
return SpanContext.createFromRemoteParent(traceId, spanId, TraceFlags.getSampled(), TraceState.getDefault());
80+
return SpanContext.createFromRemoteParent(traceId, spanId, TraceFlags.getSampled(),
81+
TraceState.getDefault());
8182
} catch (Throwable t) {
8283
return null;
8384
}
8485
}
8586

86-
static CompletableFuture<WriteResult> traceAppend(BiFunction<ManagedChannel, List<EventData>, CompletableFuture<WriteResult>> appendOperation, ManagedChannel channel,
87-
List<EventData> events, String streamId, EventStoreDBClientSettings settings, UserCredentials optionalCallCredentials) {
87+
static CompletableFuture<WriteResult> traceAppend(
88+
BiFunction<ManagedChannel, List<EventData>, CompletableFuture<WriteResult>> appendOperation,
89+
ManagedChannel channel,
90+
List<EventData> events, String streamId, EventStoreDBClientSettings settings,
91+
UserCredentials optionalCallCredentials) {
8892
Span span = createSpan(
8993
ClientTelemetryConstants.Operations.APPEND,
9094
SpanKind.CLIENT,
@@ -115,9 +119,13 @@ static CompletableFuture<WriteResult> traceAppend(BiFunction<ManagedChannel, Lis
115119
}
116120
}
117121

118-
static void traceSubscribe(Runnable tracedOperation, String subscriptionId, ManagedChannel channel, EventStoreDBClientSettings settings,
122+
static void traceSubscribe(Runnable tracedOperation, String subscriptionId, ManagedChannel channel,
123+
EventStoreDBClientSettings settings,
119124
UserCredentials optionalCallCredentials, RecordedEvent event) {
120125
SpanContext remoteParentContext = tryExtractTracingContext(event.getUserMetadata());
126+
127+
if (remoteParentContext == null) return;
128+
121129
Span span = createSpan(
122130
ClientTelemetryConstants.Operations.SUBSCRIBE,
123131
SpanKind.CONSUMER,
@@ -145,7 +153,8 @@ static void traceSubscribe(Runnable tracedOperation, String subscriptionId, Mana
145153
}
146154
}
147155

148-
static Span createSpan(String operationName, SpanKind spanKind, SpanContext parentContext, ClientTelemetryTags customAttributes) {
156+
static Span createSpan(String operationName, SpanKind spanKind, SpanContext parentContext,
157+
ClientTelemetryTags customAttributes) {
149158
SpanBuilder spanBuilder = getTracer().spanBuilder(operationName).setSpanKind(spanKind);
150159

151160
if (parentContext != null)

db-client-java/src/test/java/com/eventstore/dbclient/telemetry/StreamsTracingInstrumentationTests.java

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,8 @@ default void testTracingContextIsInjectedAsExpectedWhenUserMetadataIsJsonObject(
6464
}
6565

6666
@Test
67-
default void testTracingContextInjectionIsIgnoredAsExpectedWhenUserMetadataIsNonNullAndNotAJsonObject() throws Throwable {
67+
default void testTracingContextInjectionIsIgnoredAsExpectedWhenUserMetadataIsNonNullAndNotAJsonObject()
68+
throws Throwable {
6869
EventStoreDBClient client = getDefaultClient();
6970
String streamName = generateName();
7071
byte[] userMetadata = mapper.writeValueAsBytes("clearlynotvalidjson");
@@ -85,6 +86,19 @@ default void testTracingContextInjectionIsIgnoredAsExpectedWhenUserMetadataIsNon
8586

8687
// Assert unchanged
8788
Assertions.assertArrayEquals(userMetadata, resolvedEvent.getEvent().getUserMetadata());
89+
90+
List<ReadableSpan> appendSpans = this.getSpansForOperation(ClientTelemetryConstants.Operations.APPEND);
91+
Assertions.assertEquals(1, appendSpans.size());
92+
93+
client.subscribeToStream(streamName, new SubscriptionListener() {
94+
@Override
95+
public void onEvent(Subscription subscription, ResolvedEvent event) {
96+
// do nothing
97+
}
98+
}).get();
99+
100+
List<ReadableSpan> subscribeSpans = this.getSpansForOperation(ClientTelemetryConstants.Operations.SUBSCRIBE);
101+
Assertions.assertEquals(0, subscribeSpans.size());
88102
}
89103

90104
@Test

0 commit comments

Comments
 (0)