test(deps): preview build against multistore cross-request-body-io fix#174
test(deps): preview build against multistore cross-request-body-io fix#174alukach wants to merge 5 commits into
Conversation
Temporary [patch.crates-io] pointing all multistore* crates at developmentseed/multistore#100, which fixes the 500/503 "Cannot perform I/O on behalf of a different request" failures on multipart and batch-delete writes under a cold-isolate burst. This branch exists to deploy a preview for end-to-end verification: plain UploadPart now streams (UNSIGNED-PAYLOAD, signed checksums) instead of buffering, and the small multipart-control/batch-delete bodies are read in the request's own I/O context before the bucket-lookup and STS awaits. Revert this commit and bump the multistore* deps once the fix is released. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
Claude finished @alukach's task in 59s —— View job Reviewing PR #174
✅ No blocking issues — safe to merge. This is a draft/temporary preview PR (explicitly marked "not for merge") that only adds a
Minor (non-blocking) note: the PR description still references the original branch name No security or correctness concerns: this only affects build-time dependency resolution for the preview deployment and carries no app code changes. |
|
🚀 Latest commit deployed to https://source-data-proxy-pr-174.source-coop.workers.dev
|
…56b8487) Picks up the cf-workers FixedLengthStream change so streamed plain PUT/UploadPart bodies carry a real Content-Length to S3 (fixes the stalled-PUT regression). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Picks up size-guard-before-pre-read and the fail-closed Forward arm. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Behavior-neutral; keeps the preview lock at the branch HEAD. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Draft / temporary — not for merge. Exists to deploy a preview for end-to-end verification of the multistore fix.
What this does
Adds a temporary
[patch.crates-io]block pointing all fivemultistore*crates at thefix/cross-request-body-iobranch (developmentseed/multistore#100). No app code changes — onlyCargo.toml+Cargo.lock.What the multistore fix does
Resolves intermittent 500/503 failures on multipart and batch-delete writes under a cold-isolate burst:
Root cause: the inbound body was read via
array_buffer()after the bucket-lookup and STS awaits;wasm-bindgen-futures' shared microtask queue can resume that read under another concurrent request's I/O context. The fix:UploadPartnow streams (UNSIGNED-PAYLOADheader signing, checksums forwarded+signed) instead of buffering — never materialized.handle_request, in the request's own I/O context, before any cross-request await.How to verify on the preview
Point the source.coop frontend at this deployment and exercise the cases that reproduced the error:
euro-testZarr writes) — UploadParts and the multipart control ops.Expect no
Cannot perform I/O on behalf of a different request(500/503) on the opening burst, and parts/deletes to complete.Cleanup
Revert this commit and bump the
multistore*deps once developmentseed/multistore#100 is released.🤖 Generated with Claude Code