-
Notifications
You must be signed in to change notification settings - Fork 3.7k
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
[Sharding] Refactor sharded block executor for better remote client support #9221
Conversation
aptos-move/aptos-vm/src/sharded_block_executor/local_executor_shard.rs
Outdated
Show resolved
Hide resolved
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The current type hierarchy seems:
ShardedBlockExecutor
who takes in a partitioned block and invokes the async start_execution + get_result APIs of:
<X>ExecutorClient
who dispatches partitioned block to multiple instances of:
<X>ExecutorService
who invokes
ShardedExecutorService
who handles num_rounds
sub_blocks by invoking BlockSTM for each.
- Can
<X>ExecutionCoordinator
be a better name for<X>ExecutorClient
? - Is
<X>ExecutorService
layer necessary? it doesn't seem to do a lot in the stack. - Can we have a readme to keep track of this hierarchy? it's easy to get lost between all the Clients and Services :)
I am not sure if coordinator is a better name, the coordinator in fact is holding the client.
Let me take this as a follow up to see if it make sense to merge the service into the client itself and add some doc as well. |
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
aptos-move/aptos-vm/src/sharded_block_executor/executor_shard.rs
Outdated
Show resolved
Hide resolved
aptos-move/aptos-vm/src/sharded_block_executor/executor_shard.rs
Outdated
Show resolved
Hide resolved
aptos-move/aptos-vm/src/sharded_block_executor/local_executor_shard.rs
Outdated
Show resolved
Hide resolved
aptos-move/aptos-vm/src/sharded_block_executor/local_executor_shard.rs
Outdated
Show resolved
Hide resolved
aptos-move/aptos-vm/src/sharded_block_executor/local_executor_shard.rs
Outdated
Show resolved
Hide resolved
aptos-move/aptos-vm/src/sharded_block_executor/local_executor_shard.rs
Outdated
Show resolved
Hide resolved
Approving, but should we consult with networking folks regarding the basic controller (@brianolson), i.e. having that on main, and also whether maybe using existing stack could be simple/simpler? We did that for QuorumStore prototype and it could be made to work relatively easily somehow, modulo @sasha8 finding one bug in networking itself - but maybe here it's not as easy. Just mentioning. |
Yes, I started a thread to discuss here - https://aptos-org.slack.com/archives/C056ZGUSQRZ/p1689969386327379. Based on the discussion, I am leaning towards using gRPC for remote execution support. |
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
✅ Forge suite
|
✅ Forge suite
|
✅ Forge suite
|
Description
The following changes are included in the PR.
Add a basic network controller that provides interface for remote communication. Unfortunately, this network stack is not very reliable and drops network messages. This is just added for POC and we will work on deleting this stack and migrate to using our production stack or something like grpc.
A refactor of Sharded block executor so that we can plug-in both local client and remote client.
Test Plan