Skip to content

Commit d9736f5

Browse files
AshwinSekarbw-solana
authored andcommitted
votor: unify own vote sender with bls receiver, unify skip receiver (anza-xyz#308)
1 parent ca10dcd commit d9736f5

File tree

6 files changed

+26
-27
lines changed

6 files changed

+26
-27
lines changed

core/src/replay_stage.rs

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,10 @@ use {
6969
commitment::BlockCommitmentCache,
7070
installed_scheduler_pool::BankWithScheduler,
7171
prioritization_fee_cache::PrioritizationFeeCache,
72-
vote_sender_types::{AlpenglowVoteSender, BLSVerifiedMessageReceiver, ReplayVoteSender},
72+
vote_sender_types::{
73+
AlpenglowVoteSender, BLSVerifiedMessageReceiver, BLSVerifiedMessageSender,
74+
ReplayVoteSender,
75+
},
7376
},
7477
solana_sdk::{
7578
clock::{BankId, Slot, NUM_CONSECUTIVE_LEADER_SLOTS},
@@ -302,6 +305,7 @@ pub struct ReplaySenders {
302305
pub alpenglow_vote_sender: AlpenglowVoteSender,
303306
pub certificate_sender: Sender<(CertificateId, CertificateMessage)>,
304307
pub votor_event_sender: VotorEventSender,
308+
pub own_vote_sender: BLSVerifiedMessageSender,
305309
}
306310

307311
pub struct ReplayReceivers {
@@ -609,6 +613,7 @@ impl ReplayStage {
609613
alpenglow_vote_sender,
610614
certificate_sender,
611615
votor_event_sender,
616+
own_vote_sender,
612617
} = senders;
613618

614619
let ReplayReceivers {
@@ -655,6 +660,7 @@ impl ReplayStage {
655660
certificate_sender,
656661
event_sender: votor_event_sender.clone(),
657662
event_receiver: votor_event_receiver.clone(),
663+
own_vote_sender,
658664
bls_receiver: bls_verified_message_receiver,
659665
};
660666
let votor = Votor::new(votor_config);

core/src/tvu.rs

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,10 @@ use {
4545
bank_forks::BankForks,
4646
commitment::BlockCommitmentCache,
4747
prioritization_fee_cache::PrioritizationFeeCache,
48-
vote_sender_types::{AlpenglowVoteSender, BLSVerifiedMessageReceiver, ReplayVoteSender},
48+
vote_sender_types::{
49+
AlpenglowVoteSender, BLSVerifiedMessageReceiver, BLSVerifiedMessageSender,
50+
ReplayVoteSender,
51+
},
4952
},
5053
solana_sdk::{clock::Slot, pubkey::Pubkey, signature::Keypair},
5154
solana_turbine::retransmit_stage::RetransmitStage,
@@ -153,6 +156,7 @@ impl Tvu {
153156
bank_notification_sender: Option<BankNotificationSenderConfig>,
154157
duplicate_confirmed_slots_receiver: DuplicateConfirmedSlotsReceiver,
155158
alpenglow_vote_sender: AlpenglowVoteSender,
159+
own_vote_sender: BLSVerifiedMessageSender,
156160
bls_verified_message_receiver: BLSVerifiedMessageReceiver,
157161
tvu_config: TvuConfig,
158162
max_slots: &Arc<MaxSlots>,
@@ -324,6 +328,7 @@ impl Tvu {
324328
alpenglow_vote_sender,
325329
certificate_sender,
326330
votor_event_sender,
331+
own_vote_sender,
327332
};
328333

329334
let replay_receivers = ReplayReceivers {
@@ -546,7 +551,7 @@ pub mod tests {
546551
let (replay_vote_sender, _replay_vote_receiver) = unbounded();
547552
let (alpenglow_vote_sender, _alpenglow_vote_receiver) = unbounded();
548553
let (_, gossip_confirmed_slots_receiver) = unbounded();
549-
let (_, alpenglow_vote_receiver) = unbounded();
554+
let (bls_verified_message_sender, bls_verified_message_receiver) = unbounded();
550555
let max_complete_transaction_status_slot = Arc::new(AtomicU64::default());
551556
let max_complete_rewards_slot = Arc::new(AtomicU64::default());
552557
let ignored_prioritization_fee_cache = Arc::new(PrioritizationFeeCache::new(0u64));
@@ -614,7 +619,8 @@ pub mod tests {
614619
None,
615620
gossip_confirmed_slots_receiver,
616621
alpenglow_vote_sender,
617-
alpenglow_vote_receiver,
622+
bls_verified_message_sender,
623+
bls_verified_message_receiver,
618624
TvuConfig::default(),
619625
&Arc::new(MaxSlots::default()),
620626
None,

core/src/validator.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1596,6 +1596,7 @@ impl Validator {
15961596
bank_notification_sender.clone(),
15971597
duplicate_confirmed_slots_receiver,
15981598
alpenglow_vote_sender.clone(),
1599+
bls_verified_message_sender.clone(),
15991600
bls_verified_message_receiver,
16001601
TvuConfig {
16011602
max_ledger_shreds: config.max_ledger_shreds,

votor/src/certificate_pool_service.rs

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,6 @@ pub(crate) struct CertificatePoolContext {
5151
// just like regular votes. However do we need to convert
5252
// Vote -> BLSMessage -> Vote?
5353
// consider adding a separate pathway in cert_pool.add_transaction for ingesting own votes
54-
pub(crate) own_vote_receiver: BLSVerifiedMessageReceiver,
5554
pub(crate) bls_receiver: BLSVerifiedMessageReceiver,
5655

5756
pub(crate) bls_sender: Sender<BLSOp>,
@@ -248,9 +247,6 @@ impl CertificatePoolService {
248247
}
249248

250249
let bls_messages: Vec<BLSMessage> = select! {
251-
recv(ctx.own_vote_receiver) -> msg => {
252-
std::iter::once(msg?).chain(ctx.own_vote_receiver.try_iter()).collect()
253-
},
254250
recv(ctx.bls_receiver) -> msg => {
255251
std::iter::once(msg?).chain(ctx.bls_receiver.try_iter()).collect()
256252
},

votor/src/event_handler.rs

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -41,11 +41,7 @@ pub(crate) struct EventHandlerContext {
4141
pub(crate) exit: Arc<AtomicBool>,
4242
pub(crate) start: Arc<(Mutex<bool>, Condvar)>,
4343

44-
// VotorEvent receivers
4544
pub(crate) event_receiver: VotorEventReceiver,
46-
pub(crate) skip_timeout_receiver: VotorEventReceiver,
47-
48-
// Skip timer
4945
pub(crate) skip_timer: Arc<RwLock<SkipTimerManager>>,
5046

5147
// Contexts
@@ -97,7 +93,6 @@ impl EventHandler {
9793
exit,
9894
start,
9995
event_receiver,
100-
skip_timeout_receiver,
10196
skip_timer,
10297
shared_context: ctx,
10398
voting_context: mut vctx,
@@ -133,9 +128,6 @@ impl EventHandler {
133128
recv(event_receiver) -> msg => {
134129
msg?
135130
},
136-
recv(skip_timeout_receiver) -> msg => {
137-
msg?
138-
}
139131
default(Duration::from_secs(1)) => continue
140132
};
141133

votor/src/votor.rs

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ use {
5454
CertificateId,
5555
},
5656
alpenglow_vote::bls_message::CertificateMessage,
57-
crossbeam_channel::{bounded, Sender},
57+
crossbeam_channel::Sender,
5858
solana_gossip::cluster_info::ClusterInfo,
5959
solana_ledger::{blockstore::Blockstore, leader_schedule_cache::LeaderScheduleCache},
6060
solana_pubkey::Pubkey,
@@ -63,9 +63,11 @@ use {
6363
rpc_subscriptions::RpcSubscriptions,
6464
},
6565
solana_runtime::{
66-
accounts_background_service::AbsRequestSender, bank_forks::BankForks,
67-
installed_scheduler_pool::BankWithScheduler, root_bank_cache::RootBankCache,
68-
vote_sender_types::BLSVerifiedMessageReceiver,
66+
accounts_background_service::AbsRequestSender,
67+
bank_forks::BankForks,
68+
installed_scheduler_pool::BankWithScheduler,
69+
root_bank_cache::RootBankCache,
70+
vote_sender_types::{BLSVerifiedMessageReceiver, BLSVerifiedMessageSender},
6971
},
7072
solana_sdk::{clock::Slot, signature::Keypair, signer::Signer},
7173
std::{
@@ -113,6 +115,7 @@ pub struct VotorConfig {
113115
pub leader_window_notifier: Arc<LeaderWindowNotifier>,
114116
pub certificate_sender: Sender<(CertificateId, CertificateMessage)>,
115117
pub event_sender: VotorEventSender,
118+
pub own_vote_sender: BLSVerifiedMessageSender,
116119

117120
// Receivers
118121
pub event_receiver: VotorEventReceiver,
@@ -164,6 +167,7 @@ impl Votor {
164167
certificate_sender,
165168
event_sender,
166169
event_receiver,
170+
own_vote_sender,
167171
bls_receiver,
168172
} = config;
169173

@@ -173,10 +177,6 @@ impl Votor {
173177
let my_pubkey = identity_keypair.pubkey();
174178
let has_new_vote_been_rooted = !wait_for_vote_to_start_leader;
175179

176-
// These should not backup, TODO: add metrics for length
177-
let (skip_timeout_sender, skip_timeout_receiver) = bounded(1000);
178-
let (own_vote_sender, own_vote_receiver) = bounded(1000);
179-
180180
let shared_context = SharedContext {
181181
blockstore: blockstore.clone(),
182182
bank_forks: bank_forks.clone(),
@@ -209,13 +209,12 @@ impl Votor {
209209
};
210210

211211
let (skip_timer_service, skip_timer) =
212-
SkipTimerService::new(exit.clone(), 100, skip_timeout_sender);
212+
SkipTimerService::new(exit.clone(), 100, event_sender.clone());
213213

214214
let event_handler_context = EventHandlerContext {
215215
exit: exit.clone(),
216216
start: start.clone(),
217217
event_receiver,
218-
skip_timeout_receiver,
219218
skip_timer,
220219
shared_context,
221220
voting_context,
@@ -230,7 +229,6 @@ impl Votor {
230229
blockstore,
231230
root_bank_cache: RootBankCache::new(bank_forks.clone()),
232231
leader_schedule_cache,
233-
own_vote_receiver,
234232
bls_receiver,
235233
bls_sender,
236234
event_sender,

0 commit comments

Comments
 (0)