Skip to content

test(cloudflare): Check that Durable Object invocations end when the method returns - #25511

Open
JPeer264 wants to merge 1 commit into
developfrom
jp/cloudflare-do-invocation-duration-test
Open

JPeer264 wants to merge 1 commit into
developfrom
jp/cloudflare-do-invocation-duration-test

Conversation

@JPeer264

Copy link
Copy Markdown
Member

follow up to #25490

This adds an integration test that checks that the SDK does not keep Durable Object invocations open after the method returns. A tail worker in the same wrangler dev process records each DO invocation, and the test asserts that a DO fetch, a propagated RPC call and an alarm end within 250 ms.

Why

workerd keeps a DO invocation open, and billed, until its pending timers fire (#25489). The unit test in #25490 only checks the segment-end flush timer. This test fails for any SDK timer that is still pending when a DO method returns.

Without #25490, the test fails with fetch at 507 ms, RPC at 502 ms and alarm at 500 ms. With it, they take 2 to 15 ms.

Known issues

  • The test asserts a time limit, so a very slow CI machine can make it fail. The limit is more than 15 times the slowest local run.

…method returns

workerd keeps a Durable Object invocation open until its pending timers
fire, so an SDK timer that outlives the method makes every invocation
longer, and billed. The suite instruments the worker with the Sentry Vite
plugin and runs a tail worker in the same `wrangler dev` process. It
asserts that DO fetch, propagated RPC and alarm invocations end within
250 ms. They take a few ms locally, and about 500 ms with the segment-end
flush timer of span streaming.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@JPeer264
JPeer264 force-pushed the jp/cloudflare-do-invocation-duration-test branch from adedc8a to a64b786 Compare October 19, 2026 09:19
@github-actions

github-actions Bot commented Oct 19, 2026 •

Copy link
Copy Markdown
Contributor

size-limit report 📦

⚠️ Warning: Base artifact is not the latest one, because the latest workflow run is not done yet. This may lead to incorrect results. Try to re-run all tests to get up to date results.

Path Size % Change Change
@sentry/browser 29.88 kB - -
@sentry/browser - with treeshaking flags 28.02 kB - -
@sentry/browser - with treeshaking flags tracing without tracing 27.92 kB - -
@sentry/browser (incl. Tracing) 52.07 kB - -
@sentry/browser (incl. Tracing + Span Streaming) 52.07 kB - -
@sentry/browser (incl. Tracing, Profiling) 55.02 kB - -
@sentry/browser (incl. Tracing, Replay) 91.82 kB - -
@sentry/browser (incl. Tracing, Replay) - with treeshaking flags 80.68 kB - -
@sentry/browser (incl. Tracing, Replay with Canvas) 96.55 kB - -
@sentry/browser (incl. Tracing, Replay, Feedback) 109.49 kB - -
@sentry/browser (incl. Feedback) 47.4 kB - -
@sentry/browser (incl. sendFeedback) 34.94 kB - -
@sentry/browser (incl. FeedbackAsync) 40.05 kB - -
@sentry/browser (incl. Metrics) 30.9 kB - -
@sentry/browser (incl. Logs) 31.18 kB - -
@sentry/browser (incl. Metrics & Logs) 31.81 kB - -
@sentry/react 31.7 kB - -
@sentry/react (incl. Tracing) 54.39 kB - -
@sentry/vue 38.04 kB - -
@sentry/vue (incl. Tracing) 55.01 kB - -
@sentry/svelte 29.9 kB - -
@sentry/remix (Remix 3 client bundle) 57.08 kB - -
CDN Bundle 31.64 kB - -
CDN Bundle (incl. Tracing) 52.58 kB - -
CDN Bundle (incl. Logs, Metrics) 33.84 kB - -
CDN Bundle (incl. Tracing, Logs, Metrics) 54.52 kB - -
CDN Bundle (incl. Replay, Logs, Metrics) 74.77 kB - -
CDN Bundle (incl. Tracing, Replay) 90.25 kB - -
CDN Bundle (incl. Tracing, Replay, Logs, Metrics) 92.18 kB - -
CDN Bundle (incl. Tracing, Replay, Feedback) 96.4 kB - -
CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics) 98.34 kB - -
CDN Bundle - uncompressed 93.18 kB - -
CDN Bundle (incl. Tracing) - uncompressed 156.03 kB - -
CDN Bundle (incl. Logs, Metrics) - uncompressed 99.72 kB - -
CDN Bundle (incl. Tracing, Logs, Metrics) - uncompressed 161.99 kB - -
CDN Bundle (incl. Replay, Logs, Metrics) - uncompressed 229.76 kB - -
CDN Bundle (incl. Tracing, Replay) - uncompressed 276.2 kB - -
CDN Bundle (incl. Tracing, Replay, Logs, Metrics) - uncompressed 282.14 kB - -
CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed 289.9 kB - -
CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics) - uncompressed 295.84 kB - -
@sentry/nextjs (client) 56.8 kB - -
@sentry/sveltekit (client) 52.45 kB - -
@sentry/core/server 41.12 kB - -
@sentry/core/browser 13.81 kB - -
@sentry/node 155.04 kB +0.01% +9 B 🔺
@sentry/node/import (ESM hook with diagnostics-channel injection) 84.06 kB - -
@sentry/node - without tracing 96.7 kB +0.01% +3 B 🔺
@sentry/node - without channel injection 133.07 kB +0.01% +5 B 🔺
@sentry/aws-serverless 104.89 kB +0.01% +4 B 🔺
@sentry/cloudflare (withSentry) - minified 210.78 kB - -
@sentry/cloudflare (withSentry) 522.89 kB - -
@sentry/nextjs/cloudflare (withSentry) - minified 228.46 kB - -

View base workflow run

@JPeer264
JPeer264 marked this pull request as ready for review October 19, 2026 09:27
@JPeer264
JPeer264 requested a review from a team as a code owner October 19, 2026 09:27
@JPeer264
JPeer264 requested review from isaacs and mydea and removed request for a team October 19, 2026 09:27
@JPeer264 JPeer264 self-assigned this Oct 19, 2026
@JPeer264
JPeer264 requested a review from andreiborza October 19, 2026 09:27

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant