Fix rejected streamed data after delayed loads#16268
Open
scarab-systems wants to merge 1 commit into
Open
Conversation
|
Install the latest version of pnpm add https://pkg.svelte.dev/@sveltejs/kit/c/83f2ce23cdbd0e72fb7aa4a11d5e62237988fd3cOpen in Note This PR is from a fork. A maintainer must approve approve each commit before it can be built and installed. |
🦋 Changeset detectedLatest commit: 83f2ce2 The changes in this PR will be included in the next version bump. This PR includes changesets to release 1 package
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 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes #9785
Summary
Thanks for SvelteKit. I really appreciate the care that goes into this project.
This PR fixes a timing issue in streamed server data handling. Previously, the JSON data response waited for all server load promises to settle before serializing any node. If one load returned a rejected streamed promise while another load was still pending, the rejection could occur before SvelteKit had attached the stream rejection handler.
The change creates the JSON data serializer earlier and adds each node as its load result resolves, while still waiting for all nodes before emitting the final data response. That preserves the response shape/order but attaches stream handlers earlier.
I also added a regression route/test where one server load delays serialization and another returns a rejected streamed promise.
Validation
Passed:
pnpm exec prettier --check ...on touched filespnpm --dir packages/kit checkpnpm --dir packages/kit/test/apps/basics checkpnpm run lintpnpm run checkI also ran
pnpm test:kitlocally with reduced workers/retries. The new regression passed inside that run, but the full command failed on an existing unrelated no-SSR dev test (SPA mode / no SSR › cannot use browser-only global on page because of ssr config in +page.js). I did not change that area.Disclosure: I used AI-assisted coding tools while preparing this PR. I reviewed the changes myself, tested them, and take responsibility for the implementation and any follow-up revisions needed.
If this project does not accept AI-assisted contributions, please let us know up front so we can avoid spending time on a contribution that the project is unwilling to consider.