diff --git a/CHANGELOG.md b/CHANGELOG.md index ec08b2ae2de..c5a04ffc9e3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,6 +14,7 @@ - Auxiliary information (such as current memory load) at the time of ANR event. - If you would like us to provide support for the old approach working alongside the new one on Android 11 and above (e.g. for raising events for slow code on main thread), consider upvoting [this issue](https://github.com/getsentry/sentry-java/issues/2693). - The old watchdog implementation will continue working for older API versions (Android < 11) +- Open up transaction methods ([#2701](https://github.com/getsentry/sentry-java/pull/2701)) ### Fixes diff --git a/sentry/api/sentry.api b/sentry/api/sentry.api index 769f64fc76b..197cedc5400 100644 --- a/sentry/api/sentry.api +++ b/sentry/api/sentry.api @@ -620,6 +620,7 @@ public abstract interface class io/sentry/ITransaction : io/sentry/ISpan { public abstract fun setContext (Ljava/lang/String;Ljava/lang/Object;)V public abstract fun setName (Ljava/lang/String;)V public abstract fun setName (Ljava/lang/String;Lio/sentry/protocol/TransactionNameSource;)V + public abstract fun startChild (Ljava/lang/String;Ljava/lang/String;Lio/sentry/SentryDate;)Lio/sentry/ISpan; } public abstract interface class io/sentry/ITransactionProfiler { @@ -924,6 +925,7 @@ public final class io/sentry/NoOpTransaction : io/sentry/ITransaction { public fun setThrowable (Ljava/lang/Throwable;)V public fun startChild (Ljava/lang/String;)Lio/sentry/ISpan; public fun startChild (Ljava/lang/String;Ljava/lang/String;)Lio/sentry/ISpan; + public fun startChild (Ljava/lang/String;Ljava/lang/String;Lio/sentry/SentryDate;)Lio/sentry/ISpan; public fun startChild (Ljava/lang/String;Ljava/lang/String;Lio/sentry/SentryDate;Lio/sentry/Instrumenter;)Lio/sentry/ISpan; public fun startChild (Ljava/lang/String;Ljava/lang/String;Lio/sentry/SentryDate;Lio/sentry/Instrumenter;Lio/sentry/SpanOptions;)Lio/sentry/ISpan; public fun startChild (Ljava/lang/String;Ljava/lang/String;Lio/sentry/SpanOptions;)Lio/sentry/ISpan; @@ -1916,6 +1918,7 @@ public final class io/sentry/SentryTracer : io/sentry/ITransaction { public fun setThrowable (Ljava/lang/Throwable;)V public fun startChild (Ljava/lang/String;)Lio/sentry/ISpan; public fun startChild (Ljava/lang/String;Ljava/lang/String;)Lio/sentry/ISpan; + public fun startChild (Ljava/lang/String;Ljava/lang/String;Lio/sentry/SentryDate;)Lio/sentry/ISpan; public fun startChild (Ljava/lang/String;Ljava/lang/String;Lio/sentry/SentryDate;Lio/sentry/Instrumenter;)Lio/sentry/ISpan; public fun startChild (Ljava/lang/String;Ljava/lang/String;Lio/sentry/SentryDate;Lio/sentry/Instrumenter;Lio/sentry/SpanOptions;)Lio/sentry/ISpan; public fun startChild (Ljava/lang/String;Ljava/lang/String;Lio/sentry/SpanOptions;)Lio/sentry/ISpan; diff --git a/sentry/src/main/java/io/sentry/IHub.java b/sentry/src/main/java/io/sentry/IHub.java index 31cc1437972..58741a0afaa 100644 --- a/sentry/src/main/java/io/sentry/IHub.java +++ b/sentry/src/main/java/io/sentry/IHub.java @@ -494,7 +494,6 @@ ITransaction startTransaction( return startTransaction(name, operation, null); } - @ApiStatus.Internal @NotNull ITransaction startTransaction( final @NotNull TransactionContext transactionContext, diff --git a/sentry/src/main/java/io/sentry/ITransaction.java b/sentry/src/main/java/io/sentry/ITransaction.java index 29478511ec4..0166850f1e7 100644 --- a/sentry/src/main/java/io/sentry/ITransaction.java +++ b/sentry/src/main/java/io/sentry/ITransaction.java @@ -41,6 +41,10 @@ public interface ITransaction extends ISpan { @TestOnly List getSpans(); + @NotNull + ISpan startChild( + @NotNull String operation, @Nullable String description, @Nullable SentryDate timestamp); + /** * Returns if transaction is sampled. * diff --git a/sentry/src/main/java/io/sentry/NoOpTransaction.java b/sentry/src/main/java/io/sentry/NoOpTransaction.java index cc2b0b54261..902c8a7da6c 100644 --- a/sentry/src/main/java/io/sentry/NoOpTransaction.java +++ b/sentry/src/main/java/io/sentry/NoOpTransaction.java @@ -82,6 +82,12 @@ public void setName(@NotNull String name, @NotNull TransactionNameSource transac return Collections.emptyList(); } + @Override + public @NotNull ISpan startChild( + @NotNull String operation, @Nullable String description, @Nullable SentryDate timestamp) { + return NoOpSpan.getInstance(); + } + @Override public @Nullable Span getLatestActiveSpan() { return null; diff --git a/sentry/src/main/java/io/sentry/Sentry.java b/sentry/src/main/java/io/sentry/Sentry.java index b4e31dd7733..3bf9fccb7fa 100644 --- a/sentry/src/main/java/io/sentry/Sentry.java +++ b/sentry/src/main/java/io/sentry/Sentry.java @@ -886,7 +886,6 @@ public static void endSession() { * @param transactionOptions options for the transaction * @return created transaction. */ - @ApiStatus.Internal public static @NotNull ITransaction startTransaction( final @NotNull TransactionContext transactionContext, final @NotNull TransactionOptions transactionOptions) { diff --git a/sentry/src/main/java/io/sentry/SentryTracer.java b/sentry/src/main/java/io/sentry/SentryTracer.java index 0ad89e8a209..d27499cb6c8 100644 --- a/sentry/src/main/java/io/sentry/SentryTracer.java +++ b/sentry/src/main/java/io/sentry/SentryTracer.java @@ -404,6 +404,14 @@ private ISpan createChild( return createChild(operation, description, timestamp, instrumenter, spanOptions); } + @Override + public @NotNull ISpan startChild( + final @NotNull String operation, + @Nullable String description, + @Nullable SentryDate timestamp) { + return createChild(operation, description, timestamp, Instrumenter.SENTRY, new SpanOptions()); + } + @Override public @NotNull ISpan startChild( final @NotNull String operation, final @Nullable String description) {