From 219ae6f32c6acdb9ac4c3e31bc5839b068a43b1d Mon Sep 17 00:00:00 2001 From: Teja Date: Tue, 15 Oct 2024 08:54:44 -0400 Subject: [PATCH 1/6] wip: stabilizing event exception data. --- .../io/opentelemetry/sdk/trace/SdkSpan.java | 2 +- .../data/ExceptionEventData.java | 27 +++++++++++-------- .../data/ImmutableExceptionEventData.java | 6 ++--- .../sdk/trace/internal/data/package-info.java | 15 ----------- .../opentelemetry/sdk/trace/SdkSpanTest.java | 2 +- 5 files changed, 21 insertions(+), 31 deletions(-) rename sdk/trace/src/main/java/io/opentelemetry/sdk/trace/{internal => }/data/ExceptionEventData.java (55%) rename sdk/trace/src/main/java/io/opentelemetry/sdk/trace/{internal => }/data/ImmutableExceptionEventData.java (93%) delete mode 100644 sdk/trace/src/main/java/io/opentelemetry/sdk/trace/internal/data/package-info.java diff --git a/sdk/trace/src/main/java/io/opentelemetry/sdk/trace/SdkSpan.java b/sdk/trace/src/main/java/io/opentelemetry/sdk/trace/SdkSpan.java index 1580b05c465..332ce15477d 100644 --- a/sdk/trace/src/main/java/io/opentelemetry/sdk/trace/SdkSpan.java +++ b/sdk/trace/src/main/java/io/opentelemetry/sdk/trace/SdkSpan.java @@ -20,11 +20,11 @@ import io.opentelemetry.sdk.internal.InstrumentationScopeUtil; import io.opentelemetry.sdk.resources.Resource; import io.opentelemetry.sdk.trace.data.EventData; +import io.opentelemetry.sdk.trace.data.ExceptionEventData; import io.opentelemetry.sdk.trace.data.LinkData; import io.opentelemetry.sdk.trace.data.SpanData; import io.opentelemetry.sdk.trace.data.StatusData; import io.opentelemetry.sdk.trace.internal.ExtendedSpanProcessor; -import io.opentelemetry.sdk.trace.internal.data.ExceptionEventData; import java.util.ArrayList; import java.util.Collections; import java.util.List; diff --git a/sdk/trace/src/main/java/io/opentelemetry/sdk/trace/internal/data/ExceptionEventData.java b/sdk/trace/src/main/java/io/opentelemetry/sdk/trace/data/ExceptionEventData.java similarity index 55% rename from sdk/trace/src/main/java/io/opentelemetry/sdk/trace/internal/data/ExceptionEventData.java rename to sdk/trace/src/main/java/io/opentelemetry/sdk/trace/data/ExceptionEventData.java index 7e41c5a6b66..b9f8d52b4e8 100644 --- a/sdk/trace/src/main/java/io/opentelemetry/sdk/trace/internal/data/ExceptionEventData.java +++ b/sdk/trace/src/main/java/io/opentelemetry/sdk/trace/data/ExceptionEventData.java @@ -3,11 +3,10 @@ * SPDX-License-Identifier: Apache-2.0 */ -package io.opentelemetry.sdk.trace.internal.data; +package io.opentelemetry.sdk.trace.data; import io.opentelemetry.api.common.Attributes; import io.opentelemetry.sdk.trace.SpanLimits; -import io.opentelemetry.sdk.trace.data.EventData; /** * Data representation of an event for a recorded exception. @@ -18,13 +17,15 @@ public interface ExceptionEventData extends EventData { /** - * Returns a new immutable {@link ExceptionEventData}. + * Returns a new immutable {@link io.opentelemetry.sdk.trace.data.ExceptionEventData}. * - * @param spanLimits limits applied to {@link ExceptionEventData}. - * @param epochNanos epoch timestamp in nanos of the {@link ExceptionEventData}. + * @param spanLimits limits applied to {@link io.opentelemetry.sdk.trace.data.ExceptionEventData}. + * @param epochNanos epoch timestamp in nanos of the {@link + * io.opentelemetry.sdk.trace.data.ExceptionEventData}. * @param exception the {@link Throwable exception} of the {@code Event}. - * @param additionalAttributes the additional attributes of the {@link ExceptionEventData}. - * @return a new immutable {@link ExceptionEventData} + * @param additionalAttributes the additional attributes of the {@link + * io.opentelemetry.sdk.trace.data.ExceptionEventData}. + * @return a new immutable {@link io.opentelemetry.sdk.trace.data.ExceptionEventData} */ static ExceptionEventData create( SpanLimits spanLimits, @@ -36,16 +37,20 @@ static ExceptionEventData create( } /** - * Return the {@link Throwable exception} of the {@link ExceptionEventData}. + * Return the {@link Throwable exception} of the {@link + * io.opentelemetry.sdk.trace.data.ExceptionEventData}. * - * @return the {@link Throwable exception} of the {@link ExceptionEventData} + * @return the {@link Throwable exception} of the {@link + * io.opentelemetry.sdk.trace.data.ExceptionEventData} */ Throwable getException(); /** - * Return the additional {@link Attributes attributes} of the {@link ExceptionEventData}. + * Return the additional {@link Attributes attributes} of the {@link + * io.opentelemetry.sdk.trace.data.ExceptionEventData}. * - * @return the additional {@link Attributes attributes} of the {@link ExceptionEventData} + * @return the additional {@link Attributes attributes} of the {@link + * io.opentelemetry.sdk.trace.data.ExceptionEventData} */ Attributes getAdditionalAttributes(); } diff --git a/sdk/trace/src/main/java/io/opentelemetry/sdk/trace/internal/data/ImmutableExceptionEventData.java b/sdk/trace/src/main/java/io/opentelemetry/sdk/trace/data/ImmutableExceptionEventData.java similarity index 93% rename from sdk/trace/src/main/java/io/opentelemetry/sdk/trace/internal/data/ImmutableExceptionEventData.java rename to sdk/trace/src/main/java/io/opentelemetry/sdk/trace/data/ImmutableExceptionEventData.java index ee13f930775..6f8af3a1965 100644 --- a/sdk/trace/src/main/java/io/opentelemetry/sdk/trace/internal/data/ImmutableExceptionEventData.java +++ b/sdk/trace/src/main/java/io/opentelemetry/sdk/trace/data/ImmutableExceptionEventData.java @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -package io.opentelemetry.sdk.trace.internal.data; +package io.opentelemetry.sdk.trace.data; import com.google.auto.value.AutoValue; import com.google.auto.value.extension.memoized.Memoized; @@ -16,10 +16,10 @@ import java.io.StringWriter; import javax.annotation.concurrent.Immutable; -/** An effectively immutable implementation of {@link ExceptionEventData}. */ @AutoValue @Immutable -abstract class ImmutableExceptionEventData implements ExceptionEventData { +abstract class ImmutableExceptionEventData + implements io.opentelemetry.sdk.trace.data.ExceptionEventData { private static final AttributeKey EXCEPTION_TYPE = AttributeKey.stringKey("exception.type"); diff --git a/sdk/trace/src/main/java/io/opentelemetry/sdk/trace/internal/data/package-info.java b/sdk/trace/src/main/java/io/opentelemetry/sdk/trace/internal/data/package-info.java deleted file mode 100644 index bab18f74550..00000000000 --- a/sdk/trace/src/main/java/io/opentelemetry/sdk/trace/internal/data/package-info.java +++ /dev/null @@ -1,15 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -/** - * Interfaces and implementations that are internal to OpenTelemetry. - * - *

All the content under this package and its subpackages are considered not part of the public - * API, and must not be used by users of the OpenTelemetry library. - */ -@ParametersAreNonnullByDefault -package io.opentelemetry.sdk.trace.internal.data; - -import javax.annotation.ParametersAreNonnullByDefault; diff --git a/sdk/trace/src/test/java/io/opentelemetry/sdk/trace/SdkSpanTest.java b/sdk/trace/src/test/java/io/opentelemetry/sdk/trace/SdkSpanTest.java index 7814074269b..76ff3ce621e 100644 --- a/sdk/trace/src/test/java/io/opentelemetry/sdk/trace/SdkSpanTest.java +++ b/sdk/trace/src/test/java/io/opentelemetry/sdk/trace/SdkSpanTest.java @@ -41,11 +41,11 @@ import io.opentelemetry.sdk.resources.Resource; import io.opentelemetry.sdk.testing.time.TestClock; import io.opentelemetry.sdk.trace.data.EventData; +import io.opentelemetry.sdk.trace.data.ExceptionEventData; import io.opentelemetry.sdk.trace.data.LinkData; import io.opentelemetry.sdk.trace.data.SpanData; import io.opentelemetry.sdk.trace.data.StatusData; import io.opentelemetry.sdk.trace.internal.ExtendedSpanProcessor; -import io.opentelemetry.sdk.trace.internal.data.ExceptionEventData; import java.io.PrintWriter; import java.io.StringWriter; import java.time.Duration; From e7c0a03d5ee62e6ae7613575193c60823cad129c Mon Sep 17 00:00:00 2001 From: Teja Date: Tue, 15 Oct 2024 21:32:18 -0400 Subject: [PATCH 2/6] polish: adding api diffs. --- .../current_vs_latest/opentelemetry-sdk-trace.txt | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/docs/apidiffs/current_vs_latest/opentelemetry-sdk-trace.txt b/docs/apidiffs/current_vs_latest/opentelemetry-sdk-trace.txt index 10464c237f1..3b49b717aba 100644 --- a/docs/apidiffs/current_vs_latest/opentelemetry-sdk-trace.txt +++ b/docs/apidiffs/current_vs_latest/opentelemetry-sdk-trace.txt @@ -1,2 +1,8 @@ Comparing source compatibility of opentelemetry-sdk-trace-1.44.0-SNAPSHOT.jar against opentelemetry-sdk-trace-1.43.0.jar -No changes. \ No newline at end of file ++++ NEW INTERFACE: PUBLIC(+) ABSTRACT(+) io.opentelemetry.sdk.trace.data.ExceptionEventData (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW INTERFACE: io.opentelemetry.sdk.trace.data.EventData + +++ NEW SUPERCLASS: java.lang.Object + +++ NEW METHOD: PUBLIC(+) STATIC(+) io.opentelemetry.sdk.trace.data.ExceptionEventData create(io.opentelemetry.sdk.trace.SpanLimits, long, java.lang.Throwable, io.opentelemetry.api.common.Attributes) + +++ NEW METHOD: PUBLIC(+) ABSTRACT(+) io.opentelemetry.api.common.Attributes getAdditionalAttributes() + +++ NEW METHOD: PUBLIC(+) ABSTRACT(+) java.lang.Throwable getException() From 015a70719d46005ec3e69d4b43cbf0194de78a07 Mon Sep 17 00:00:00 2001 From: Teja Date: Tue, 15 Oct 2024 21:59:05 -0400 Subject: [PATCH 3/6] polish: removing the fully qualified class names and refining the code a little for removing misleading comments from copy paste. --- .../sdk/trace/data/ExceptionEventData.java | 31 ++++++------------- .../data/ImmutableExceptionEventData.java | 3 +- 2 files changed, 11 insertions(+), 23 deletions(-) diff --git a/sdk/trace/src/main/java/io/opentelemetry/sdk/trace/data/ExceptionEventData.java b/sdk/trace/src/main/java/io/opentelemetry/sdk/trace/data/ExceptionEventData.java index b9f8d52b4e8..7e25aec4b09 100644 --- a/sdk/trace/src/main/java/io/opentelemetry/sdk/trace/data/ExceptionEventData.java +++ b/sdk/trace/src/main/java/io/opentelemetry/sdk/trace/data/ExceptionEventData.java @@ -8,24 +8,17 @@ import io.opentelemetry.api.common.Attributes; import io.opentelemetry.sdk.trace.SpanLimits; -/** - * Data representation of an event for a recorded exception. - * - *

This class is internal and is hence not for public use. Its APIs are unstable and can change - * at any time. - */ +/** Data representation of an event for a recorded exception. */ public interface ExceptionEventData extends EventData { /** - * Returns a new immutable {@link io.opentelemetry.sdk.trace.data.ExceptionEventData}. + * Returns a new immutable {@link ExceptionEventData}. * - * @param spanLimits limits applied to {@link io.opentelemetry.sdk.trace.data.ExceptionEventData}. - * @param epochNanos epoch timestamp in nanos of the {@link - * io.opentelemetry.sdk.trace.data.ExceptionEventData}. + * @param spanLimits limits applied to {@link ExceptionEventData}. + * @param epochNanos epoch timestamp in nanos of the {@link ExceptionEventData}. * @param exception the {@link Throwable exception} of the {@code Event}. - * @param additionalAttributes the additional attributes of the {@link - * io.opentelemetry.sdk.trace.data.ExceptionEventData}. - * @return a new immutable {@link io.opentelemetry.sdk.trace.data.ExceptionEventData} + * @param additionalAttributes the additional attributes of the {@link ExceptionEventData}. + * @return a new immutable {@link ExceptionEventData} */ static ExceptionEventData create( SpanLimits spanLimits, @@ -37,20 +30,16 @@ static ExceptionEventData create( } /** - * Return the {@link Throwable exception} of the {@link - * io.opentelemetry.sdk.trace.data.ExceptionEventData}. + * Return the {@link Throwable exception} of the {@link ExceptionEventData}. * - * @return the {@link Throwable exception} of the {@link - * io.opentelemetry.sdk.trace.data.ExceptionEventData} + * @return the {@link Throwable exception} of the {@link ExceptionEventData} */ Throwable getException(); /** - * Return the additional {@link Attributes attributes} of the {@link - * io.opentelemetry.sdk.trace.data.ExceptionEventData}. + * Return the additional {@link Attributes attributes} of the {@link ExceptionEventData}. * - * @return the additional {@link Attributes attributes} of the {@link - * io.opentelemetry.sdk.trace.data.ExceptionEventData} + * @return the additional {@link Attributes attributes} of the {@link ExceptionEventData} */ Attributes getAdditionalAttributes(); } diff --git a/sdk/trace/src/main/java/io/opentelemetry/sdk/trace/data/ImmutableExceptionEventData.java b/sdk/trace/src/main/java/io/opentelemetry/sdk/trace/data/ImmutableExceptionEventData.java index 6f8af3a1965..b5b5c2502bf 100644 --- a/sdk/trace/src/main/java/io/opentelemetry/sdk/trace/data/ImmutableExceptionEventData.java +++ b/sdk/trace/src/main/java/io/opentelemetry/sdk/trace/data/ImmutableExceptionEventData.java @@ -18,8 +18,7 @@ @AutoValue @Immutable -abstract class ImmutableExceptionEventData - implements io.opentelemetry.sdk.trace.data.ExceptionEventData { +abstract class ImmutableExceptionEventData implements ExceptionEventData { private static final AttributeKey EXCEPTION_TYPE = AttributeKey.stringKey("exception.type"); From b6e581642dc6f7af892e902f5adf9569f004e566 Mon Sep 17 00:00:00 2001 From: Teja Date: Tue, 15 Oct 2024 22:08:19 -0400 Subject: [PATCH 4/6] polish: adding a missing comment. --- .../sdk/trace/data/ImmutableExceptionEventData.java | 1 + 1 file changed, 1 insertion(+) diff --git a/sdk/trace/src/main/java/io/opentelemetry/sdk/trace/data/ImmutableExceptionEventData.java b/sdk/trace/src/main/java/io/opentelemetry/sdk/trace/data/ImmutableExceptionEventData.java index b5b5c2502bf..25654dcab8c 100644 --- a/sdk/trace/src/main/java/io/opentelemetry/sdk/trace/data/ImmutableExceptionEventData.java +++ b/sdk/trace/src/main/java/io/opentelemetry/sdk/trace/data/ImmutableExceptionEventData.java @@ -16,6 +16,7 @@ import java.io.StringWriter; import javax.annotation.concurrent.Immutable; +/** An effectively immutable implementation of {@link ExceptionEventData}. */ @AutoValue @Immutable abstract class ImmutableExceptionEventData implements ExceptionEventData { From 9700e0124980bdd2ed92a2f2cdfa8a074eab1553 Mon Sep 17 00:00:00 2001 From: Teja Date: Mon, 21 Oct 2024 21:33:37 -0400 Subject: [PATCH 5/6] polish: Update the comment around the class. Co-authored-by: jack-berg <34418638+jack-berg@users.noreply.github.com> --- .../io/opentelemetry/sdk/trace/data/ExceptionEventData.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/sdk/trace/src/main/java/io/opentelemetry/sdk/trace/data/ExceptionEventData.java b/sdk/trace/src/main/java/io/opentelemetry/sdk/trace/data/ExceptionEventData.java index 7e25aec4b09..e7056de5f23 100644 --- a/sdk/trace/src/main/java/io/opentelemetry/sdk/trace/data/ExceptionEventData.java +++ b/sdk/trace/src/main/java/io/opentelemetry/sdk/trace/data/ExceptionEventData.java @@ -8,7 +8,10 @@ import io.opentelemetry.api.common.Attributes; import io.opentelemetry.sdk.trace.SpanLimits; +import javax.annotation.concurrent.Immutable; + /** Data representation of an event for a recorded exception. */ +@Immutable public interface ExceptionEventData extends EventData { /** From 661fc170f97e3012b2c76bc6fc291d561d47bd2c Mon Sep 17 00:00:00 2001 From: Teja Date: Tue, 22 Oct 2024 07:33:59 -0400 Subject: [PATCH 6/6] polish: applying spotless checks. --- .../java/io/opentelemetry/sdk/trace/data/ExceptionEventData.java | 1 - 1 file changed, 1 deletion(-) diff --git a/sdk/trace/src/main/java/io/opentelemetry/sdk/trace/data/ExceptionEventData.java b/sdk/trace/src/main/java/io/opentelemetry/sdk/trace/data/ExceptionEventData.java index e7056de5f23..6b27cee9b52 100644 --- a/sdk/trace/src/main/java/io/opentelemetry/sdk/trace/data/ExceptionEventData.java +++ b/sdk/trace/src/main/java/io/opentelemetry/sdk/trace/data/ExceptionEventData.java @@ -7,7 +7,6 @@ import io.opentelemetry.api.common.Attributes; import io.opentelemetry.sdk.trace.SpanLimits; - import javax.annotation.concurrent.Immutable; /** Data representation of an event for a recorded exception. */