getsentry / getsentry/sentry-javascript

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

Ouverte
#17,476 10 commentaires 0 réactions 1 personne assignée Réclamée par @JPeer264 Voir sur GitHub
Cloudflare Workers Hono Improvement State: Blocked
Langage dominant
TypeScript
Étoiles
8.7k
Forks
1.8k
Merge moyen
1 j 17 h
PR mergées (30 j)
515

Description

### 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.

Guide de contribution

Ouvrir le guide de contribution

Évaluation

Cette issue n'a pas encore été évaluée.

Recevez les nouvelles issues par e-mail

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