Skip to content

Commit 9286efa

Browse files
authored
Fixes and backfills missing test of localEndpoint IP default (#1251)
When we switched to use zipkin-reporter-brave, we goofed IP defaults. It happened because we never tested existence of local IP all these years! Thanks to @heesuk-ahn for reporting
1 parent 34dfe4a commit 9286efa

File tree

2 files changed

+13
-0
lines changed

2 files changed

+13
-0
lines changed

brave/src/main/java/brave/Tracing.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -475,6 +475,10 @@ static final class Default extends Tracing {
475475
this.noop = new AtomicBoolean();
476476

477477
MutableSpan defaultSpan = new MutableSpan(builder.defaultSpan); // safe copy
478+
// Lazy add localEndpoint.ip if not yet set
479+
if (defaultSpan.localIp() == null) {
480+
defaultSpan.localIp(Platform.get().linkLocalIp());
481+
}
478482

479483
Set<SpanHandler> spanHandlers = new LinkedHashSet<>(builder.spanHandlers);
480484
// When present, the Zipkin handler is invoked after the user-supplied ones.

brave/src/test/java/brave/TracingTest.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
import brave.handler.FinishedSpanHandler;
1717
import brave.handler.MutableSpan;
1818
import brave.handler.SpanHandler;
19+
import brave.internal.Platform;
1920
import brave.propagation.B3SinglePropagation;
2021
import brave.propagation.Propagation;
2122
import brave.propagation.StrictCurrentTraceContext;
@@ -70,6 +71,14 @@ public class TracingTest {
7071
assertThat(spans).isEmpty();
7172
}
7273

74+
@Test public void localEndpointDefaults() {
75+
Tracing tracing = Tracing.newBuilder().build();
76+
assertThat(tracing).extracting("tracer.pendingSpans.defaultSpan.localServiceName")
77+
.isEqualTo("unknown");
78+
assertThat(tracing).extracting("tracer.pendingSpans.defaultSpan.localIp")
79+
.isEqualTo(Platform.get().linkLocalIp());
80+
}
81+
7382
@Test public void localServiceNamePreservesCase() {
7483
String expectedLocalServiceName = "FavStar";
7584
Tracing.Builder builder = Tracing.newBuilder().localServiceName(expectedLocalServiceName);

0 commit comments

Comments
 (0)