Fix removed keys in persistent map restoration#73
Merged
Conversation
Member
|
Thanks. Released in 1.3.5. |
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.
Summary
Remove stale
persistentMapkeys when storage is restored after a page-cache transition.Problem
The
pageshowrestore path rebuilds the map data from its initial value and current storage, but previously updated only keys present in that rebuilt object. If a storage key was removed while the page was cached, its old value remained in the in-memory map after restoration.Changes
Testing
pnpm bnt test/map.test.tspnpm exec bnt --coverage 100 --coverage-exclude "test/*"pnpm test:lintpnpm test:typespnpm test:buildpnpm test:sizeBefore
After storage changed from
{ one: "1", stale: "2" }to{ one: "1a" }while the page was cached, restoration produced{ one: "1a", stale: "2" }.After
Restoration replaces the map with the current initial-plus-storage state, producing
{ one: "1a" }and removing the stale key.Compatibility
No public API or type changes. The correction affects only persistent-map restoration and reuses existing storage and per-key-listener reconciliation. Runtime behavior is platform-neutral.
Related issue
None; independently reproduced on the current default branch.