Hacktoberfest 2026: as issues que os mantenedores marcaram para outubro, abertas e boas para iniciantes. Ver issues do Hacktoberfest

@sentry/cloudflare: stubs from namespace.jurisdiction() bypass Durable Object instrumentation

Fechada Para iniciantes
#24,442 2 comentários 0 reações 0 responsáveis Ver no GitHub

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

Bug Cloudflare Workers Spans
Environment
  • @sentry/cloudflare: 10.74.0 (also present on develop and 11.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

Abrir o guia de contribuição

Primeiros passos

  1. Leia a issue inteira e depois o guia de contribuição do projeto.
  2. Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
  3. Faça um fork do repositório e trabalhe em uma branch.
  4. Abra um pull request que referencie o número da issue.

Mais de getsentry/sentry-javascript

Todas as issues de getsentry/sentry-javascript

Issues semelhantes

Mais issues de TypeScript

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.