Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: EN Pruning #1418

Merged
merged 35 commits into from
Apr 11, 2024
Merged

feat: EN Pruning #1418

merged 35 commits into from
Apr 11, 2024

Conversation

tomg10
Copy link
Contributor

@tomg10 tomg10 commented Mar 12, 2024

No description provided.

@tomg10 tomg10 requested a review from slowli March 14, 2024 00:44
@tomg10 tomg10 marked this pull request as ready for review March 14, 2024 00:44
Copy link
Contributor

@slowli slowli left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Will try to take another look until the end of the week.

core/bin/external_node/src/main.rs Show resolved Hide resolved
core/lib/dal/migrations/20240313171738_pruning_log.up.sql Outdated Show resolved Hide resolved
core/lib/dal/src/pruning_dal.rs Outdated Show resolved Hide resolved
core/lib/snapshots_applier/src/lib.rs Show resolved Hide resolved
core/lib/zksync_core/src/db_pruner/metrics.rs Show resolved Hide resolved
core/lib/zksync_core/src/db_pruner/mod.rs Outdated Show resolved Hide resolved
core/lib/zksync_core/src/db_pruner/mod.rs Outdated Show resolved Hide resolved
core/bin/external_node/src/main.rs Show resolved Hide resolved
core/bin/external_node/src/main.rs Show resolved Hide resolved
core/lib/dal/src/connection/mod.rs Outdated Show resolved Hide resolved
core/lib/dal/src/pruning_dal.rs Show resolved Hide resolved
core/lib/snapshots_applier/src/lib.rs Show resolved Hide resolved
core/lib/zksync_core/src/db_pruner/mod.rs Show resolved Hide resolved
core/lib/zksync_core/src/db_pruner/mod.rs Outdated Show resolved Hide resolved
core/lib/zksync_core/src/db_pruner/metrics.rs Show resolved Hide resolved
core/lib/zksync_core/src/db_pruner/mod.rs Outdated Show resolved Hide resolved
core/lib/zksync_core/src/db_pruner/mod.rs Show resolved Hide resolved
@RomanBrodetski
Copy link
Collaborator

hey @tomg10 I didn't review the PR yet, but just a quick note re: title. Pruning should be applicable both to main node and to EN. As a matter of fact, we will prune the main node as soon as we are able to run the EN in a distributed mode

@tomg10
Copy link
Contributor Author

tomg10 commented Mar 20, 2024

@RomanBrodetski This PR implements db pruning in a way that will almost out-of-the-box support main node, we only would only need to add code adding a main node pruning component, the pruning logic will stay untouched.

Btw, I've tested pruning for mainnet EN, with the current logic, it's able to prune ~30 batches per minute, this means that pruning an existing mainnet EN instance would take about 2 weeks, imo this should be enough (as speeding it up could easily take more than two weeks :D ). And the pruning shouldn't impact the EN node operations. WDYT?

core/lib/zksync_core/src/db_pruner/mod.rs Outdated Show resolved Hide resolved
core/lib/zksync_core/src/db_pruner/mod.rs Outdated Show resolved Hide resolved
core/lib/zksync_core/src/db_pruner/mod.rs Show resolved Hide resolved
core/bin/external_node/src/config/mod.rs Show resolved Hide resolved
core/bin/external_node/src/config/mod.rs Show resolved Hide resolved
@tomg10 tomg10 force-pushed the pruning-dal branch 2 times, most recently from 7e0ca7c to d459cf1 Compare March 29, 2024 09:09
slowli
slowli previously approved these changes Apr 1, 2024
Copy link
Contributor

@slowli slowli left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks mergeable after you fix the snapshot recovery integration test. Besides what we've discussed already, I have several improvement suggestions, but nothing that can't be addressed in a follow-up PR, so I don't think it makes sense to spam these suggestions here; the discussion for this PR has >100 comments already 🙃

