Split out of #22446 (Clean up span operations).
These are the additive "gap" rows from that issue: spans that currently emit nosentry.op at all. Unlike the rest of #22446, adding these ops is not a breaking change — there is no existing op value being renamed, so grouping only improves. Tracked separately for that reason.
Missing span ops
| Current op(s) | Action | Registry status | Rationale / findings | Preserve detail in | Production locations |
|---|
| No op on Cloudflare rate-limit and Durable Object WebSocket handler spans | rpc for rate-limit binding calls; websocket for WebSocket handlers | Both target categories exist | These wrappers create spans but only set sentry.origin. Rate-limit binding calls are RPC-like; Durable Object message/close/error callbacks are explicitly WebSocket work. | rpc.service=cloudflare.rate_limit; websocket event type (span name) | packages/cloudflare/src/instrumentations/worker/instrumentRateLimit.ts
packages/cloudflare/src/durableobject.ts |
| No op on DataLoader prime / clear / clearAll | cache.put for prime; cache.remove for clear and clearAll | Target cache ops exist | These spans are created, but the op is deliberately left undefined. Classifying the write/removal paths completes the same cache taxonomy already used for DataLoader reads (cache.get). | cache.key where available; db.operation.name | packages/server-utils/src/integrations/tracing-channel/dataloader.ts |
| No op on some GraphQL, generic-pool, and Effect spans | graphql where applicable; function or no op only by deliberate policy | Instrumentation gap | GraphQL parse/validate/execute/resolver spans could stay undefined where OTel inference has no matching attributes. Generic pool and Effect similarly set origin without a category. Separate from cleanup but creates inconsistent grouping. | — | packages/server-utils/src/integrations/tracing-channel/graphql/*
packages/server-utils/src/graphql/graphql-dc-subscriber.ts
packages/server-utils/src/integrations/tracing-channel/generic-pool.ts
packages/effect/src/tracer.ts |
Split out of #22446 (Clean up span operations).
These are the additive "gap" rows from that issue: spans that currently emit no
sentry.opat all. Unlike the rest of #22446, adding these ops is not a breaking change — there is no existing op value being renamed, so grouping only improves. Tracked separately for that reason.Missing span ops
rpcfor rate-limit binding calls;websocketfor WebSocket handlerssentry.origin. Rate-limit binding calls are RPC-like; Durable Object message/close/error callbacks are explicitly WebSocket work.rpc.service=cloudflare.rate_limit; websocket event type (span name)packages/cloudflare/src/instrumentations/worker/instrumentRateLimit.tspackages/cloudflare/src/durableobject.tscache.putfor prime;cache.removefor clear and clearAllcache.get).cache.keywhere available;db.operation.namepackages/server-utils/src/integrations/tracing-channel/dataloader.tsgraphqlwhere applicable;functionor no op only by deliberate policypackages/server-utils/src/integrations/tracing-channel/graphql/*packages/server-utils/src/graphql/graphql-dc-subscriber.tspackages/server-utils/src/integrations/tracing-channel/generic-pool.tspackages/effect/src/tracer.ts