getsentry / getsentry/sentry-javascript

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

Đang mở
#17,476 10 bình luận 0 reaction 1 người được giao Được @JPeer264 nhận Xem trên GitHub
Cloudflare Workers Hono Improvement State: Blocked
Ngôn ngữ chính
TypeScript
Star
8.7k
Fork
1.8k
Merge trung bình
1 ngày 17 giờ
Pull request đã merge (30 ngày)
515

Mô tả

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

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Đánh giá

Issue này chưa được đánh giá.

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.