diff --git a/core/src/banking_stage.rs b/core/src/banking_stage.rs index 933fab231408bb..fa87e6d0bf3d74 100644 --- a/core/src/banking_stage.rs +++ b/core/src/banking_stage.rs @@ -462,6 +462,7 @@ impl BankingStage { committer.clone(), transaction_recorder.clone(), log_messages_bytes_limit, + bank_forks.clone(), unprocessed_transaction_storage, ) }) @@ -516,6 +517,7 @@ impl BankingStage { committer.clone(), transaction_recorder.clone(), log_messages_bytes_limit, + bank_forks.clone(), UnprocessedTransactionStorage::new_vote_storage( latest_unprocessed_votes.clone(), vote_source, @@ -590,6 +592,7 @@ impl BankingStage { committer: Committer, transaction_recorder: TransactionRecorder, log_messages_bytes_limit: Option, + bank_forks: Arc>, unprocessed_transaction_storage: UnprocessedTransactionStorage, ) -> JoinHandle<()> { let mut packet_receiver = PacketReceiver::new(id, packet_receiver); @@ -607,6 +610,7 @@ impl BankingStage { &mut packet_receiver, &decision_maker, &consumer, + &bank_forks, id, unprocessed_transaction_storage, ) @@ -669,6 +673,7 @@ impl BankingStage { packet_receiver: &mut PacketReceiver, decision_maker: &DecisionMaker, consumer: &Consumer, + bank_forks: &RwLock, id: u32, mut unprocessed_transaction_storage: UnprocessedTransactionStorage, ) { @@ -696,6 +701,11 @@ impl BankingStage { tracer_packet_stats.report(1000); + if !unprocessed_transaction_storage.should_not_process() { + unprocessed_transaction_storage + .cache_epoch_boundary_info(&bank_forks.read().unwrap().working_bank()); + } + match packet_receiver.receive_and_buffer_packets( &mut unprocessed_transaction_storage, &mut banking_stage_stats, diff --git a/core/src/banking_stage/consumer.rs b/core/src/banking_stage/consumer.rs index fb53b014f5f532..f2ae4dc905841c 100644 --- a/core/src/banking_stage/consumer.rs +++ b/core/src/banking_stage/consumer.rs @@ -115,9 +115,6 @@ impl Consumer { banking_stage_stats: &BankingStageStats, slot_metrics_tracker: &mut LeaderSlotMetricsTracker, ) { - // Cache epoch info if necessary. - unprocessed_transaction_storage.cache_epoch_boundary_info(&bank_start.working_bank); - let mut rebuffered_packet_count = 0; let mut consumed_buffered_packets_count = 0; let mut proc_start = Measure::start("consume_buffered_process");