Skip to content

Commit 76a907e

Browse files
adinauerclaude
andcommitted
feat(core): Add enableQueueTracing option and messaging span data conventions
Add enableQueueTracing boolean to SentryOptions (default false) and ExternalOptions (nullable Boolean) with merge support. Add messaging.* keys to SpanDataConvention for queue instrumentation span data. Co-Authored-By: Claude <noreply@anthropic.com>
1 parent 7224607 commit 76a907e

File tree

6 files changed

+87
-0
lines changed

6 files changed

+87
-0
lines changed

sentry/api/sentry.api

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -529,6 +529,7 @@ public final class io/sentry/ExternalOptions {
529529
public fun isEnableLogs ()Ljava/lang/Boolean;
530530
public fun isEnableMetrics ()Ljava/lang/Boolean;
531531
public fun isEnablePrettySerializationOutput ()Ljava/lang/Boolean;
532+
public fun isEnableQueueTracing ()Ljava/lang/Boolean;
532533
public fun isEnableSpotlight ()Ljava/lang/Boolean;
533534
public fun isEnabled ()Ljava/lang/Boolean;
534535
public fun isForceInit ()Ljava/lang/Boolean;
@@ -548,6 +549,7 @@ public final class io/sentry/ExternalOptions {
548549
public fun setEnableLogs (Ljava/lang/Boolean;)V
549550
public fun setEnableMetrics (Ljava/lang/Boolean;)V
550551
public fun setEnablePrettySerializationOutput (Ljava/lang/Boolean;)V
552+
public fun setEnableQueueTracing (Ljava/lang/Boolean;)V
551553
public fun setEnableSpotlight (Ljava/lang/Boolean;)V
552554
public fun setEnableUncaughtExceptionHandler (Ljava/lang/Boolean;)V
553555
public fun setEnabled (Ljava/lang/Boolean;)V
@@ -3688,6 +3690,7 @@ public class io/sentry/SentryOptions {
36883690
public fun isEnableEventSizeLimiting ()Z
36893691
public fun isEnableExternalConfiguration ()Z
36903692
public fun isEnablePrettySerializationOutput ()Z
3693+
public fun isEnableQueueTracing ()Z
36913694
public fun isEnableScopePersistence ()Z
36923695
public fun isEnableScreenTracking ()Z
36933696
public fun isEnableShutdownHook ()Z
@@ -3748,6 +3751,7 @@ public class io/sentry/SentryOptions {
37483751
public fun setEnableEventSizeLimiting (Z)V
37493752
public fun setEnableExternalConfiguration (Z)V
37503753
public fun setEnablePrettySerializationOutput (Z)V
3754+
public fun setEnableQueueTracing (Z)V
37513755
public fun setEnableScopePersistence (Z)V
37523756
public fun setEnableScreenTracking (Z)V
37533757
public fun setEnableShutdownHook (Z)V
@@ -4392,6 +4396,12 @@ public abstract interface class io/sentry/SpanDataConvention {
43924396
public static final field HTTP_RESPONSE_CONTENT_LENGTH_KEY Ljava/lang/String;
43934397
public static final field HTTP_START_TIMESTAMP Ljava/lang/String;
43944398
public static final field HTTP_STATUS_CODE_KEY Ljava/lang/String;
4399+
public static final field MESSAGING_DESTINATION_NAME Ljava/lang/String;
4400+
public static final field MESSAGING_MESSAGE_BODY_SIZE Ljava/lang/String;
4401+
public static final field MESSAGING_MESSAGE_ID Ljava/lang/String;
4402+
public static final field MESSAGING_MESSAGE_RECEIVE_LATENCY Ljava/lang/String;
4403+
public static final field MESSAGING_MESSAGE_RETRY_COUNT Ljava/lang/String;
4404+
public static final field MESSAGING_SYSTEM Ljava/lang/String;
43954405
public static final field PROFILER_ID Ljava/lang/String;
43964406
public static final field THREAD_ID Ljava/lang/String;
43974407
public static final field THREAD_NAME Ljava/lang/String;

sentry/src/main/java/io/sentry/ExternalOptions.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@ public final class ExternalOptions {
5858
private @Nullable Boolean enableBackpressureHandling;
5959
private @Nullable Boolean enableDatabaseTransactionTracing;
6060
private @Nullable Boolean enableCacheTracing;
61+
private @Nullable Boolean enableQueueTracing;
6162
private @Nullable Boolean globalHubMode;
6263
private @Nullable Boolean forceInit;
6364
private @Nullable Boolean captureOpenTelemetryEvents;
@@ -168,6 +169,8 @@ public final class ExternalOptions {
168169

169170
options.setEnableCacheTracing(propertiesProvider.getBooleanProperty("enable-cache-tracing"));
170171

172+
options.setEnableQueueTracing(propertiesProvider.getBooleanProperty("enable-queue-tracing"));
173+
171174
options.setGlobalHubMode(propertiesProvider.getBooleanProperty("global-hub-mode"));
172175

173176
options.setCaptureOpenTelemetryEvents(
@@ -541,6 +544,14 @@ public void setEnableCacheTracing(final @Nullable Boolean enableCacheTracing) {
541544
return enableCacheTracing;
542545
}
543546

547+
public void setEnableQueueTracing(final @Nullable Boolean enableQueueTracing) {
548+
this.enableQueueTracing = enableQueueTracing;
549+
}
550+
551+
public @Nullable Boolean isEnableQueueTracing() {
552+
return enableQueueTracing;
553+
}
554+
544555
public void setGlobalHubMode(final @Nullable Boolean globalHubMode) {
545556
this.globalHubMode = globalHubMode;
546557
}

sentry/src/main/java/io/sentry/SentryOptions.java

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -508,6 +508,9 @@ public class SentryOptions {
508508
/** Whether cache operations (get, put, remove, flush) should be traced. */
509509
private boolean enableCacheTracing = false;
510510

511+
/** Whether queue operations (publish, process) should be traced. */
512+
private boolean enableQueueTracing = false;
513+
511514
/** Date provider to retrieve the current date from. */
512515
@ApiStatus.Internal
513516
private final @NotNull LazyEvaluator<SentryDateProvider> dateProvider =
@@ -2704,6 +2707,24 @@ public void setEnableCacheTracing(boolean enableCacheTracing) {
27042707
this.enableCacheTracing = enableCacheTracing;
27052708
}
27062709

2710+
/**
2711+
* Whether queue operations (publish, process) should be traced.
2712+
*
2713+
* @return true if queue operations should be traced
2714+
*/
2715+
public boolean isEnableQueueTracing() {
2716+
return enableQueueTracing;
2717+
}
2718+
2719+
/**
2720+
* Whether queue operations (publish, process) should be traced.
2721+
*
2722+
* @param enableQueueTracing true if queue operations should be traced
2723+
*/
2724+
public void setEnableQueueTracing(boolean enableQueueTracing) {
2725+
this.enableQueueTracing = enableQueueTracing;
2726+
}
2727+
27072728
/**
27082729
* Whether Sentry is enabled.
27092730
*
@@ -3545,6 +3566,9 @@ public void merge(final @NotNull ExternalOptions options) {
35453566
if (options.isEnableCacheTracing() != null) {
35463567
setEnableCacheTracing(options.isEnableCacheTracing());
35473568
}
3569+
if (options.isEnableQueueTracing() != null) {
3570+
setEnableQueueTracing(options.isEnableQueueTracing());
3571+
}
35483572
if (options.getMaxRequestBodySize() != null) {
35493573
setMaxRequestBodySize(options.getMaxRequestBodySize());
35503574
}

sentry/src/main/java/io/sentry/SpanDataConvention.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,4 +30,10 @@ public interface SpanDataConvention {
3030
String CACHE_KEY = "cache.key";
3131
String CACHE_OPERATION = "cache.operation";
3232
String CACHE_WRITE = "cache.write";
33+
String MESSAGING_SYSTEM = "messaging.system";
34+
String MESSAGING_DESTINATION_NAME = "messaging.destination.name";
35+
String MESSAGING_MESSAGE_ID = "messaging.message.id";
36+
String MESSAGING_MESSAGE_RETRY_COUNT = "messaging.message.retry.count";
37+
String MESSAGING_MESSAGE_BODY_SIZE = "messaging.message.body.size";
38+
String MESSAGING_MESSAGE_RECEIVE_LATENCY = "messaging.message.receive.latency";
3339
}

sentry/src/test/java/io/sentry/ExternalOptionsTest.kt

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -345,6 +345,20 @@ class ExternalOptionsTest {
345345
}
346346
}
347347

348+
@Test
349+
fun `creates options with enableQueueTracing set to true`() {
350+
withPropertiesFile("enable-queue-tracing=true") { options ->
351+
assertTrue(options.isEnableQueueTracing == true)
352+
}
353+
}
354+
355+
@Test
356+
fun `creates options with enableQueueTracing set to false`() {
357+
withPropertiesFile("enable-queue-tracing=false") { options ->
358+
assertTrue(options.isEnableQueueTracing == false)
359+
}
360+
}
361+
348362
@Test
349363
fun `creates options with cron defaults`() {
350364
withPropertiesFile(

sentry/src/test/java/io/sentry/SentryOptionsTest.kt

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -708,6 +708,11 @@ class SentryOptionsTest {
708708
assertFalse(SentryOptions().isEnableCacheTracing)
709709
}
710710

711+
@Test
712+
fun `when options are initialized, enableQueueTracing is set to false by default`() {
713+
assertFalse(SentryOptions().isEnableQueueTracing)
714+
}
715+
711716
@Test
712717
fun `when options are initialized, metrics is enabled by default`() {
713718
assertTrue(SentryOptions().metrics.isEnabled)
@@ -1018,6 +1023,23 @@ class SentryOptionsTest {
10181023
assertEquals("original", options.orgId)
10191024
}
10201025

1026+
@Test
1027+
fun `merging options applies enableQueueTracing`() {
1028+
val externalOptions = ExternalOptions()
1029+
externalOptions.setEnableQueueTracing(true)
1030+
val options = SentryOptions()
1031+
options.merge(externalOptions)
1032+
assertTrue(options.isEnableQueueTracing)
1033+
}
1034+
1035+
@Test
1036+
fun `merging options preserves enableQueueTracing default when not set`() {
1037+
val externalOptions = ExternalOptions()
1038+
val options = SentryOptions()
1039+
options.merge(externalOptions)
1040+
assertFalse(options.isEnableQueueTracing)
1041+
}
1042+
10211043
@Test
10221044
fun `getEffectiveOrgId prefers explicit orgId over DSN`() {
10231045
val options = SentryOptions()

0 commit comments

Comments
 (0)