Signed-off-by: tomg10 <lemures64@gmail.com>
Signed-off-by: tomg10 <lemures64@gmail.com>
Signed-off-by: tomg10 <lemures64@gmail.com>
Signed-off-by: tomg10 <lemures64@gmail.com>
Signed-off-by: tomg10 <lemures64@gmail.com>
Signed-off-by: tomg10 <lemures64@gmail.com>
Signed-off-by: tomg10 <lemures64@gmail.com>
Signed-off-by: tomg10 <lemures64@gmail.com>
Signed-off-by: tomg10 <lemures64@gmail.com>
Signed-off-by: tomg10 <lemures64@gmail.com>
Signed-off-by: tomg10 <lemures64@gmail.com>
Signed-off-by: tomg10 <lemures64@gmail.com>
Signed-off-by: tomg10 <lemures64@gmail.com>
Signed-off-by: tomg10 <lemures64@gmail.com>
Signed-off-by: tomg10 <lemures64@gmail.com>
Signed-off-by: tomg10 <lemures64@gmail.com>
Signed-off-by: tomg10 <lemures64@gmail.com>
Signed-off-by: tomg10 <lemures64@gmail.com>
Signed-off-by: tomg10 <lemures64@gmail.com>
Signed-off-by: tomg10 <lemures64@gmail.com>
Signed-off-by: tomg10 <lemures64@gmail.com>
Signed-off-by: tomg10 <lemures64@gmail.com>
Signed-off-by: tomg10 <lemures64@gmail.com>
Signed-off-by: tomg10 <lemures64@gmail.com>
Signed-off-by: tomg10 <lemures64@gmail.com>
Signed-off-by: tomg10 <lemures64@gmail.com>
Signed-off-by: tomg10 <lemures64@gmail.com>
Signed-off-by: tomg10 <lemures64@gmail.com>
Signed-off-by: tomg10 <lemures64@gmail.com>
Signed-off-by: tomg10 <lemures64@gmail.com>
Signed-off-by: tomg10 <lemures64@gmail.com>
@tomg10 tomg10 added this pull request to the merge queue Apr 11, 2024
Merged via the queue into main with commit cea6578 Apr 11, 2024
41 checks passed
@tomg10 tomg10 deleted the pruning-dal branch April 11, 2024 10:03
@slowli slowli mentioned this pull request Apr 12, 2024
6 tasks
github-merge-queue bot pushed a commit that referenced this pull request Apr 16, 2024
## What ❔

Miscellaneous brush-up after #1418 is merged.

## Why ❔

- Improves code maintainability.

## Checklist

- [x] PR title corresponds to the body of PR (we generate changelog
entries from PRs).
- [x] Tests for the changes have been added / updated.
- [x] Documentation comments have been added / updated.
- [x] Code has been formatted via `zk fmt` and `zk lint`.
- [x] Spellcheck has been run via `zk spellcheck`.
- [x] Linkcheck has been run via `zk linkcheck`.
github-merge-queue bot pushed a commit that referenced this pull request Apr 16, 2024
🤖 I have created a release *beep* *boop*
---


##
[23.0.0](core-v22.1.0...core-v23.0.0)
(2024-04-16)


### ⚠ BREAKING CHANGES

