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(vm-runner): implement output handler for VM runner #1856

Merged
merged 20 commits into from
May 16, 2024

Conversation

itegulov
Copy link
Contributor

@itegulov itegulov commented May 6, 2024

What ❔

This PR creates a new abstraction OutputHandlerFactory that can orchestrate output handlers in a non-trivial manner. Specifically, for the purposes of VM runner we create an implementation ConcurrentOutputHandlerFactory that can produce delegated output handlers that internally use another output handler (i.e. delegatee is specific to the VM runner implementation). The main benefit of this implementation is that handle_l1_batch is non-blocking and finishes almost immediately. The actual work is spawned as a future and is then handled asynchronously enabling us to create many output handlers in parallel.

Why ❔

One of the components for the upcoming VM runner

Checklist

  • PR title corresponds to the body of PR (we generate changelog entries from PRs).
  • Tests for the changes have been added / updated.
  • Documentation comments have been added / updated.
  • Code has been formatted via zk fmt and zk lint.
  • Spellcheck has been run via zk spellcheck.
  • Linkcheck has been run via zk linkcheck.

@itegulov itegulov requested a review from perekopskiy May 6, 2024 09:58
Copy link
Contributor

@perekopskiy perekopskiy left a comment

Choose a reason for hiding this comment

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

Looks really good! I've left some nits. Also, let's add a unit test

core/lib/zksync_core/src/vm_runner/output_handler.rs Outdated Show resolved Hide resolved
core/lib/zksync_core/src/vm_runner/output_handler.rs Outdated Show resolved Hide resolved
core/lib/zksync_core/src/vm_runner/output_handler.rs Outdated Show resolved Hide resolved
@perekopskiy perekopskiy requested a review from slowli May 7, 2024 10:29
@itegulov
Copy link
Contributor Author

itegulov commented May 8, 2024

Still working on the documentation but functionally I think the PR is ready for a review

@itegulov itegulov marked this pull request as ready for review May 8, 2024 04:06
@itegulov itegulov requested a review from perekopskiy May 9, 2024 06:11
perekopskiy
perekopskiy previously approved these changes May 13, 2024
core/node/vm_runner/src/output_handler.rs Outdated Show resolved Hide resolved
core/node/vm_runner/src/output_handler.rs Outdated Show resolved Hide resolved
core/node/vm_runner/src/output_handler.rs Outdated Show resolved Hide resolved
core/node/vm_runner/src/output_handler.rs Outdated Show resolved Hide resolved
core/node/vm_runner/src/output_handler.rs Outdated Show resolved Hide resolved
core/node/vm_runner/src/output_handler.rs Outdated Show resolved Hide resolved
core/node/vm_runner/Cargo.toml Outdated Show resolved Hide resolved
core/node/vm_runner/Cargo.toml Outdated Show resolved Hide resolved
@itegulov itegulov enabled auto-merge May 16, 2024 08:34
@itegulov itegulov added this pull request to the merge queue May 16, 2024
Merged via the queue into main with commit 1e4aeb5 May 16, 2024
43 checks passed
@itegulov itegulov deleted the daniyar/pla-866-vm-runner-output branch May 16, 2024 09:05
RomanBrodetski pushed a commit that referenced this pull request May 17, 2024
🤖 I have created a release *beep* *boop*
---


##
[24.3.0](core-v24.2.0...core-v24.3.0)
(2024-05-16)


### Features

* Added support for making EN a (non-leader) consensus validator
(BFT-426)
([#1905](#1905))
([9973629](9973629))
* **configs:** Extract secrets to an additional config
([#1956](#1956))
([bab4d65](bab4d65))
* **en:** Fetch L1 batch root hashes from main node
([#1923](#1923))
([72a3571](72a3571))
* **eth-client:** Generalize RPC client
([#1898](#1898))
([a4e099f](a4e099f))
* **Prover CLI:** `requeue` cmd
([#1719](#1719))
([f722df7](f722df7))
* **Prover CLI:** `status batch --verbose`
([#1899](#1899))
([cf80184](cf80184))
* **pruning:** Vacuum freeze started daily
([#1929](#1929))
([5c85e9f](5c85e9f))
* Remove metrics crate
([#1902](#1902))
([5f7bda7](5f7bda7))
* **state-keeper:** Parallel l2 block sealing
([#1801](#1801))
([9b06dd8](9b06dd8))
* tee_verifier_input_producer
([#1860](#1860))
([fea7f16](fea7f16))
* **vm-runner:** implement output handler for VM runner
([#1856](#1856))
([1e4aeb5](1e4aeb5))


### Bug Fixes

* **basic_types:** bincode deserialization for `web3::Bytes`
([#1928](#1928))
([406ec8c](406ec8c))
* **config:** Fix data-handler-config
([#1919](#1919))
([b6bb041](b6bb041))
* **en:** Delete old txs by (init_addr, nonce)
([#1942](#1942))
([fa5f4a7](fa5f4a7))
* **en:** Fix reorg detector logic for dealing with last L1 batch
([#1906](#1906))
([3af5f5b](3af5f5b))
* parentHash in websocket blocks subscription is shown as 0x0
([#1946](#1946))
([fc2efad](fc2efad))
* **Prover CLI:** `status batch` bugs
([#1865](#1865))
([09682f2](09682f2))
* **utils:** bincode ser-/deserialization for `BytesToHexSerde`
([#1947](#1947))
([a75b917](a75b917))

---
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: zksync-era-bot <zksync-era-bot@users.noreply.github.com>
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.

3 participants