Repository navigation
fix(relay): finish pending cache reads before yielding [H15,H17] - #9
Open
McHersheys wants to merge 1 commit into
Open
McHersheys wants to merge 1 commit into
McHersheys wants to merge 1 commit into
Conversation
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 #8.
Change
Only
pending()changes at runtime: complete one bounded.get()before each yield instead of suspending.iterate()across the client's awaited object PUT. This releases the WAL read snapshot beforeacknowledge()writes.CROSS JOINkeeps the rowid seek outermost; the query-plan regression rejects a per-page whole-job sort.Runtime diff: 12 added / 3 removed lines in one function. The remaining changes are eight focused real-file cache regressions and one real paged-client regression, reusing the existing client fixture and encrypted page/journal implementation.
Validation
Based on current main
aeaf2ca017f2539c24a8a4e1b076fdd2160a589f; the affected runtime closure is unchanged from 0.9.2a6a17edba700a595faa7acc281a58146cb625e23. Linux, Node 24.21.0, embedded SQLite 3.53.4; fresh synthetic homes, two actual WAL connections, no external requests or credentials.database is lockedat ACK)node --test --test-name-pattern='^pending |^paged upload ACK' \ test/relay-page-cache.test.js test/relay-page-client.test.jsAlso passed syntax checks for all three changed files and the existing wall-clock source check for both changed test files. The cache regressions cover the three causal contrasts, lazy/source-bound order, ACK persistence/reopen, another uploader's ACK, rowids beyond Number's safe range, and rowid-seek/no-sort query planning. The client regression commits on a second connection during the awaited real object PUT, then checks upload completion and exact native restore.
Earlier exact-runtime validation is reused rather than rerunning unaffected suites. The full repository gate and browser tests were not rerun for this PR. Upstream review/merge remains separate from these focused results.