Unify EVM SS into single DB with store key prefixes#3134
Conversation
Replace 5 separate MVCC databases (nonce, codehash, code, storage, legacy) with a single DB. EVM sub-types are namespaced via the MVCC store key prefix (s/k:<storeType>/) instead of separate directories. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
|
The latest Buf updates on your PR. Results from workflow Buf / buf (pull_request).
|
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## main #3134 +/- ##
=======================================
Coverage 58.79% 58.80%
=======================================
Files 2054 2054
Lines 168315 168375 +60
=======================================
+ Hits 98958 99009 +51
- Misses 60610 60614 +4
- Partials 8747 8752 +5
Flags with carried forward coverage won't be shown. Click here to find out more.
🚀 New features to boost your workflow:
|
Keep the current unified layout as the default while allowing EVM data to be split across physical DBs. Preserve the existing evm keyspace and metadata layout even when separated so the change only affects placement, not encoding. Made-with: Cursor
| } | ||
| } | ||
| }() | ||
| return db.Import(version, filtered) |
There was a problem hiding this comment.
if db.Import(version, filtered) returns early with an error, the filtering goroutine at line 275 blocks forever on filtered <- node (nobody drains filtered anymore). this also prevents draining the upstream ch, which causes the composite store's sendNode(evmCh, ...) to block
| if len(evmChangesets) == 0 { | ||
| return nil | ||
| } | ||
| return db.ApplyChangesetAsync(version, evmChangesets) |
There was a problem hiding this comment.
ApplyChangesetSync and ApplyChangesetAsync shares most of the code, how about extract shared func like applyChangeset()
Resolve the EVM SS merge conflicts while preserving the branch's unified/full-key storage behavior and bringing in mainline updates. Made-with: Cursor
|
Created backport PR for
Please cherry-pick the changes locally and resolve any conflicts. git fetch origin backport-3134-to-release/v6.4
git worktree add --checkout .worktree/backport-3134-to-release/v6.4 backport-3134-to-release/v6.4
cd .worktree/backport-3134-to-release/v6.4
git reset --hard HEAD^
git cherry-pick -x 36f9664790cf86a33a287670e8939d466a8c339f
git push --force-with-lease |
- Consolidate EVM state-store sub-DBs into a single DB by default while preserving the existing evm keyspace and MVCC key encoding - Add configuration to optionally split EVM data back across per-type physical DBs without changing logical read/write behavior. - Unit tests - Verifying w/ state sync on node --------- Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com> (cherry picked from commit 36f9664)
Describe your changes and provide context
Testing performed to validate your change