From d96df117935795729f0878f6143bc65adb2795d1 Mon Sep 17 00:00:00 2001 From: Jason Plumb Date: Mon, 16 Dec 2024 14:09:38 -0800 Subject: [PATCH 1/3] explicitly allow null into failExceptionally() --- .../opentelemetry/sdk/common/CompletableResultCode.java | 3 ++- .../sdk/common/CompletableResultCodeTest.java | 9 +++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/sdk/common/src/main/java/io/opentelemetry/sdk/common/CompletableResultCode.java b/sdk/common/src/main/java/io/opentelemetry/sdk/common/CompletableResultCode.java index 4a52effcd90..a9d114dcfcb 100644 --- a/sdk/common/src/main/java/io/opentelemetry/sdk/common/CompletableResultCode.java +++ b/sdk/common/src/main/java/io/opentelemetry/sdk/common/CompletableResultCode.java @@ -123,9 +123,10 @@ public CompletableResultCode fail() { * Completes this {@link CompletableResultCode} unsuccessfully if it is not already completed, * setting the {@link #getFailureThrowable() failure throwable} to {@code throwable}. * + * @param throwable the Throwable that caused the failure, or null * @since 1.41.0 */ - public CompletableResultCode failExceptionally(Throwable throwable) { + public CompletableResultCode failExceptionally(@Nullable Throwable throwable) { return failInternal(throwable); } diff --git a/sdk/common/src/test/java/io/opentelemetry/sdk/common/CompletableResultCodeTest.java b/sdk/common/src/test/java/io/opentelemetry/sdk/common/CompletableResultCodeTest.java index 3964fdd7f73..b83e3e03ec7 100644 --- a/sdk/common/src/test/java/io/opentelemetry/sdk/common/CompletableResultCodeTest.java +++ b/sdk/common/src/test/java/io/opentelemetry/sdk/common/CompletableResultCodeTest.java @@ -79,6 +79,15 @@ void fail() throws InterruptedException { assertThat(resultCode.isSuccess()).isFalse(); } + @Test + void failExceptionallyWithNull() { + CompletableResultCode resultCode = new CompletableResultCode(); + CompletableResultCode result = resultCode.failExceptionally(null); + assertThat(result.isDone()).isTrue(); + assertThat(result.isSuccess()).isFalse(); + assertThat(result.getFailureThrowable()).isNull(); + } + @Test void whenDoublyCompleteSuccessfully() throws InterruptedException { CompletableResultCode resultCode = new CompletableResultCode(); From 9bfde080bfe3b720629eececeaf6fb5e5d8b59df Mon Sep 17 00:00:00 2001 From: Jason Plumb Date: Mon, 16 Dec 2024 14:11:44 -0800 Subject: [PATCH 2/3] code javadoc --- .../java/io/opentelemetry/sdk/common/CompletableResultCode.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sdk/common/src/main/java/io/opentelemetry/sdk/common/CompletableResultCode.java b/sdk/common/src/main/java/io/opentelemetry/sdk/common/CompletableResultCode.java index a9d114dcfcb..6339c79bf28 100644 --- a/sdk/common/src/main/java/io/opentelemetry/sdk/common/CompletableResultCode.java +++ b/sdk/common/src/main/java/io/opentelemetry/sdk/common/CompletableResultCode.java @@ -123,7 +123,7 @@ public CompletableResultCode fail() { * Completes this {@link CompletableResultCode} unsuccessfully if it is not already completed, * setting the {@link #getFailureThrowable() failure throwable} to {@code throwable}. * - * @param throwable the Throwable that caused the failure, or null + * @param throwable the {@code Throwable} that caused the failure, or {@code null} * @since 1.41.0 */ public CompletableResultCode failExceptionally(@Nullable Throwable throwable) { From 8863f2a4001ce9da590b09315a37657046753b03 Mon Sep 17 00:00:00 2001 From: Jason Plumb Date: Thu, 19 Dec 2024 11:12:08 -0800 Subject: [PATCH 3/3] update javadoc to indicate explicit null case --- .../io/opentelemetry/sdk/common/CompletableResultCode.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/sdk/common/src/main/java/io/opentelemetry/sdk/common/CompletableResultCode.java b/sdk/common/src/main/java/io/opentelemetry/sdk/common/CompletableResultCode.java index 6339c79bf28..600ec73a48e 100644 --- a/sdk/common/src/main/java/io/opentelemetry/sdk/common/CompletableResultCode.java +++ b/sdk/common/src/main/java/io/opentelemetry/sdk/common/CompletableResultCode.java @@ -161,7 +161,8 @@ public boolean isSuccess() { * via the {@link #whenComplete(Runnable)} method. * * @return the throwable if failed exceptionally, or null if: {@link #fail() failed without - * exception}, {@link #succeed() succeeded}, or not complete.g + * exception}, {@link #succeed() succeeded}, {@link #failExceptionally(Throwable)} with a null + * {@code throwable}, or not complete. * @since 1.41.0 */ @Nullable