-
Notifications
You must be signed in to change notification settings - Fork 29
Add alpenglow push vote path #44
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
Conversation
|
|
||
| // Attempt to send our vote transaction to the leaders for the next few slots | ||
| const UPCOMING_LEADER_FANOUT_SLOTS: u64 = FORWARD_TRANSACTIONS_TO_LEADER_AT_SLOT_OFFSET; | ||
| const UPCOMING_LEADER_ALPENGLOW_FANOUT_SLOTS: u64 = 20; |
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.
Now we do want to push all-to-all, do we still need to change the fanout here?
gossip/src/cluster_info.rs
Outdated
| let mut num_crds_votes = 0; | ||
| let vote_index = { | ||
| let gossip_crds = | ||
| self.time_gossip_read_lock("gossip_read_push_vote", &self.stats.push_vote_read); |
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.
Add our own stats to separate from old votes stats?
| self.time_gossip_read_lock("gossip_read_push_vote", &self.stats.push_vote_read); | ||
| (0..MAX_LOCKOUT_HISTORY as u8) | ||
| .filter_map(|ix| { | ||
| let vote = CrdsValueLabel::Vote(ix, self_pubkey); |
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.
I still think we should give each type of votes its own queue, so that skips won't kick finalize out and vice versa.
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.
think we can eventually switch to having constant indexes for each vote type, don't think its very liekely given it takes 32 votes to overwrite right now
| let vote: &CrdsData = gossip_crds.get(&vote)?; | ||
| num_crds_votes += 1; | ||
| match &vote { | ||
| CrdsData::Vote(_, vote) => Some((vote.wallclock, ix)), |
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.
We won't have timestamp in finalize and skip.
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.
all crds gossip data is tagged with a wallclock
core/src/voting_service.rs
Outdated
| saved_vote_history, .. | ||
| } = &vote_op | ||
| { | ||
| let mut measure = Measure::start("tower storage save"); |
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.
nit: tower-> vote history
Problem
Alpenglow voting isn't handled in gossip or sent to tpu's
Summary of Changes
Add a wider fanout to tpu's and also handle alpenglow push vote into gossip
Fixes #