From a5ac119e245681e4b7e9af769243323d6567cdad Mon Sep 17 00:00:00 2001 From: NithinU2802 Date: Tue, 28 Jul 2026 16:58:03 +0530 Subject: [PATCH 1/2] fix: handle null context for fromContext and fromContextOrNull in Baggage --- .../main/java/io/opentelemetry/api/baggage/Baggage.java | 9 +++++++++ .../io/opentelemetry/api/baggage/BaggageContextTest.java | 6 ++++++ 2 files changed, 15 insertions(+) diff --git a/api/all/src/main/java/io/opentelemetry/api/baggage/Baggage.java b/api/all/src/main/java/io/opentelemetry/api/baggage/Baggage.java index 12b81d7b033..c9de1f05f3a 100644 --- a/api/all/src/main/java/io/opentelemetry/api/baggage/Baggage.java +++ b/api/all/src/main/java/io/opentelemetry/api/baggage/Baggage.java @@ -5,6 +5,7 @@ package io.opentelemetry.api.baggage; +import io.opentelemetry.common.impl.ApiUsageLogger; import io.opentelemetry.context.Context; import io.opentelemetry.context.ImplicitContextKeyed; import java.util.Map; @@ -52,6 +53,10 @@ static Baggage current() { * Baggage} if there is no baggage in the context. */ static Baggage fromContext(Context context) { + if (context == null) { + ApiUsageLogger.logNullParam(Baggage.class, "fromContext", "context"); + return empty(); + } Baggage baggage = context.get(BaggageContextKey.KEY); return baggage != null ? baggage : empty(); } @@ -62,6 +67,10 @@ static Baggage fromContext(Context context) { */ @Nullable static Baggage fromContextOrNull(Context context) { + if (context == null) { + ApiUsageLogger.logNullParam(Context.class, "fromContextOrNull", "context"); + return null; + } return context.get(BaggageContextKey.KEY); } diff --git a/api/all/src/test/java/io/opentelemetry/api/baggage/BaggageContextTest.java b/api/all/src/test/java/io/opentelemetry/api/baggage/BaggageContextTest.java index b8dfd63e168..91203943012 100644 --- a/api/all/src/test/java/io/opentelemetry/api/baggage/BaggageContextTest.java +++ b/api/all/src/test/java/io/opentelemetry/api/baggage/BaggageContextTest.java @@ -42,6 +42,12 @@ void testGetBaggage_ExplicitContext() { assertThat(Baggage.fromContext(context)).isSameAs(baggage); } + @Test + void fromContext_null() { + assertThat(Baggage.fromContext(null)).isEqualTo(Baggage.empty()); + assertThat(Baggage.fromContextOrNull(null)).isNull(); + } + @Test void testGetBaggageWithoutDefault_DefaultContext() { Baggage baggage = Baggage.fromContextOrNull(Context.root()); From 195ebdefb3cb3eb69efa524f970f5a4dd8982f13 Mon Sep 17 00:00:00 2001 From: NithinU2802 Date: Tue, 28 Jul 2026 19:55:59 +0530 Subject: [PATCH 2/2] fix: update Context to Baggage for consistency, split fromContext_null and fromContextOrNull_null tests, and add LogCapturer assertions --- .../io/opentelemetry/api/baggage/Baggage.java | 2 +- .../api/baggage/BaggageContextTest.java | 21 +++++++++++++++++-- 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/api/all/src/main/java/io/opentelemetry/api/baggage/Baggage.java b/api/all/src/main/java/io/opentelemetry/api/baggage/Baggage.java index c9de1f05f3a..243ce157b0a 100644 --- a/api/all/src/main/java/io/opentelemetry/api/baggage/Baggage.java +++ b/api/all/src/main/java/io/opentelemetry/api/baggage/Baggage.java @@ -68,7 +68,7 @@ static Baggage fromContext(Context context) { @Nullable static Baggage fromContextOrNull(Context context) { if (context == null) { - ApiUsageLogger.logNullParam(Context.class, "fromContextOrNull", "context"); + ApiUsageLogger.logNullParam(Baggage.class, "fromContextOrNull", "context"); return null; } return context.get(BaggageContextKey.KEY); diff --git a/api/all/src/test/java/io/opentelemetry/api/baggage/BaggageContextTest.java b/api/all/src/test/java/io/opentelemetry/api/baggage/BaggageContextTest.java index 91203943012..8d8800a3e77 100644 --- a/api/all/src/test/java/io/opentelemetry/api/baggage/BaggageContextTest.java +++ b/api/all/src/test/java/io/opentelemetry/api/baggage/BaggageContextTest.java @@ -7,12 +7,21 @@ import static org.assertj.core.api.Assertions.assertThat; +import io.github.netmikey.logunit.api.LogCapturer; import io.opentelemetry.context.Context; import io.opentelemetry.context.Scope; +import io.opentelemetry.internal.testing.slf4j.SuppressLogger; import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.RegisterExtension; +import org.slf4j.event.Level; +@SuppressLogger(loggerName = "io.opentelemetry.usage") class BaggageContextTest { + @RegisterExtension + LogCapturer logCapturer = + LogCapturer.create().captureForLogger("io.opentelemetry.usage", Level.TRACE); + @Test void testGetCurrentBaggage_Default() { try (Scope s = Context.root().makeCurrent()) { @@ -44,8 +53,16 @@ void testGetBaggage_ExplicitContext() { @Test void fromContext_null() { - assertThat(Baggage.fromContext(null)).isEqualTo(Baggage.empty()); - assertThat(Baggage.fromContextOrNull(null)).isNull(); + Baggage result = Baggage.fromContext(null); + assertThat(result).isEqualTo(Baggage.empty()); + logCapturer.assertContains("context is null"); + } + + @Test + void fromContextOrNull_null() { + Baggage result = Baggage.fromContextOrNull(null); + assertThat(result).isNull(); + logCapturer.assertContains("context is null"); } @Test