op-chain-ops: Add parallel migration#5151
Conversation
|
af443ee to
e904a02
Compare
c63da3f to
cd013d5
Compare
Codecov Report
Additional details and impacted files@@ Coverage Diff @@
## develop #5151 +/- ##
===========================================
- Coverage 40.45% 36.59% -3.86%
===========================================
Files 353 211 -142
Lines 21570 17716 -3854
Branches 776 0 -776
===========================================
- Hits 8727 6484 -2243
+ Misses 12175 10592 -1583
+ Partials 668 640 -28
Flags with carried forward coverage won't be shown. Click here to find out more.
|
cd013d5 to
acd8d4d
Compare
✅ Deploy Preview for opstack-docs ready!
To edit notification comments on pull requests, go to your Netlify site settings. |
acd8d4d to
b2376eb
Compare
|
Semgrep found 1
Generic API Key detected Created by detected-generic-api-key. |
After some research, I discovered that we can iterate over Geth's storage in parallel as long as we don't share the state database. This PR updates the OVM ETH check script to parallelize state iteration across 64 workers. The parallelization works by partitioning storage keyspace based on the number of workers. To optimize further, I also moved the state balance checking into the main iteration loop to avoid unnecessary iteration. Note that state mutation must be done serially. Overall, this should safe about 40 minutes during the migration. This PR was tested by running it against a mainnet data directory. The entire process took approximately one hour. As part of this testing I discovered an invalid check in `check.go`, which was verifying the wrong storage slot in the withdrawals check function. This has been fixed.I confirmed with Mark that the updated `MessageSender` value is the correct one to be checking for. The filtering code was correct from the beginning.
b2376eb to
47dada2
Compare
|
This PR has been added to the merge queue, and will be merged soon. |
|
This PR is next in line to be merged, and will be merged as soon as checks pass. |
After some research, I discovered that we can iterate over Geth's storage in parallel as long as we don't share the state database. This PR updates the OVM ETH check script to parallelize state iteration across 64 workers. The parallelization works by partitioning storage keyspace based on the number of workers. To optimize further, I also moved the state balance checking into the main iteration loop to avoid unnecessary iteration. Note that state mutation must be done serially. Overall, this should safe about 40 minutes during the migration.
This PR was tested by running it against a mainnet data directory. The entire process took approximately one hour. As part of this testing I discovered an invalid check in
check.go, which was verifying the wrong storage slot in the withdrawals check function. This has been fixed.I confirmed with Mark that the updatedMessageSendervalue is the correct one to be checking for. The filtering code was correct from the beginning.Builds on #5147.