Refactor Consensus to use event-driven transaction processing #4038
+26
−7
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Motivation
Replaced the periodic polling loop in
Consensus::start_handlerswith a notification-based approach to improve efficiency.The transaction pool is now processed only when triggered by relevant events:
Primarysuccessfully proposes a batch (freeing up worker capacity).Consensusadvances to a new block (clearing the mempool).This eliminates unnecessary wake-ups and addresses the TODO to synchronize transaction processing with BFT layer activity.
Test Plan
If you changed any code, please provide us with clear instructions on how you verified your changes work. Bonus points for screenshots and videos!
Documentation
If this PR adds or changes functionality, consider clarifying which docs need to be updated, e.g. on AleoNet/welcome.
Backwards compatibility
Please review backwards compatibility. Does any functionality need to be guarded by an existing or new
ConsensusVersion?