-
Notifications
You must be signed in to change notification settings - Fork 368
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
refactor(consensus): separate sending votes from "pick votes" logic #2659
Conversation
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.
just added a suggestion
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.
Good refactoring. Separating the logic for picking a vote to send to a peer from the actual sending logic is a good improvement.
I left some comments with suggestions. I would separate the most common logic, pick a vote from the current height, from the catchup logic, that takes votes from previous heights.
Co-authored-by: Daniel <daniel.cason@informal.systems>
…tHasVote` --> `sendVoteSetHasVote`
…gic (#2663) This was done by @ebuchman as part of a refactoring spree :-) The goal of this is to improve testability of `gossipDataRoutine` by separating out the logic for picking which block part to send. We introduced a new pure function, `pickPartToSend`, which returns a block part, and then call the new `SendPartSetHasPart` method to send it and update the peer state. This greatly simplifies the loop in `gossipDataRoutine`, and allows the `pickPartToSend` function to be independently tested. Note for reviewers: * This PR is built on top of #2659 * This is pure refactoring, no logic change was intended. * This PR can be reviewed commit by commit --- #### PR checklist - [ ] Tests written/updated - [ ] Changelog entry added in `.changelog` (we use [unclog](https://github.com/informalsystems/unclog) to manage our changelog) - [ ] Updated relevant documentation (`docs/` or `spec/`) and code comments - [x] Title follows the [Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0/) spec --------- Co-authored-by: Sergio Mena <sergio@informal.systems> Co-authored-by: Ethan Buchman <ethan@coinculture.info>
…gic (#2663) This was done by @ebuchman as part of a refactoring spree :-) The goal of this is to improve testability of `gossipDataRoutine` by separating out the logic for picking which block part to send. We introduced a new pure function, `pickPartToSend`, which returns a block part, and then call the new `SendPartSetHasPart` method to send it and update the peer state. This greatly simplifies the loop in `gossipDataRoutine`, and allows the `pickPartToSend` function to be independently tested. Note for reviewers: * This PR is built on top of #2659 * This is pure refactoring, no logic change was intended. * This PR can be reviewed commit by commit --- #### PR checklist - [ ] Tests written/updated - [ ] Changelog entry added in `.changelog` (we use [unclog](https://github.com/informalsystems/unclog) to manage our changelog) - [ ] Updated relevant documentation (`docs/` or `spec/`) and code comments - [x] Title follows the [Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0/) spec --------- Co-authored-by: Sergio Mena <sergio@informal.systems> Co-authored-by: Ethan Buchman <ethan@coinculture.info> (cherry picked from commit 163f2d5) # Conflicts: # internal/consensus/reactor.go
@mergify backport v1.x |
✅ Backports have been created
|
…2659) This is done by @adizere , @ebuchman , and @sergio-mena as part of a refactoring spree :-) The goal of this is to improve testability of gossipVotesRoutine by separating out the logic for picking which vote to send. We introduced a new pure function, pickVoteToSend, which returns a vote, and then call the new SendVoteSetHasVote method to send it. This greatly simplifies the loop in gossipVoteRoutine, and allows the pickVoteToSend function to be independently tested. Note for reviewers: * This is pure refactoring, no logic change was intended. * This PR can be reviewed commit by commit --- #### PR checklist - [ ] Tests written/updated - [ ] Changelog entry added in `.changelog` (we use [unclog](https://github.com/informalsystems/unclog) to manage our changelog) - [ ] Updated relevant documentation (`docs/` or `spec/`) and code comments - [ ] Title follows the [Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0/) spec --------- Co-authored-by: Daniel <daniel.cason@informal.systems> (cherry picked from commit 34e41c5)
…backport #2659) (#3047) This is done by @adizere , @ebuchman , and @sergio-mena as part of a refactoring spree :-) The goal of this is to improve testability of gossipVotesRoutine by separating out the logic for picking which vote to send. We introduced a new pure function, pickVoteToSend, which returns a vote, and then call the new SendVoteSetHasVote method to send it. This greatly simplifies the loop in gossipVoteRoutine, and allows the pickVoteToSend function to be independently tested. Note for reviewers: * This is pure refactoring, no logic change was intended. * This PR can be reviewed commit by commit --- #### PR checklist - [ ] Tests written/updated - [ ] Changelog entry added in `.changelog` (we use [unclog](https://github.com/informalsystems/unclog) to manage our changelog) - [ ] Updated relevant documentation (`docs/` or `spec/`) and code comments - [ ] Title follows the [Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0/) spec <hr>This is an automatic backport of pull request #2659 done by [Mergify](https://mergify.com). Co-authored-by: Sergio Mena <sergio@informal.systems>
…gic (backport #2663) (#3046) This was done by @ebuchman as part of a refactoring spree :-) The goal of this is to improve testability of `gossipDataRoutine` by separating out the logic for picking which block part to send. We introduced a new pure function, `pickPartToSend`, which returns a block part, and then call the new `SendPartSetHasPart` method to send it and update the peer state. This greatly simplifies the loop in `gossipDataRoutine`, and allows the `pickPartToSend` function to be independently tested. Note for reviewers: * This PR is built on top of #2659 * This is pure refactoring, no logic change was intended. * This PR can be reviewed commit by commit --- #### PR checklist - [ ] Tests written/updated - [ ] Changelog entry added in `.changelog` (we use [unclog](https://github.com/informalsystems/unclog) to manage our changelog) - [ ] Updated relevant documentation (`docs/` or `spec/`) and code comments - [x] Title follows the [Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0/) spec <hr>This is an automatic backport of pull request #2663 done by [Mergify](https://mergify.com). --------- Co-authored-by: Daniel <daniel.cason@informal.systems> Co-authored-by: Anton Kaliaev <anton.kalyaev@gmail.com>
This is done by @adizere , @ebuchman , and @sergio-mena as part of a refactoring spree :-)
The goal of this is to improve testability of gossipVotesRoutine by separating out the logic for picking which vote to send. We introduced a new pure function, pickVoteToSend, which returns a vote, and then call the new SendVoteSetHasVote method to send it. This greatly simplifies the loop in gossipVoteRoutine, and allows the pickVoteToSend function to be independently tested.
Note for reviewers:
PR checklist
.changelog
(we use unclog to manage our changelog)docs/
orspec/
) and code comments