EXPERIMENT (do not merge): does the tail-forwarding fix stop the Windows crash? - #15006
EXPERIMENT (do not merge): does the tail-forwarding fix stop the Windows crash?#15006petebacondarwin wants to merge 2 commits into
Conversation
`tail()` returned the forwarding RPC's promise from inside a `try`/`catch`, so the rejection a departed peer produces landed outside the `try` and escaped as an unhandled rejection. The `catch` only ever guarded the synchronous `JSON` work, so a peer going away produced no diagnostic at all. Await the call so the rejection is caught and reported.
Round 8 narrowed the trigger to killing a peer that is both an assets worker and the victim's tail consumer, which is the path PR #14993 stops dropping rejections on. Baseline to beat: 4/5 reps over 17 kill cycles.
🦋 Changeset detectedLatest commit: 2fee67b The changes in this PR will be included in the next version bump. This PR includes changesets to release 8 packages
Not sure what this means? Click here to learn what changesets are. Click here if you're a maintainer who wants to add another changeset to this PR |
|
✅ All changesets look good |
@cloudflare/autoconfig
@cloudflare/build-output-utils
@cloudflare/config
create-cloudflare
@cloudflare/deploy-helpers
@cloudflare/kv-asset-handler
miniflare
@cloudflare/pages-functions
@cloudflare/pages-shared
@cloudflare/unenv-preset
@cloudflare/vite-plugin
@cloudflare/vitest-pool-workers
@cloudflare/workers-auth
@cloudflare/workers-editor-shared
@cloudflare/workers-utils
wrangler
commit: |
|
@petebacondarwin Bonk workflow was cancelled. View workflow run · To retry, trigger Bonk again. |
|
Answered: no. With #14993 applied, the crashing arm went 8/8 over 28 kill cycles (baseline without it was 4/5 over 17). No mitigation at all, so the unhandled tail rejection is not what aborts workerd. The controls did reproduce exactly, in an independent run:
Combined: 12/13 for the one peer, 0/6 and 0/6 for the controls. The discriminator is solid; the cause is elsewhere. Closing this branch — #14993 stands on its own merits as a diagnostics fix, and the hunt continues in #15001. |
Temporary diagnostic branch. Not for merge — will be closed once it has answered its question. Companion to #15001.
This branch is #14993 plus the bisect harness. Eight rounds of bisecting on Windows CI narrowed the
fixtures/dev-registrycrash to a single trigger:worker-entrypoint-with-assetsworker-entrypointexported-handler-with-assetsBeing an assets worker is not sufficient, and being bound is not sufficient. The only peer whose abrupt death aborts the survivor is the one reached over the tail path through the assets RPC-proxy hop — which is exactly where #14993 stops a departed peer's rejection from escaping unhandled.
Also ruled out along the way: forced dev-server restarts (0/3), hand-written registry churn with no live peer (0/3), idle sessions at any count (0/41), port contention, start order, CPU starvation, and traffic through the binding.
Baseline to beat here is 4/5 reps over 17 kill cycles, so this run does 8 reps of the crashing arm plus both negative controls.