Cache block time in Blockstore (#11955)
* Add blockstore column to cache block times * Add method to cache block time * Add service to cache block time * Update rpc getBlockTime to use new method, and refactor blockstore slightly * Return block_time with confirmed block, if available * Add measure and warning to cache-block-time
This commit is contained in:
@ -2,6 +2,7 @@
|
||||
|
||||
use crate::{
|
||||
broadcast_stage::BroadcastStageType,
|
||||
cache_block_time_service::{CacheBlockTimeSender, CacheBlockTimeService},
|
||||
cluster_info::{ClusterInfo, Node},
|
||||
cluster_info_vote_listener::VoteTracker,
|
||||
completed_data_sets_service::CompletedDataSetsService,
|
||||
@ -149,6 +150,8 @@ struct TransactionHistoryServices {
|
||||
transaction_status_service: Option<TransactionStatusService>,
|
||||
rewards_recorder_sender: Option<RewardsRecorderSender>,
|
||||
rewards_recorder_service: Option<RewardsRecorderService>,
|
||||
cache_block_time_sender: Option<CacheBlockTimeSender>,
|
||||
cache_block_time_service: Option<CacheBlockTimeService>,
|
||||
}
|
||||
|
||||
pub struct Validator {
|
||||
@ -157,6 +160,7 @@ pub struct Validator {
|
||||
rpc_service: Option<(JsonRpcService, PubSubService, RpcBanksService)>,
|
||||
transaction_status_service: Option<TransactionStatusService>,
|
||||
rewards_recorder_service: Option<RewardsRecorderService>,
|
||||
cache_block_time_service: Option<CacheBlockTimeService>,
|
||||
gossip_service: GossipService,
|
||||
serve_repair_service: ServeRepairService,
|
||||
completed_data_sets_service: CompletedDataSetsService,
|
||||
@ -244,6 +248,8 @@ impl Validator {
|
||||
transaction_status_service,
|
||||
rewards_recorder_sender,
|
||||
rewards_recorder_service,
|
||||
cache_block_time_sender,
|
||||
cache_block_time_service,
|
||||
},
|
||||
) = new_banks_from_ledger(config, ledger_path, poh_verify, &exit);
|
||||
|
||||
@ -477,6 +483,7 @@ impl Validator {
|
||||
config.enable_partition.clone(),
|
||||
transaction_status_sender.clone(),
|
||||
rewards_recorder_sender,
|
||||
cache_block_time_sender,
|
||||
snapshot_package_sender,
|
||||
vote_tracker.clone(),
|
||||
retransmit_slots_sender,
|
||||
@ -523,6 +530,7 @@ impl Validator {
|
||||
rpc_service,
|
||||
transaction_status_service,
|
||||
rewards_recorder_service,
|
||||
cache_block_time_service,
|
||||
snapshot_packager_service,
|
||||
completed_data_sets_service,
|
||||
tpu,
|
||||
@ -587,6 +595,10 @@ impl Validator {
|
||||
rewards_recorder_service.join()?;
|
||||
}
|
||||
|
||||
if let Some(cache_block_time_service) = self.cache_block_time_service {
|
||||
cache_block_time_service.join()?;
|
||||
}
|
||||
|
||||
if let Some(s) = self.snapshot_packager_service {
|
||||
s.join()?;
|
||||
}
|
||||
@ -772,6 +784,14 @@ fn initialize_rpc_transaction_history_services(
|
||||
let rewards_recorder_sender = Some(rewards_recorder_sender);
|
||||
let rewards_recorder_service = Some(RewardsRecorderService::new(
|
||||
rewards_receiver,
|
||||
blockstore.clone(),
|
||||
exit,
|
||||
));
|
||||
|
||||
let (cache_block_time_sender, cache_block_time_receiver) = unbounded();
|
||||
let cache_block_time_sender = Some(cache_block_time_sender);
|
||||
let cache_block_time_service = Some(CacheBlockTimeService::new(
|
||||
cache_block_time_receiver,
|
||||
blockstore,
|
||||
exit,
|
||||
));
|
||||
@ -780,6 +800,8 @@ fn initialize_rpc_transaction_history_services(
|
||||
transaction_status_service,
|
||||
rewards_recorder_sender,
|
||||
rewards_recorder_service,
|
||||
cache_block_time_sender,
|
||||
cache_block_time_service,
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user