Hacktoberfest 2026 : les issues que les mainteneurs ont marquées pour octobre, ouvertes et accessibles aux débutants. Parcourir les issues Hacktoberfest

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

Fermée Adaptée aux débutants
#24,442 2 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

Évaluation

Difficulté
2/5
Temps estimé
1-3 heures
Accessibilité débutants
86/100
Type d'issue
Bug
Clarté
Clairement spécifiée
Activité
Active
Stack technique
typescript
Domaine
observability

Piste de recherche

Commencez dans packages/cloudflare/src/instrumentations/instrumentDurableObjectNamespace.ts, où le trap get traite actuellement get et getByName comme des cas particuliers. Suivez la manière dont les autres fonctions du namespace sont liées, puis vérifiez que jurisdiction() renvoie un namespace instrumenté récursivement avec propagation de la trace RPC. C’est terminé lorsque les stubs obtenus via un namespace limité par jurisdiction produisent les mêmes spans fetch et le même comportement de sentry_rpc_meta que les appels directs au namespace.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Description

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.

Langage dominant
TypeScript
Étoiles
8.7k
Forks
1.9k
Merge moyen
1 j 16 h
PR mergées (30 j)
576

Guide de contribution

Ouvrir le guide de contribution

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de getsentry/sentry-javascript

Toutes les issues de getsentry/sentry-javascript

Issues similaires

Plus d'issues TypeScript

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.