Skip to content

Conversation

@carllin
Copy link
Contributor

@carllin carllin commented Feb 18, 2025

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 #


// 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;
Copy link
Contributor

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?

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);
Copy link
Contributor

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);
Copy link
Contributor

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.

Copy link
Contributor Author

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)),
Copy link
Contributor

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.

Copy link
Contributor Author

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

saved_vote_history, ..
} = &vote_op
{
let mut measure = Measure::start("tower storage save");
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: tower-> vote history

@carllin carllin requested a review from ksn6 February 25, 2025 03:16
@carllin carllin merged commit f319705 into anza-xyz:master Feb 28, 2025
7 checks passed
carllin added a commit that referenced this pull request Mar 1, 2025
carllin added a commit that referenced this pull request Mar 1, 2025
bw-solana pushed a commit to bw-solana/alpenglow that referenced this pull request Aug 1, 2025
bw-solana pushed a commit to bw-solana/alpenglow that referenced this pull request Aug 1, 2025
bw-solana pushed a commit to bw-solana/alpenglow that referenced this pull request Aug 1, 2025
bw-solana pushed a commit to bw-solana/alpenglow that referenced this pull request Aug 1, 2025
bw-solana pushed a commit to bw-solana/alpenglow that referenced this pull request Aug 1, 2025
bw-solana pushed a commit to bw-solana/alpenglow that referenced this pull request Aug 1, 2025
bw-solana pushed a commit to bw-solana/alpenglow that referenced this pull request Aug 2, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants