From 2380a3eebf869c02063cf161f56976caee4b2a4f Mon Sep 17 00:00:00 2001 From: Martin Sonnberger Date: Mon, 27 Jul 2026 10:54:31 +0200 Subject: [PATCH 1/3] fix(cloudflare): Remove conflicting `faas.queue` op on queue consumer spans The span passed both `op: 'faas.queue'` and a `sentry.op` attribute of `queue.process`. The attribute wins, so `faas.queue` was dead. Emitted spans are unchanged. Ref: JS-3105 Co-Authored-By: Claude Opus 5 (1M context) --- packages/cloudflare/package.json | 1 + .../src/instrumentations/worker/instrumentQueue.ts | 5 ++--- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/cloudflare/package.json b/packages/cloudflare/package.json index f4ea3da77209..5fe7f845ea43 100644 --- a/packages/cloudflare/package.json +++ b/packages/cloudflare/package.json @@ -53,6 +53,7 @@ }, "dependencies": { "@opentelemetry/api": "^1.9.1", + "@sentry/conventions": "^0.16.0", "@sentry/core": "10.67.0", "@sentry/server-utils": "10.67.0", "magic-string": "~0.30.21" diff --git a/packages/cloudflare/src/instrumentations/worker/instrumentQueue.ts b/packages/cloudflare/src/instrumentations/worker/instrumentQueue.ts index a99b81c6c341..d56c009c57bc 100644 --- a/packages/cloudflare/src/instrumentations/worker/instrumentQueue.ts +++ b/packages/cloudflare/src/instrumentations/worker/instrumentQueue.ts @@ -1,8 +1,8 @@ import type { ExportedHandler, MessageBatch } from '@cloudflare/workers-types'; import type { env as cloudflareEnv, WorkerEntrypoint } from 'cloudflare:workers'; +import { MESSAGING_QUEUE_PROCESS_SPAN_OP } from '@sentry/conventions/op'; import { captureException, - SEMANTIC_ATTRIBUTE_SENTRY_OP, SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, SEMANTIC_ATTRIBUTE_SENTRY_SOURCE, startSpan, @@ -36,7 +36,7 @@ function wrapQueueHandler( return startSpan( { - op: 'faas.queue', + op: MESSAGING_QUEUE_PROCESS_SPAN_OP, name: `process ${batch.queue}`, attributes: { 'faas.trigger': 'pubsub', @@ -46,7 +46,6 @@ function wrapQueueHandler( 'messaging.operation.name': 'process', 'messaging.batch.message_count': batch.messages.length, 'messaging.message.retry.count': batch.messages.reduce((acc, message) => acc + message.attempts - 1, 0), - [SEMANTIC_ATTRIBUTE_SENTRY_OP]: 'queue.process', [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.faas.cloudflare.queue', [SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]: 'task', }, From 6331d6b27ed925e3eb49e845b293437cea52d02a Mon Sep 17 00:00:00 2001 From: Martin Sonnberger Date: Tue, 28 Jul 2026 13:51:36 +0200 Subject: [PATCH 2/3] use sentry.op --- .../cloudflare/src/instrumentations/worker/instrumentQueue.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/cloudflare/src/instrumentations/worker/instrumentQueue.ts b/packages/cloudflare/src/instrumentations/worker/instrumentQueue.ts index d56c009c57bc..bd7341684c89 100644 --- a/packages/cloudflare/src/instrumentations/worker/instrumentQueue.ts +++ b/packages/cloudflare/src/instrumentations/worker/instrumentQueue.ts @@ -16,6 +16,7 @@ import { addCloudResourceContext } from '../../scope-utils'; import { init } from '../../sdk'; import { instrumentContext } from '../../utils/instrumentContext'; import { instrumentEnv } from './instrumentEnv'; +import { SENTRY_OP } from '@sentry/conventions/attributes'; /** * Core queue handler logic - wraps execution with Sentry instrumentation. @@ -36,9 +37,9 @@ function wrapQueueHandler( return startSpan( { - op: MESSAGING_QUEUE_PROCESS_SPAN_OP, name: `process ${batch.queue}`, attributes: { + [SENTRY_OP]: MESSAGING_QUEUE_PROCESS_SPAN_OP, 'faas.trigger': 'pubsub', 'messaging.destination.name': batch.queue, 'messaging.system': 'cloudflare', From cd121245f2ba168b121873b0af7773a092ab2102 Mon Sep 17 00:00:00 2001 From: Martin Sonnberger Date: Tue, 28 Jul 2026 13:52:50 +0200 Subject: [PATCH 3/3] lint --- .../cloudflare/src/instrumentations/worker/instrumentQueue.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/cloudflare/src/instrumentations/worker/instrumentQueue.ts b/packages/cloudflare/src/instrumentations/worker/instrumentQueue.ts index bd7341684c89..00e532d6bf8c 100644 --- a/packages/cloudflare/src/instrumentations/worker/instrumentQueue.ts +++ b/packages/cloudflare/src/instrumentations/worker/instrumentQueue.ts @@ -1,5 +1,6 @@ import type { ExportedHandler, MessageBatch } from '@cloudflare/workers-types'; import type { env as cloudflareEnv, WorkerEntrypoint } from 'cloudflare:workers'; +import { SENTRY_OP } from '@sentry/conventions/attributes'; import { MESSAGING_QUEUE_PROCESS_SPAN_OP } from '@sentry/conventions/op'; import { captureException, @@ -16,7 +17,6 @@ import { addCloudResourceContext } from '../../scope-utils'; import { init } from '../../sdk'; import { instrumentContext } from '../../utils/instrumentContext'; import { instrumentEnv } from './instrumentEnv'; -import { SENTRY_OP } from '@sentry/conventions/attributes'; /** * Core queue handler logic - wraps execution with Sentry instrumentation.