Skip to content

Commit a3f02ae

Browse files
authored
fix: skip tracing metadata injection when span context is invalid or unsampled (#331)
1 parent 987b6ab commit a3f02ae

File tree

2 files changed

+33
-31
lines changed

2 files changed

+33
-31
lines changed

src/main/java/io/kurrent/dbclient/ClientTelemetry.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,9 @@ private static Tracer getTracer() {
2929
}
3030

3131
private static List<EventData> tryInjectTracingContext(Span span, List<EventData> events) {
32+
if (!span.getSpanContext().isValid() || !span.getSpanContext().isSampled())
33+
return events;
34+
3235
List<EventData> injectedEvents = new ArrayList<>();
3336
for (EventData event : events) {
3437
boolean isJsonEvent = Objects.equals(event.getContentType(), ContentType.JSON);
Lines changed: 30 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package io.kurrent.dbclient.streams;
22

3+
import com.fasterxml.jackson.databind.node.ObjectNode;
34
import io.kurrent.dbclient.*;
4-
import com.fasterxml.jackson.databind.json.JsonMapper;
55
import org.junit.jupiter.api.Assertions;
66
import org.junit.jupiter.api.Test;
77

@@ -11,43 +11,42 @@ public interface AppendTests extends ConnectionAware {
1111
@Test
1212
default void testAppendSingleEventNoStream() throws Throwable {
1313
KurrentDBClient client = getDatabase().defaultClient();
14-
15-
final String streamName = generateName();
16-
final String eventType = "TestEvent";
17-
final String eventId = "38fffbc2-339e-11ea-8c7b-784f43837872";
18-
final byte[] eventMetaData = new byte[]{0xd, 0xe, 0xa, 0xd};
19-
final JsonMapper jsonMapper = new JsonMapper();
20-
21-
EventData event = EventData.builderAsJson(eventType, jsonMapper.writeValueAsBytes(new Foo()))
22-
.metadataAsBytes(eventMetaData)
23-
.eventId(UUID.fromString(eventId))
14+
String streamName = generateName();
15+
String eventType = "TestEvent";
16+
UUID eventId = UUID.randomUUID();
17+
Foo foo = new Foo();
18+
byte[] fooBytes = mapper.writeValueAsBytes(foo);
19+
20+
EventData event = EventData.builderAsJson(eventType, fooBytes)
21+
.metadataAsBytes(fooBytes)
22+
.eventId(eventId)
2423
.build();
2524

26-
AppendToStreamOptions appendOptions = AppendToStreamOptions.get()
27-
.streamState(StreamState.noStream());
28-
29-
WriteResult appendResult = client.appendToStream(streamName, appendOptions, event)
30-
.get();
25+
WriteResult appendResult = client.appendToStream(
26+
streamName,
27+
AppendToStreamOptions.get().streamState(StreamState.noStream()),
28+
event
29+
).get();
3130

3231
Assertions.assertEquals(StreamState.streamRevision(0), appendResult.getNextExpectedRevision());
3332

34-
ReadStreamOptions readStreamOptions = ReadStreamOptions.get()
35-
.fromEnd()
36-
.backwards()
37-
.maxCount(1);
38-
39-
// Ensure appended event is readable
40-
ReadResult result = client.readStream(streamName, readStreamOptions)
41-
.get();
33+
ReadResult result = client.readStream(
34+
streamName,
35+
ReadStreamOptions.get().fromEnd().backwards().maxCount(1)
36+
).get();
4237

4338
Assertions.assertEquals(1, result.getEvents().size());
4439
RecordedEvent first = result.getEvents().get(0).getEvent();
45-
JsonMapper mapper = new JsonMapper();
46-
47-
Assertions.assertEquals(streamName, first.getStreamId());
48-
Assertions.assertEquals(eventType, first.getEventType());
49-
Assertions.assertEquals(eventId, first.getEventId().toString());
50-
Assertions.assertArrayEquals(eventMetaData, first.getUserMetadata());
51-
Assertions.assertEquals(new Foo(), mapper.readValue(first.getEventData(), Foo.class));
40+
ObjectNode userMetadata = mapper.readValue(first.getUserMetadata(), ObjectNode.class);
41+
42+
Assertions.assertAll(
43+
() -> Assertions.assertEquals(streamName, first.getStreamId()),
44+
() -> Assertions.assertEquals(eventType, first.getEventType()),
45+
() -> Assertions.assertEquals(eventId.toString(), first.getEventId().toString()),
46+
() -> Assertions.assertEquals(foo, mapper.readValue(first.getEventData(), Foo.class)),
47+
() -> Assertions.assertEquals(foo, mapper.readValue(first.getUserMetadata(), Foo.class)),
48+
() -> Assertions.assertFalse(userMetadata.has(ClientTelemetryConstants.Metadata.TRACE_ID)),
49+
() -> Assertions.assertFalse(userMetadata.has(ClientTelemetryConstants.Metadata.SPAN_ID))
50+
);
5251
}
5352
}

0 commit comments

Comments
 (0)