Skip to content

persist verifier repairs via subtree-aware kv delete#23112

Merged
IDCs merged 1 commit into
v2.0from
fix/app-446
May 11, 2026
Merged

persist verifier repairs via subtree-aware kv delete#23112
IDCs merged 1 commit into
v2.0from
fix/app-446

Conversation

@IDCs
Copy link
Copy Markdown
Contributor

@IDCs IDCs commented May 11, 2026

Repair removed bad entries from memory but the delete never reached DuckDB: computeStateDiff emitted only leaf removes and bulkRemoveItem matched keys exactly, so blob rows at intermediate paths (state values whose prototype is not Object.prototype - Date, Error, etc.) survived and re-hydrated next launch. Infinite repair loop.

removeItem and bulkRemoveItem now subtree-delete via "WHERE key = $1 OR starts_with(key, $2)". computeStateDiff also emits a container-path remove on object subtree removal; leaf removes stay as fallback. starts_with (not LIKE) so segments like skyrim_se can't over-match.

Original report and partial fix in PR #23100 by Alex Tabisz; that fix patched removeItem, but the production path goes through bulkRemoveItem.

Co-Authored-By: Alex Tabisz alex@tabisz.org @atabisz

fixes APP-446

Repair removed bad entries from memory but the delete never reached
DuckDB: computeStateDiff emitted only leaf removes and bulkRemoveItem
matched keys exactly, so blob rows at intermediate paths (state values
whose prototype is not Object.prototype - Date, Error, etc.) survived and
re-hydrated next launch. Infinite repair loop.

removeItem and bulkRemoveItem now subtree-delete via
"WHERE key = $1 OR starts_with(key, $2)". computeStateDiff also emits a
container-path remove on object subtree removal; leaf removes stay as
fallback. starts_with (not LIKE) so segments like skyrim_se can't
over-match.

Original report and partial fix in PR #23100 by Alex Tabisz; that fix
patched removeItem, but the production path goes through bulkRemoveItem.

Co-Authored-By: Alex Tabisz <alex@tabisz.org>

fixes APP-446
@IDCs IDCs merged commit 8cccc97 into v2.0 May 11, 2026
8 checks passed
@IDCs IDCs deleted the fix/app-446 branch May 11, 2026 13:30
pull Bot pushed a commit to A-Archives-and-Forks/Vortex that referenced this pull request May 11, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants