getsentry / getsentry/sentry-javascript

Sentry does not capture errors or spans from Cloudflare Workers context.waitUntil()

Offen
#17,476 10 Kommentare 0 Reaktionen 1 zugewiesene Person Beansprucht von @JPeer264 Auf GitHub ansehen
Cloudflare Workers Hono Improvement State: Blocked
Vorherrschende Sprache
TypeScript
Sterne
8.7k
Forks
1.8k
Ø Merge
1 T. 17 Std.
Gemergte PRs (30 T.)
515

Beschreibung

### Is there an existing issue for this?

- [x] I have checked for existing issues https://github.com/getsentry/sentry-javascript/issues
- [x] I have reviewed the documentation https://docs.sentry.io/
- [x] I am using the latest SDK release https://github.com/getsentry/sentry-javascript/releases

### How do you use Sentry?

Sentry Saas (sentry.io)

### Which SDK are you using?

@sentry/cloudflare - hono

### SDK Version

10.7.0

### Framework Version

Hono 4.9.4

### Link to Sentry event

_No response_

### Reproduction Example/SDK Setup

```javascript
export default Sentry.withSentry(
(_env) => {
const env = checkBindings(_env)
const sentryEnabledEnvs: (typeof env.WORKER_ENVIRONMENT)[] = ["production", "staging"]
const enabled = sentryEnabledEnvs.includes(env.WORKER_ENVIRONMENT)
if (!enabled) console.info(`Sentry is disabled in env "${env.WORKER_ENVIRONMENT}"`)
const tracesSampleRate = env.WORKER_ENVIRONMENT === "production" ? 0.1 : 1

return {
dsn: env.SENTRY_DSN,
release: env.VERSION_ID,
sendDefaultPii: true,
environment: env.WORKER_ENVIRONMENT,
enableLogs: true,
tracesSampleRate,
enabled,
integrations: [
Sentry.consoleLoggingIntegration({ levels: ["log", "error", "warn"] }),
],
}
},
app,
)
```

### Steps to Reproduce

```javascript

import { waitUntil } from "cloudflare:workers"

.get("/route", async (context) => {
// some business logic

async function updateDBAndCache() {
return Sentry.startSpan({ name: "Update DB and Cache" }, async () => {
const data = await updateDB()
await context.get("setMember")(data)
})
}
waitUntil(updateDBAndCache())
return context.json(result, 200)
})

.get("/route-with-error", async (context) => {
// some business logic

async function updateDBAndCache() {
return Sentry.startSpan({ name: "Update DB and Cache" }, async () => {
const data = await updateDB()
throw new Error("expected error")
await context.get("setMember")(data)
})
}
waitUntil(updateDBAndCache())
return context.json(result, 200)
})
```

### Expected Result

Span "Update DB and Cache" appears in Sentry as well as seeing the captured exception.

### Actual Result

All spans and exceptions in `waitUntil` are lost.

Beitragsleitfaden

Beitragsleitfaden öffnen

Bewertung

Dieses Issue wurde noch nicht bewertet.

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.