diff --git a/micrometer-tracing-bridges/micrometer-tracing-bridge-brave/src/main/java/io/micrometer/tracing/brave/bridge/BraveBaggageInScope.java b/micrometer-tracing-bridges/micrometer-tracing-bridge-brave/src/main/java/io/micrometer/tracing/brave/bridge/BraveBaggageInScope.java index 016640cf..b4b04bda 100755 --- a/micrometer-tracing-bridges/micrometer-tracing-bridge-brave/src/main/java/io/micrometer/tracing/brave/bridge/BraveBaggageInScope.java +++ b/micrometer-tracing-bridges/micrometer-tracing-bridge-brave/src/main/java/io/micrometer/tracing/brave/bridge/BraveBaggageInScope.java @@ -66,11 +66,13 @@ public String name() { } @Override + @Nullable public String get() { return this.traceContext != null ? this.delegate.getValue(traceContext) : this.delegate.getValue(); } @Override + @Nullable public String get(TraceContext traceContext) { return this.delegate.getValue(BraveTraceContext.toBrave(traceContext)); } diff --git a/micrometer-tracing-bridges/micrometer-tracing-bridge-brave/src/main/java/io/micrometer/tracing/brave/bridge/BraveBaggageManager.java b/micrometer-tracing-bridges/micrometer-tracing-bridge-brave/src/main/java/io/micrometer/tracing/brave/bridge/BraveBaggageManager.java index 995eaead..bcb9033b 100755 --- a/micrometer-tracing-bridges/micrometer-tracing-bridge-brave/src/main/java/io/micrometer/tracing/brave/bridge/BraveBaggageManager.java +++ b/micrometer-tracing-bridges/micrometer-tracing-bridge-brave/src/main/java/io/micrometer/tracing/brave/bridge/BraveBaggageManager.java @@ -84,7 +84,7 @@ public Map getAllBaggage() { } @Override - public Map getAllBaggage(TraceContext traceContext) { + public Map getAllBaggage(@Nullable TraceContext traceContext) { if (traceContext == null) { return getAllBaggage(); } @@ -97,6 +97,7 @@ public Baggage getBaggage(String name) { } @Override + @Nullable public Baggage getBaggage(TraceContext traceContext, String name) { BaggageField baggageField = BaggageField.getByName(BraveTraceContext.toBrave(traceContext), name); if (baggageField == null) { @@ -125,6 +126,7 @@ private BraveBaggageInScope baggage(String name) { } // Taken from BraveField + @Nullable private Span currentSpan() { if (tracer != null) { io.micrometer.tracing.Span span = tracer.currentSpan(); diff --git a/micrometer-tracing-bridges/micrometer-tracing-bridge-brave/src/main/java/io/micrometer/tracing/brave/bridge/BraveCurrentTraceContext.java b/micrometer-tracing-bridges/micrometer-tracing-bridge-brave/src/main/java/io/micrometer/tracing/brave/bridge/BraveCurrentTraceContext.java index b01e5d92..820ee379 100755 --- a/micrometer-tracing-bridges/micrometer-tracing-bridge-brave/src/main/java/io/micrometer/tracing/brave/bridge/BraveCurrentTraceContext.java +++ b/micrometer-tracing-bridges/micrometer-tracing-bridge-brave/src/main/java/io/micrometer/tracing/brave/bridge/BraveCurrentTraceContext.java @@ -15,6 +15,7 @@ */ package io.micrometer.tracing.brave.bridge; +import io.micrometer.common.lang.Nullable; import io.micrometer.tracing.CurrentTraceContext; import io.micrometer.tracing.TraceContext; @@ -59,6 +60,7 @@ public static CurrentTraceContext fromBrave(brave.propagation.CurrentTraceContex } @Override + @Nullable public TraceContext context() { brave.propagation.TraceContext context = this.delegate.get(); if (context == null) { @@ -68,13 +70,13 @@ public TraceContext context() { } @Override - public Scope newScope(TraceContext context) { + public Scope newScope(@Nullable TraceContext context) { return new BraveScope( this.delegate.newScope(io.micrometer.tracing.brave.bridge.BraveTraceContext.toBrave(context))); } @Override - public Scope maybeScope(TraceContext context) { + public Scope maybeScope(@Nullable TraceContext context) { return new BraveScope( this.delegate.maybeScope(io.micrometer.tracing.brave.bridge.BraveTraceContext.toBrave(context))); } diff --git a/micrometer-tracing-bridges/micrometer-tracing-bridge-brave/src/main/java/io/micrometer/tracing/brave/bridge/BraveFinishedSpan.java b/micrometer-tracing-bridges/micrometer-tracing-bridge-brave/src/main/java/io/micrometer/tracing/brave/bridge/BraveFinishedSpan.java index 03e63930..b3ef07f4 100755 --- a/micrometer-tracing-bridges/micrometer-tracing-bridge-brave/src/main/java/io/micrometer/tracing/brave/bridge/BraveFinishedSpan.java +++ b/micrometer-tracing-bridges/micrometer-tracing-bridge-brave/src/main/java/io/micrometer/tracing/brave/bridge/BraveFinishedSpan.java @@ -16,6 +16,7 @@ package io.micrometer.tracing.brave.bridge; import brave.handler.MutableSpan; +import io.micrometer.common.lang.Nullable; import io.micrometer.tracing.Link; import io.micrometer.tracing.Span; import io.micrometer.tracing.TraceContext; @@ -154,6 +155,7 @@ public String getTraceId() { } @Override + @Nullable public Throwable getError() { return this.mutableSpan.error(); } @@ -173,6 +175,7 @@ public Span.Kind getKind() { } @Override + @Nullable public String getRemoteServiceName() { return this.mutableSpan.remoteServiceName(); } diff --git a/micrometer-tracing-bridges/micrometer-tracing-bridge-brave/src/main/java/io/micrometer/tracing/brave/bridge/BravePropagator.java b/micrometer-tracing-bridges/micrometer-tracing-bridge-brave/src/main/java/io/micrometer/tracing/brave/bridge/BravePropagator.java index 18de7a21..04bdd19e 100755 --- a/micrometer-tracing-bridges/micrometer-tracing-bridge-brave/src/main/java/io/micrometer/tracing/brave/bridge/BravePropagator.java +++ b/micrometer-tracing-bridges/micrometer-tracing-bridge-brave/src/main/java/io/micrometer/tracing/brave/bridge/BravePropagator.java @@ -19,6 +19,7 @@ import brave.baggage.BaggageField; import brave.internal.baggage.BaggageFields; import brave.propagation.TraceContextOrSamplingFlags; +import io.micrometer.common.lang.Nullable; import io.micrometer.tracing.Span; import io.micrometer.tracing.TraceContext; import io.micrometer.tracing.propagation.Propagator; @@ -49,7 +50,7 @@ public List fields() { } @Override - public void inject(TraceContext traceContext, C carrier, Setter setter) { + public void inject(TraceContext traceContext, @Nullable C carrier, Setter setter) { this.tracing.propagation().injector(setter::set).inject(BraveTraceContext.toBrave(traceContext), carrier); } diff --git a/micrometer-tracing-bridges/micrometer-tracing-bridge-brave/src/main/java/io/micrometer/tracing/brave/bridge/BraveSpan.java b/micrometer-tracing-bridges/micrometer-tracing-bridge-brave/src/main/java/io/micrometer/tracing/brave/bridge/BraveSpan.java index 671f0077..bb349ba2 100755 --- a/micrometer-tracing-bridges/micrometer-tracing-bridge-brave/src/main/java/io/micrometer/tracing/brave/bridge/BraveSpan.java +++ b/micrometer-tracing-bridges/micrometer-tracing-bridge-brave/src/main/java/io/micrometer/tracing/brave/bridge/BraveSpan.java @@ -18,6 +18,7 @@ import java.util.Objects; import java.util.concurrent.TimeUnit; +import io.micrometer.common.lang.Nullable; import io.micrometer.tracing.Span; import io.micrometer.tracing.TraceContext; @@ -44,7 +45,8 @@ public BraveSpan(brave.Span delegate) { * @param span Tracing version * @return Brave's version */ - public static brave.Span toBrave(Span span) { + @Nullable + public static brave.Span toBrave(@Nullable Span span) { BraveSpan braveSpan = (BraveSpan) span; if (braveSpan == null) { return null; diff --git a/micrometer-tracing-bridges/micrometer-tracing-bridge-brave/src/main/java/io/micrometer/tracing/brave/bridge/BraveTraceContext.java b/micrometer-tracing-bridges/micrometer-tracing-bridge-brave/src/main/java/io/micrometer/tracing/brave/bridge/BraveTraceContext.java index cfd8923e..3fa7be92 100755 --- a/micrometer-tracing-bridges/micrometer-tracing-bridge-brave/src/main/java/io/micrometer/tracing/brave/bridge/BraveTraceContext.java +++ b/micrometer-tracing-bridges/micrometer-tracing-bridge-brave/src/main/java/io/micrometer/tracing/brave/bridge/BraveTraceContext.java @@ -43,7 +43,8 @@ public BraveTraceContext(brave.propagation.TraceContext traceContext) { * @param traceContext Tracing version * @return Brave version */ - public static brave.propagation.TraceContext toBrave(TraceContext traceContext) { + @Nullable + public static brave.propagation.TraceContext toBrave(@Nullable TraceContext traceContext) { if (traceContext == null) { return null; } @@ -76,6 +77,7 @@ public String spanId() { } @Override + @Nullable public Boolean sampled() { return this.traceContext.sampled(); } diff --git a/micrometer-tracing-bridges/micrometer-tracing-bridge-brave/src/main/java/io/micrometer/tracing/brave/bridge/BraveTracer.java b/micrometer-tracing-bridges/micrometer-tracing-bridge-brave/src/main/java/io/micrometer/tracing/brave/bridge/BraveTracer.java index 793d46c3..1bf636a6 100755 --- a/micrometer-tracing-bridges/micrometer-tracing-bridge-brave/src/main/java/io/micrometer/tracing/brave/bridge/BraveTracer.java +++ b/micrometer-tracing-bridges/micrometer-tracing-bridge-brave/src/main/java/io/micrometer/tracing/brave/bridge/BraveTracer.java @@ -16,6 +16,7 @@ package io.micrometer.tracing.brave.bridge; import brave.propagation.TraceContextOrSamplingFlags; +import io.micrometer.common.lang.Nullable; import io.micrometer.tracing.*; import java.util.List; @@ -60,7 +61,8 @@ public BraveTracer(brave.Tracer tracer, CurrentTraceContext context) { } @Override - public Span nextSpan(Span parent) { + @Nullable + public Span nextSpan(@Nullable Span parent) { if (parent == null) { return nextSpan(); } @@ -72,7 +74,7 @@ public Span nextSpan(Span parent) { } @Override - public SpanInScope withSpan(Span span) { + public SpanInScope withSpan(@Nullable Span span) { return new BraveSpanInScope(tracer.withSpanInScope(span == null ? null : ((BraveSpan) span).delegate)); } @@ -82,6 +84,7 @@ public SpanCustomizer currentSpanCustomizer() { } @Override + @Nullable public Span currentSpan() { brave.Span currentSpan = this.tracer.currentSpan(); if (currentSpan == null) { @@ -111,7 +114,7 @@ public TraceContext.Builder traceContextBuilder() { } @Override - public Map getAllBaggage(TraceContext traceContext) { + public Map getAllBaggage(@Nullable TraceContext traceContext) { return this.braveBaggageManager.getAllBaggage(traceContext); } @@ -121,11 +124,13 @@ public Map getAllBaggage() { } @Override + @Nullable public Baggage getBaggage(String name) { return this.braveBaggageManager.getBaggage(name); } @Override + @Nullable public Baggage getBaggage(TraceContext traceContext, String name) { return this.braveBaggageManager.getBaggage(traceContext, name); } diff --git a/micrometer-tracing-bridges/micrometer-tracing-bridge-brave/src/main/java/io/micrometer/tracing/brave/bridge/LinkUtils.java b/micrometer-tracing-bridges/micrometer-tracing-bridge-brave/src/main/java/io/micrometer/tracing/brave/bridge/LinkUtils.java index 7b1a655c..d3c1a5db 100644 --- a/micrometer-tracing-bridges/micrometer-tracing-bridge-brave/src/main/java/io/micrometer/tracing/brave/bridge/LinkUtils.java +++ b/micrometer-tracing-bridges/micrometer-tracing-bridge-brave/src/main/java/io/micrometer/tracing/brave/bridge/LinkUtils.java @@ -15,6 +15,7 @@ */ package io.micrometer.tracing.brave.bridge; +import io.micrometer.common.lang.Nullable; import io.micrometer.common.util.StringUtils; import io.micrometer.tracing.Link; import io.micrometer.tracing.TraceContext; @@ -74,6 +75,7 @@ static int nextIndex(Map tags) { .size(); } + @Nullable static Link toLink(List> groupedTags) { String traceId = ""; String spanId = ""; @@ -119,6 +121,7 @@ static long spanId(String spanId) { return fromString[fromString.length == 2 ? 1 : 0]; } + @Nullable static String tagKeyNameFromString(String tag) { Matcher matcher = TAG_KEY.matcher(tag); if (matcher.matches()) { diff --git a/micrometer-tracing-bridges/micrometer-tracing-bridge-otel/src/main/java/io/micrometer/tracing/otel/bridge/EventPublishingContextWrapper.java b/micrometer-tracing-bridges/micrometer-tracing-bridge-otel/src/main/java/io/micrometer/tracing/otel/bridge/EventPublishingContextWrapper.java index f8cccd84..4c9f9221 100644 --- a/micrometer-tracing-bridges/micrometer-tracing-bridge-otel/src/main/java/io/micrometer/tracing/otel/bridge/EventPublishingContextWrapper.java +++ b/micrometer-tracing-bridges/micrometer-tracing-bridge-otel/src/main/java/io/micrometer/tracing/otel/bridge/EventPublishingContextWrapper.java @@ -76,6 +76,7 @@ public static class ScopeAttachedEvent { /** * Context corresponding to the attached scope. Might be {@code null}. */ + @Nullable final Context context; /** @@ -86,10 +87,12 @@ public ScopeAttachedEvent(@Nullable Context context) { this.context = context; } + @Nullable public Span getSpan() { return Span.fromContextOrNull(context); } + @Nullable public Baggage getBaggage() { return Baggage.fromContextOrNull(context); } @@ -117,6 +120,7 @@ public static class ScopeRestoredEvent { * {@link Context} corresponding to the scope being restored. Might be * {@code null}. */ + @Nullable final Context context; /** @@ -127,10 +131,12 @@ public ScopeRestoredEvent(@Nullable Context context) { this.context = context; } + @Nullable public Span getSpan() { return Span.fromContextOrNull(context); } + @Nullable public Baggage getBaggage() { return Baggage.fromContextOrNull(context); } diff --git a/micrometer-tracing-bridges/micrometer-tracing-bridge-otel/src/main/java/io/micrometer/tracing/otel/bridge/OtelBaggageInScope.java b/micrometer-tracing-bridges/micrometer-tracing-bridge-otel/src/main/java/io/micrometer/tracing/otel/bridge/OtelBaggageInScope.java index 988d943e..305a461f 100644 --- a/micrometer-tracing-bridges/micrometer-tracing-bridge-otel/src/main/java/io/micrometer/tracing/otel/bridge/OtelBaggageInScope.java +++ b/micrometer-tracing-bridges/micrometer-tracing-bridge-otel/src/main/java/io/micrometer/tracing/otel/bridge/OtelBaggageInScope.java @@ -15,6 +15,7 @@ */ package io.micrometer.tracing.otel.bridge; +import io.micrometer.common.lang.Nullable; import io.micrometer.common.util.internal.logging.InternalLogger; import io.micrometer.common.util.internal.logging.InternalLoggerFactory; import io.micrometer.tracing.BaggageInScope; @@ -83,6 +84,7 @@ public String name() { } @Override + @Nullable public String get() { if (entry.get() != null) { return entry.get().value; @@ -91,6 +93,7 @@ public String get() { } @Override + @Nullable public String get(TraceContext traceContext) { Entry entry = this.otelBaggageManager.getEntry((OtelTraceContext) traceContext, entry().getKey()); if (entry == null) { @@ -105,7 +108,7 @@ public io.micrometer.tracing.Baggage set(String value) { return doSet(this.currentTraceContext.context(), value); } - private io.micrometer.tracing.Baggage doSet(TraceContext context, String value) { + private io.micrometer.tracing.Baggage doSet(@Nullable TraceContext context, String value) { if (context == null) { return this; } diff --git a/micrometer-tracing-bridges/micrometer-tracing-bridge-otel/src/main/java/io/micrometer/tracing/otel/bridge/OtelBaggageManager.java b/micrometer-tracing-bridges/micrometer-tracing-bridge-otel/src/main/java/io/micrometer/tracing/otel/bridge/OtelBaggageManager.java index 7ff0e637..44ce3981 100644 --- a/micrometer-tracing-bridges/micrometer-tracing-bridge-otel/src/main/java/io/micrometer/tracing/otel/bridge/OtelBaggageManager.java +++ b/micrometer-tracing-bridges/micrometer-tracing-bridge-otel/src/main/java/io/micrometer/tracing/otel/bridge/OtelBaggageManager.java @@ -87,7 +87,7 @@ private Map toMap(CompositeBaggage compositeBaggage) { } @Override - public Map getAllBaggage(TraceContext traceContext) { + public Map getAllBaggage(@Nullable TraceContext traceContext) { if (traceContext == null) { return getAllBaggage(); } @@ -98,7 +98,7 @@ CompositeBaggage currentBaggage() { return baggage((OtelTraceContext) currentTraceContext.context()); } - private CompositeBaggage baggage(OtelTraceContext traceContext) { + private CompositeBaggage baggage(@Nullable OtelTraceContext traceContext) { Context context = Context.current(); Deque stack = new ArrayDeque<>(); stack.addFirst(context); @@ -114,13 +114,14 @@ public io.micrometer.tracing.Baggage getBaggage(String name) { return createNewEntryIfMissing(name, entry); } - io.micrometer.tracing.Baggage createNewEntryIfMissing(String name, Entry entry) { + io.micrometer.tracing.Baggage createNewEntryIfMissing(String name, @Nullable Entry entry) { if (entry == null) { return createBaggage(name); } return otelBaggage(entry); } + @Nullable private Entry getBaggage(String name, io.opentelemetry.api.baggage.Baggage baggage) { return entryForName(name, baggage); } @@ -147,16 +148,19 @@ public io.micrometer.tracing.Baggage getBaggage(TraceContext traceContext, Strin return null; } + @Nullable Entry getEntry(OtelTraceContext traceContext, String name) { OtelTraceContext context = traceContext; Context ctx = context.context(); return getBaggage(name, Baggage.fromContext(ctx)); } + @Nullable Context removeFirst(Deque stack) { return stack.isEmpty() ? null : stack.removeFirst(); } + @Nullable private Entry entryForName(String name, io.opentelemetry.api.baggage.Baggage baggage) { return Entry.fromBaggage(baggage) .stream() @@ -265,6 +269,7 @@ public Map asMap() { } @Override + @Nullable public String getEntryValue(String entryKey) { return this.entries.stream() .filter(entry -> entryKey.equals(entry.getKey())) @@ -284,11 +289,12 @@ class Entry implements BaggageEntry { final String key; + @Nullable final String value; final BaggageEntryMetadata entryMetadata; - Entry(String key, String value, BaggageEntryMetadata entryMetadata) { + Entry(String key, @Nullable String value, BaggageEntryMetadata entryMetadata) { this.key = key; this.value = value; this.entryMetadata = entryMetadata; diff --git a/micrometer-tracing-bridges/micrometer-tracing-bridge-otel/src/main/java/io/micrometer/tracing/otel/bridge/OtelCurrentTraceContext.java b/micrometer-tracing-bridges/micrometer-tracing-bridge-otel/src/main/java/io/micrometer/tracing/otel/bridge/OtelCurrentTraceContext.java index 8a58ae20..6fdd7dfc 100644 --- a/micrometer-tracing-bridges/micrometer-tracing-bridge-otel/src/main/java/io/micrometer/tracing/otel/bridge/OtelCurrentTraceContext.java +++ b/micrometer-tracing-bridges/micrometer-tracing-bridge-otel/src/main/java/io/micrometer/tracing/otel/bridge/OtelCurrentTraceContext.java @@ -19,6 +19,7 @@ import java.util.concurrent.Executor; import java.util.concurrent.ExecutorService; +import io.micrometer.common.lang.Nullable; import io.micrometer.tracing.CurrentTraceContext; import io.micrometer.tracing.TraceContext; import io.opentelemetry.api.baggage.Baggage; @@ -42,6 +43,7 @@ public class OtelCurrentTraceContext implements CurrentTraceContext { private static final ContextKey OTEL_CONTEXT_KEY = ContextKey.named(TRACING_OTEL_CONTEXT_KEY); @Override + @Nullable public TraceContext context() { OtelTraceContext otelTraceContext = Context.current().get(OTEL_CONTEXT_KEY); if (otelTraceContext != null) { @@ -65,7 +67,7 @@ public TraceContext context() { * @return scope that always must be closed */ @Override - public Scope newScope(TraceContext context) { + public Scope newScope(@Nullable TraceContext context) { OtelTraceContext otelTraceContext = (OtelTraceContext) context; if (otelTraceContext == null) { return new WrappedScope(io.opentelemetry.context.Scope.noop()); @@ -106,7 +108,7 @@ private boolean sameBaggage(Baggage currentBaggage, Baggage oldBaggage) { } @Override - public Scope maybeScope(TraceContext context) { + public Scope maybeScope(@Nullable TraceContext context) { if (context == null) { io.opentelemetry.context.Scope scope = Context.root().makeCurrent(); return new WrappedScope(scope); @@ -138,16 +140,18 @@ static class WrappedScope implements Scope { final io.opentelemetry.context.Scope scope; + @Nullable final OtelTraceContext currentOtelTraceContext; + @Nullable final Context oldContext; WrappedScope(io.opentelemetry.context.Scope scope) { this(scope, null, null); } - WrappedScope(io.opentelemetry.context.Scope scope, OtelTraceContext currentOtelTraceContext, - Context oldContext) { + WrappedScope(io.opentelemetry.context.Scope scope, @Nullable OtelTraceContext currentOtelTraceContext, + @Nullable Context oldContext) { this.scope = scope; this.currentOtelTraceContext = currentOtelTraceContext; this.oldContext = oldContext; diff --git a/micrometer-tracing-bridges/micrometer-tracing-bridge-otel/src/main/java/io/micrometer/tracing/otel/bridge/OtelFinishedSpan.java b/micrometer-tracing-bridges/micrometer-tracing-bridge-otel/src/main/java/io/micrometer/tracing/otel/bridge/OtelFinishedSpan.java index 34fd7698..13899cbb 100644 --- a/micrometer-tracing-bridges/micrometer-tracing-bridge-otel/src/main/java/io/micrometer/tracing/otel/bridge/OtelFinishedSpan.java +++ b/micrometer-tracing-bridges/micrometer-tracing-bridge-otel/src/main/java/io/micrometer/tracing/otel/bridge/OtelFinishedSpan.java @@ -15,6 +15,7 @@ */ package io.micrometer.tracing.otel.bridge; +import io.micrometer.common.lang.Nullable; import io.micrometer.tracing.Link; import io.micrometer.tracing.Span; import io.micrometer.tracing.TraceContext; @@ -45,6 +46,7 @@ public class OtelFinishedSpan implements FinishedSpan { private final MutableSpanData spanData; + @Nullable private volatile String linkLocalIp; OtelFinishedSpan(SpanData spanData) { @@ -160,11 +162,13 @@ public String getSpanId() { } @Override + @Nullable public String getParentId() { return this.spanData.getParentSpanId(); } @Override + @Nullable public String getRemoteIp() { return getTags().get(SemanticAttributes.NET_SOCK_PEER_ADDR.getKey()); } @@ -191,6 +195,7 @@ public FinishedSpan setLocalIp(String ip) { return this; } + @Nullable private String produceLinkLocalIp() { try { Enumeration nics = NetworkInterface.getNetworkInterfaces(); @@ -231,6 +236,7 @@ public String getTraceId() { } @Override + @Nullable public Throwable getError() { Attributes attributes = this.spanData.getEvents() .stream() @@ -261,6 +267,7 @@ public Span.Kind getKind() { } @Override + @Nullable public String getRemoteServiceName() { return this.spanData.getAttributes().get(AttributeKey.stringKey("peer.service")); } diff --git a/micrometer-tracing-bridges/micrometer-tracing-bridge-otel/src/main/java/io/micrometer/tracing/otel/bridge/OtelPropagator.java b/micrometer-tracing-bridges/micrometer-tracing-bridge-otel/src/main/java/io/micrometer/tracing/otel/bridge/OtelPropagator.java index 1f78f6ca..117c080b 100644 --- a/micrometer-tracing-bridges/micrometer-tracing-bridge-otel/src/main/java/io/micrometer/tracing/otel/bridge/OtelPropagator.java +++ b/micrometer-tracing-bridges/micrometer-tracing-bridge-otel/src/main/java/io/micrometer/tracing/otel/bridge/OtelPropagator.java @@ -15,6 +15,7 @@ */ package io.micrometer.tracing.otel.bridge; +import io.micrometer.common.lang.Nullable; import io.micrometer.tracing.Span; import io.micrometer.tracing.TraceContext; import io.micrometer.tracing.propagation.Propagator; @@ -55,7 +56,7 @@ public List fields() { } @Override - public void inject(TraceContext traceContext, C carrier, Setter setter) { + public void inject(TraceContext traceContext, @Nullable C carrier, Setter setter) { Context context = OtelTraceContext.toOtelContext(traceContext); this.propagator.inject(context, carrier, setter::set); } @@ -69,7 +70,7 @@ public Iterable keys(C carrier) { } @Override - public String get(C carrier, String key) { + public String get(@Nullable C carrier, String key) { return getter.get(carrier, key); } }); @@ -78,7 +79,8 @@ public String get(C carrier, String key) { return OtelSpanBuilder.fromOtel(this.tracer).setParent(otelTraceContext); } - private static OtelTraceContext getOtelTraceContext(Context extracted, io.opentelemetry.api.trace.Span span) { + private static OtelTraceContext getOtelTraceContext(Context extracted, + @Nullable io.opentelemetry.api.trace.Span span) { if (span == null || span.equals(io.opentelemetry.api.trace.Span.getInvalid())) { io.opentelemetry.api.trace.Span invalid = io.opentelemetry.api.trace.Span.getInvalid(); return new OtelTraceContext(extracted, invalid.getSpanContext(), invalid); diff --git a/micrometer-tracing-bridges/micrometer-tracing-bridge-otel/src/main/java/io/micrometer/tracing/otel/bridge/OtelSpan.java b/micrometer-tracing-bridges/micrometer-tracing-bridge-otel/src/main/java/io/micrometer/tracing/otel/bridge/OtelSpan.java index 98da4614..3b43b44d 100644 --- a/micrometer-tracing-bridges/micrometer-tracing-bridge-otel/src/main/java/io/micrometer/tracing/otel/bridge/OtelSpan.java +++ b/micrometer-tracing-bridges/micrometer-tracing-bridge-otel/src/main/java/io/micrometer/tracing/otel/bridge/OtelSpan.java @@ -96,7 +96,7 @@ public Span event(String value) { @Override public Span event(String value, long time, TimeUnit timeUnit) { this.delegate.addEvent(value, time, timeUnit); - return null; + return this; } @Override diff --git a/micrometer-tracing-bridges/micrometer-tracing-bridge-otel/src/main/java/io/micrometer/tracing/otel/bridge/OtelTraceContext.java b/micrometer-tracing-bridges/micrometer-tracing-bridge-otel/src/main/java/io/micrometer/tracing/otel/bridge/OtelTraceContext.java index 33ec243a..39d1b4b7 100644 --- a/micrometer-tracing-bridges/micrometer-tracing-bridge-otel/src/main/java/io/micrometer/tracing/otel/bridge/OtelTraceContext.java +++ b/micrometer-tracing-bridges/micrometer-tracing-bridge-otel/src/main/java/io/micrometer/tracing/otel/bridge/OtelTraceContext.java @@ -37,9 +37,10 @@ public class OtelTraceContext implements TraceContext { final SpanContext delegate; + @Nullable final Span span; - OtelTraceContext(Context context, SpanContext delegate, @Nullable Span span) { + OtelTraceContext(@Nullable Context context, SpanContext delegate, @Nullable Span span) { this(new AtomicReference<>(context == null ? Context.current() : context), delegate, span); } @@ -59,7 +60,7 @@ public class OtelTraceContext implements TraceContext { this(context(span), span.getSpanContext(), span); } - private static AtomicReference context(Span span) { + private static AtomicReference context(@Nullable Span span) { if (span instanceof SpanFromSpanContext) { Context contextFromParent = ((SpanFromSpanContext) span).parentTraceContext.context(); return new AtomicReference<>(contextFromParent); @@ -100,6 +101,7 @@ public static Context toOtelContext(TraceContext context) { * @return OTel version * @since 1.1.0 */ + @Nullable public static SpanContext toOtelSpanContext(TraceContext context) { if (context instanceof OtelTraceContext) { return ((OtelTraceContext) context).delegate; @@ -152,7 +154,7 @@ SpanContext spanContext() { return this.delegate; } - void updateContext(Context context) { + void updateContext(@Nullable Context context) { this.otelContext.set(context); } diff --git a/micrometer-tracing-bridges/micrometer-tracing-bridge-otel/src/main/java/io/micrometer/tracing/otel/bridge/OtelTracer.java b/micrometer-tracing-bridges/micrometer-tracing-bridge-otel/src/main/java/io/micrometer/tracing/otel/bridge/OtelTracer.java index a57357f5..6301690e 100644 --- a/micrometer-tracing-bridges/micrometer-tracing-bridge-otel/src/main/java/io/micrometer/tracing/otel/bridge/OtelTracer.java +++ b/micrometer-tracing-bridges/micrometer-tracing-bridge-otel/src/main/java/io/micrometer/tracing/otel/bridge/OtelTracer.java @@ -15,6 +15,7 @@ */ package io.micrometer.tracing.otel.bridge; +import io.micrometer.common.lang.Nullable; import io.micrometer.tracing.*; import io.opentelemetry.context.Context; import io.opentelemetry.context.Scope; @@ -65,7 +66,7 @@ public OtelTracer(io.opentelemetry.api.trace.Tracer tracer, OtelCurrentTraceCont } @Override - public Span nextSpan(Span parent) { + public Span nextSpan(@Nullable Span parent) { if (parent == null) { return nextSpan(); } @@ -89,13 +90,13 @@ public Span nextSpan(Span parent) { } @Override - public Tracer.SpanInScope withSpan(Span span) { + public Tracer.SpanInScope withSpan(@Nullable Span span) { TraceContext traceContext = traceContext(span); CurrentTraceContext.Scope scope = this.otelCurrentTraceContext.maybeScope(traceContext); return new WrappedSpanInScope(scope); } - private TraceContext traceContext(Span span) { + private TraceContext traceContext(@Nullable Span span) { if (span == null) { // remove any existing span/baggage data from the current state of anything // that might be holding on to it. @@ -114,6 +115,7 @@ public SpanCustomizer currentSpanCustomizer() { } @Override + @Nullable public Span currentSpan() { OtelTraceContext context = (OtelTraceContext) this.otelCurrentTraceContext.context(); if (context != null && context.span != null) { @@ -161,16 +163,18 @@ public Map getAllBaggage() { } @Override - public Map getAllBaggage(TraceContext traceContext) { + public Map getAllBaggage(@Nullable TraceContext traceContext) { return this.otelBaggageManager.getAllBaggage(traceContext); } @Override + @Nullable public Baggage getBaggage(String name) { return this.otelBaggageManager.getBaggage(name); } @Override + @Nullable public Baggage getBaggage(TraceContext traceContext, String name) { return this.otelBaggageManager.getBaggage(traceContext, name); } diff --git a/micrometer-tracing-bridges/micrometer-tracing-bridge-otel/src/main/java/io/micrometer/tracing/otel/bridge/SpanFromSpanContext.java b/micrometer-tracing-bridges/micrometer-tracing-bridge-otel/src/main/java/io/micrometer/tracing/otel/bridge/SpanFromSpanContext.java index b2fd90c7..2383cc97 100644 --- a/micrometer-tracing-bridges/micrometer-tracing-bridge-otel/src/main/java/io/micrometer/tracing/otel/bridge/SpanFromSpanContext.java +++ b/micrometer-tracing-bridges/micrometer-tracing-bridge-otel/src/main/java/io/micrometer/tracing/otel/bridge/SpanFromSpanContext.java @@ -34,7 +34,7 @@ class SpanFromSpanContext implements io.opentelemetry.api.trace.Span { final OtelTraceContext parentTraceContext; - SpanFromSpanContext(io.opentelemetry.api.trace.Span span, SpanContext newSpanContext, + SpanFromSpanContext(@Nullable io.opentelemetry.api.trace.Span span, SpanContext newSpanContext, OtelTraceContext parentTraceContext) { this.span = span != null ? span : io.opentelemetry.api.trace.Span.wrap(newSpanContext); this.newSpanContext = newSpanContext; diff --git a/micrometer-tracing/src/main/java/io/micrometer/tracing/BaggageManager.java b/micrometer-tracing/src/main/java/io/micrometer/tracing/BaggageManager.java index cb1988e7..482bee3c 100644 --- a/micrometer-tracing/src/main/java/io/micrometer/tracing/BaggageManager.java +++ b/micrometer-tracing/src/main/java/io/micrometer/tracing/BaggageManager.java @@ -93,6 +93,7 @@ default Map getAllBaggage(@Nullable TraceContext traceContext) { * @param name baggage name * @return baggage if present or creates a new one if missing with {@code null} value */ + @Nullable Baggage getBaggage(String name); /** diff --git a/micrometer-tracing/src/main/java/io/micrometer/tracing/TraceContext.java b/micrometer-tracing/src/main/java/io/micrometer/tracing/TraceContext.java index 73a2d674..73d51b90 100644 --- a/micrometer-tracing/src/main/java/io/micrometer/tracing/TraceContext.java +++ b/micrometer-tracing/src/main/java/io/micrometer/tracing/TraceContext.java @@ -73,6 +73,7 @@ public Boolean sampled() { * @return {@code true} when sampled, {@code false} when not sampled and {@code null} * when sampling decision should be deferred */ + @Nullable Boolean sampled(); /** diff --git a/micrometer-tracing/src/main/java/io/micrometer/tracing/Tracer.java b/micrometer-tracing/src/main/java/io/micrometer/tracing/Tracer.java index 69833a9e..e20465f2 100644 --- a/micrometer-tracing/src/main/java/io/micrometer/tracing/Tracer.java +++ b/micrometer-tracing/src/main/java/io/micrometer/tracing/Tracer.java @@ -158,6 +158,7 @@ public Baggage createBaggage(String name, String value) { * @param parent parent span * @return a child span for the given parent, {@code null} if context was empty. */ + @Nullable Span nextSpan(@Nullable Span parent); /**