* **vm:** 1 5 0 support
([#1508](#1508))

### Features

* **api:** Add `tokens_whitelisted_for_paymaster`
([#1545](#1545))
([6da89cd](6da89cd))
* **api:** Log info about estimated fee
([#1611](#1611))
([daed58c](daed58c))
* Archive old prover jobs
([#1516](#1516))
([201476c](201476c))
* Archiving of prover in gpu_prover_queue
([#1537](#1537))
([a970629](a970629))
* **block-reverter:** only require private key for sending revert
transactions
([#1579](#1579))
([27de6b7](27de6b7))
* **config:** Initialize log config from files as well
([#1566](#1566))
([9e7db59](9e7db59))
* **configs:** Implement new format of configs and implement protobuf
for it ([#1501](#1501))
([086ba5b](086ba5b))
* **db:** Wrap sqlx errors in DAL
([#1522](#1522))
([6e9ed8c](6e9ed8c))
* EN Pruning
([#1418](#1418))
([cea6578](cea6578))
* **en:** add consistency checker condition in db pruner
([#1653](#1653))
([5ed92b9](5ed92b9))
* **en:** add manual vacuum step in db pruning
([#1652](#1652))
([c818be3](c818be3))
* **en:** Rate-limit L2 client requests
([#1500](#1500))
([3f55f1e](3f55f1e))
* **en:** Rework storing and using protective reads
([#1515](#1515))
([13c0c45](13c0c45))
* **en:** support for snapshots recovery in version_sync_task.rs
([#1585](#1585))
([f911276](f911276))
* **eth-watch:** Brush up Ethereum watcher component
([#1596](#1596))
([b0b8f89](b0b8f89))
* Expose component configs as info metrics
([#1584](#1584))
([7c8ae40](7c8ae40))
* **external-node:** external node distributed operation mode
([#1457](#1457))
([777ffca](777ffca))
* Extract commitment generator into a separate crate
([#1636](#1636))
([f763d1f](f763d1f))
* Extract eth_watch and shared metrics into separate crates
([#1572](#1572))
([4013771](4013771))
* Finalize fee address migration
([#1617](#1617))
([713f56b](713f56b))
* fix availability checker
([#1574](#1574))
([b2f21fb](b2f21fb))
* **genesis:** Add genesis config generator
([#1671](#1671))
([45164fa](45164fa))
* **genesis:** mark system contracts bytecodes as known
([#1554](#1554))
([5ffec51](5ffec51))
* Migrate gas limit to u64
([#1538](#1538))
([56dc049](56dc049))
* **node-framework:** Add consensus support
([#1546](#1546))
([27fe475](27fe475))
* **node-framework:** Add consistency checker
([#1527](#1527))
([3c28c25](3c28c25))
* remove unused variables in prover configs
([#1564](#1564))
([d32a019](d32a019))
* Remove zksync-rs SDK
([#1559](#1559))
([cc78e1d](cc78e1d))
* soft removal of `events_queue` table
([#1504](#1504))
([5899bc6](5899bc6))
* **sqlx:** Use offline mode by default
([#1539](#1539))
([af01edd](af01edd))
* Use config for max number of circuits
([#1573](#1573))
([9fcb87e](9fcb87e))
* Validium
([#1461](#1461))
([132a169](132a169))
* **vm:** 1 5 0 support
([#1508](#1508))
([a6ccd25](a6ccd25))


### Bug Fixes

* **api:** Change error code for Web3Error::NotImplemented
([#1521](#1521))
([0a13602](0a13602))
* **cache:** use factory deps cache correctly
([#1547](#1547))
([a923e11](a923e11))
* **CI:** Less flaky CI
([#1536](#1536))
([2444b53](2444b53))
* **configs:** Make genesis fields optional
([#1555](#1555))
([2d0ef46](2d0ef46))
* contract verifier config test
([#1583](#1583))
([030d447](030d447))
* **contract-verifier-api:** permissive cors for contract verifier api
server ([#1525](#1525))
([423f4a7](423f4a7))
* **db:** Fix "values cache update task failed" panics
([#1561](#1561))
([f7c5c14](f7c5c14))
* **en:** do not log error when whitelisted_tokens_for_aa is not
supported
([#1600](#1600))
([06c87f5](06c87f5))
* **en:** Fix DB pool for Postgres metrics on EN
([#1675](#1675))
([c51ca91](c51ca91))
* **en:** improved tree recovery logs
([#1619](#1619))
([ef12df7](ef12df7))
* **en:** Reduce amount of data in snapshot header
([#1528](#1528))
([afa1cf1](afa1cf1))
* **eth-client:** Use local FeeHistory type
([#1552](#1552))
([5a512e8](5a512e8))
* instruction count diff always N/A in VM perf comparison
([#1608](#1608))
([c0f3104](c0f3104))
* **vm:** Fix storage oracle and estimation
([#1634](#1634))
([932b14b](932b14b))
* **vm:** Increase log demuxer cycles on far calls
([#1575](#1575))
([90eb9d8](90eb9d8))


### Performance Improvements

* **db:** rework "finalized" block SQL query
([#1524](#1524))
([2b27290](2b27290))
* **merkle tree:** Manage indices / filters in RocksDB
([#1550](#1550))
([6bbfa06](6bbfa06))

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).

---------

Co-authored-by: romanbrodetskiy <rb@matterlabs.dev>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants