Remove slow operations from critical path #3788
Open
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.
Closes #<ISSUE_NUMBER>
This PR:
Moves 2 things off the critical path
For storing the proposal we just do this at the end of the voting procedure before sending a vote. This only blocks sending a vote
For fetching past proposal there was already logic to do this in both the voting and proposing code path after the other dependencies are fulfilled. We still spawn a task to do the fetch so we can vote on future proposals referencing that view, this is critical for cases where all nodes restart.
I want to make a larger fix where
handle_quorum_proposal_recv
is moved to a separate task I'll follow up with that. In the meantime this should significantly improve the Decaf situationThis PR does not:
Key places to review: