From 028904fa836653e202390329f0947637b9c23488 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20J=C3=A4ckle?= Date: Wed, 29 Jan 2025 16:01:18 +0100 Subject: [PATCH] fix tracestate propagation --- .../utils/tracing/span/StartedKamonSpan.java | 14 +++++++++++--- .../model/ImmutableThingFromScratchBuilder.java | 4 ++-- .../eclipse/ditto/things/model/ThingBuilder.java | 2 +- 3 files changed, 14 insertions(+), 6 deletions(-) diff --git a/internal/utils/tracing/src/main/java/org/eclipse/ditto/internal/utils/tracing/span/StartedKamonSpan.java b/internal/utils/tracing/src/main/java/org/eclipse/ditto/internal/utils/tracing/span/StartedKamonSpan.java index 09d71cac2d..051b091bcc 100644 --- a/internal/utils/tracing/src/main/java/org/eclipse/ditto/internal/utils/tracing/span/StartedKamonSpan.java +++ b/internal/utils/tracing/src/main/java/org/eclipse/ditto/internal/utils/tracing/span/StartedKamonSpan.java @@ -18,8 +18,10 @@ import java.time.Instant; import java.util.Map; +import javax.annotation.Nullable; import javax.annotation.concurrent.ThreadSafe; +import org.eclipse.ditto.base.model.headers.DittoHeaderDefinition; import org.eclipse.ditto.internal.utils.metrics.instruments.tag.Tag; import org.eclipse.ditto.internal.utils.metrics.instruments.tag.TagSet; @@ -113,11 +115,17 @@ public SpanOperationName getOperationName() { @Override public Map propagateContext(final Map headers) { - return httpContextPropagation.propagateContextToHeaders(wrapSpanInContext(), headers); + return httpContextPropagation.propagateContextToHeaders(wrapSpanInContext( + headers.get(DittoHeaderDefinition.W3C_TRACESTATE.getKey()) + ), headers); } - private Context wrapSpanInContext() { - return Context.of(Span.Key(), span); + private Context wrapSpanInContext(@Nullable final String traceStateHeader) { + if (traceStateHeader != null) { + return Context.of(Span.Key(), span, Context.key("tracestate", ""), traceStateHeader); + } else { + return Context.of(Span.Key(), span); + } } @Override diff --git a/things/model/src/main/java/org/eclipse/ditto/things/model/ImmutableThingFromScratchBuilder.java b/things/model/src/main/java/org/eclipse/ditto/things/model/ImmutableThingFromScratchBuilder.java index 23d8ebdeb0..a967a74b11 100755 --- a/things/model/src/main/java/org/eclipse/ditto/things/model/ImmutableThingFromScratchBuilder.java +++ b/things/model/src/main/java/org/eclipse/ditto/things/model/ImmutableThingFromScratchBuilder.java @@ -20,10 +20,10 @@ import javax.annotation.Nullable; import javax.annotation.concurrent.NotThreadSafe; +import org.eclipse.ditto.base.model.entity.metadata.Metadata; import org.eclipse.ditto.json.JsonObject; import org.eclipse.ditto.json.JsonPointer; import org.eclipse.ditto.json.JsonValue; -import org.eclipse.ditto.base.model.entity.metadata.Metadata; import org.eclipse.ditto.policies.model.PolicyId; /** @@ -169,7 +169,7 @@ public FromScratch setFeature(final String featureId) { @Override public FromScratch setFeature(final String featureId, @Nullable final FeatureDefinition featureDefinition, - final FeatureProperties featureProperties) { + @Nullable final FeatureProperties featureProperties) { return setFeature(ThingsModelFactory.newFeature(featureId, featureDefinition, featureProperties)); } diff --git a/things/model/src/main/java/org/eclipse/ditto/things/model/ThingBuilder.java b/things/model/src/main/java/org/eclipse/ditto/things/model/ThingBuilder.java index 8d29c9337a..5bb1e0f679 100755 --- a/things/model/src/main/java/org/eclipse/ditto/things/model/ThingBuilder.java +++ b/things/model/src/main/java/org/eclipse/ditto/things/model/ThingBuilder.java @@ -196,7 +196,7 @@ interface FromScratch { * @throws NullPointerException if {@code featureId} is {@code null}. */ FromScratch setFeature(String featureId, FeatureDefinition featureDefinition, - FeatureProperties featureProperties); + @Nullable FeatureProperties featureProperties); /** * Sets a Feature with the given ID and properties to this builder. A previously set Feature with the