@sentry/cloudflare: stubs from namespace.jurisdiction() bypass Durable Object instrumentation
Ninguém assumiu esta issue ainda.
Avaliação
- Dificuldade
- 2/5
- Tempo estimado
- 1-3 horas
- Facilidade para iniciantes
- 86/100
- Tipo de issue
- Bug
- Clareza
- Claramente especificada
- Status de atividade
- Ativa
- Stack de tecnologia
- typescript
- Domínio
- observability
Direção de pesquisa
Comece em packages/cloudflare/src/instrumentations/instrumentDurableObjectNamespace.ts, onde o trap get atualmente trata get e getByName como casos especiais. Rastreie como as outras funções do namespace são vinculadas e, em seguida, verifique se jurisdiction() retorna um namespace instrumentado recursivamente com propagação do trace RPC. Está concluído quando os stubs obtidos por meio de um namespace restrito por jurisdiction produzirem os mesmos spans de fetch e o mesmo comportamento de sentry_rpc_meta que as chamadas diretas ao namespace.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
Environment
@sentry/cloudflare: 10.74.0 (also present ondevelopand11.0.0-beta.2)- Caller wrapped with
Sentry.withSentry(),enableRpcTracePropagation: true - Durable Object namespace restricted to a jurisdiction (
env.MY_DO.jurisdiction('eu'))
Description
instrumentDurableObjectNamespace wraps get and getByName so the returned stub gets fetch spans and
RPC trace propagation. Every other function on the namespace, including jurisdiction, goes through
value.bind(target), so a jurisdiction-restricted namespace is the raw binding. Stubs from it get
no fetch span and never append __sentry_rpc_meta__.
That applies to every Durable Object call from an app that uses data-location jurisdictions (for
example EU residency). The traces break at the Durable Object boundary. Combined with the receiver-side gap in #24443, the receiver
also loses all of its telemetry.
Reproduction
const ns = env.MY_DO.jurisdiction('eu');
const stub = ns.get(ns.idFromName('x'));
await stub.someRpcMethod('a'); // receiver sees no __sentry_rpc_meta__; no caller-side span
Compare with env.MY_DO.get(env.MY_DO.idFromName('x')), which does propagate.
Expected
jurisdiction() returns a namespace instrumented the same way, i.e.
instrumentDurableObjectNamespace(value.apply(target, args), propagateRpcTrace).
Code
packages/cloudflare/src/instrumentations/instrumentDurableObjectNamespace.ts: the get trap only
special-cases get/getByName.
- Linguagem predominante
- TypeScript
- Estrelas
- 8.7k
- Forks
- 1.9k
- Merge médio
- 1d 16h
- PRs com merge (30d)
- 576
Guia de contribuição
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de getsentry/sentry-javascript
-
Browser Bug Next.js Traces Waiting for: Product Owner
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 75/100
getsentry/sentry-javascript#24672 · 1 comentário ·
-
Flaky Test React Router Framework Spans Tests
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 68/100
getsentry/sentry-javascript#24348 · 1 comentário ·
-
javascript
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 75/100
getsentry/sentry-javascript#24200 · 2 comentários ·
-
javascript Task
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 82/100
getsentry/sentry-javascript#24134 · 1 comentário ·
-
Cloudflare Workers javascript Tests
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
getsentry/sentry-javascript#24051 · 1 comentário ·
Todas as issues de getsentry/sentry-javascript
Issues semelhantes
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 70/100
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 75/100
mksglu/context-mode#1200 ·
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 75/100
jaegertracing/jaeger-ui#4506 ·
-
area:desktop area:ui bug platform:macos
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 75/100
anthropics/claude-code#96687 ·
-
good first issue
Dificuldade 1/5 Menos de uma hora Facilidade para iniciantes 95/100
AOSSIE-Org/DebateAI#582 · 2 comentários ·