diff --git a/opentracing-flowid/opentracing-flowid/src/main/java/org/zalando/opentracing/flowid/DefaultFlow.java b/opentracing-flowid/opentracing-flowid/src/main/java/org/zalando/opentracing/flowid/DefaultFlow.java index 5417822c..f28bba7b 100644 --- a/opentracing-flowid/opentracing-flowid/src/main/java/org/zalando/opentracing/flowid/DefaultFlow.java +++ b/opentracing-flowid/opentracing-flowid/src/main/java/org/zalando/opentracing/flowid/DefaultFlow.java @@ -59,7 +59,10 @@ public String currentId() { @Override public void writeTo(final BiConsumer writer) { - writer.accept(Header.FLOW_ID, currentId()); + extractor.extract(activeSpan()) + .map(FlowId::getValue) + .ifPresent(value -> + writer.accept(Header.FLOW_ID, value)); } @Override diff --git a/opentracing-flowid/opentracing-flowid/src/test/java/org/zalando/opentracing/flowid/DefaultFlowNoopTracerTest.java b/opentracing-flowid/opentracing-flowid/src/test/java/org/zalando/opentracing/flowid/DefaultFlowNoopTracerTest.java index 6050acad..5fd7c353 100644 --- a/opentracing-flowid/opentracing-flowid/src/test/java/org/zalando/opentracing/flowid/DefaultFlowNoopTracerTest.java +++ b/opentracing-flowid/opentracing-flowid/src/test/java/org/zalando/opentracing/flowid/DefaultFlowNoopTracerTest.java @@ -3,6 +3,11 @@ import io.opentracing.noop.NoopTracerFactory; import org.junit.jupiter.api.Test; +import java.util.HashMap; +import java.util.Map; + +import static java.util.Collections.emptyMap; +import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertThrows; class DefaultFlowNoopTracerTest { @@ -12,4 +17,11 @@ class DefaultFlowNoopTracerTest { void shouldThrowNoActiveSpanFoundException() { assertThrows(IllegalStateException.class, unit::currentId); } + + @Test + void writeToShouldNotThrow() { + final Map target = new HashMap<>(); + unit.writeTo(target::put); + assertEquals(emptyMap(), target); + } }