Add BankForks to RepairService (#4223)

automerge
This commit is contained in:
carllin 2019-05-08 18:51:43 -07:00 committed by Grimes
parent 9cdffc7d64
commit bba94c43b9
2 changed files with 16 additions and 4 deletions

View File

@ -1,6 +1,7 @@
//! The `repair_service` module implements the tools necessary to generate a thread which //! The `repair_service` module implements the tools necessary to generate a thread which
//! regularly finds missing blobs in the ledger and sends repair requests for those blobs //! regularly finds missing blobs in the ledger and sends repair requests for those blobs
use crate::bank_forks::BankForks;
use crate::blocktree::{Blocktree, SlotMeta}; use crate::blocktree::{Blocktree, SlotMeta};
use crate::cluster_info::ClusterInfo; use crate::cluster_info::ClusterInfo;
use crate::result::Result; use crate::result::Result;
@ -67,6 +68,7 @@ impl RepairService {
exit: &Arc<AtomicBool>, exit: &Arc<AtomicBool>,
repair_socket: Arc<UdpSocket>, repair_socket: Arc<UdpSocket>,
cluster_info: Arc<RwLock<ClusterInfo>>, cluster_info: Arc<RwLock<ClusterInfo>>,
bank_forks: Option<Arc<RwLock<BankForks>>>,
repair_slot_range: Option<RepairSlotRange>, repair_slot_range: Option<RepairSlotRange>,
) -> Self { ) -> Self {
let exit = exit.clone(); let exit = exit.clone();
@ -78,6 +80,7 @@ impl RepairService {
exit, exit,
&repair_socket, &repair_socket,
&cluster_info, &cluster_info,
&bank_forks,
repair_slot_range, repair_slot_range,
) )
}) })
@ -91,6 +94,7 @@ impl RepairService {
exit: Arc<AtomicBool>, exit: Arc<AtomicBool>,
repair_socket: &Arc<UdpSocket>, repair_socket: &Arc<UdpSocket>,
cluster_info: &Arc<RwLock<ClusterInfo>>, cluster_info: &Arc<RwLock<ClusterInfo>>,
bank_forks: &Option<Arc<RwLock<BankForks>>>,
repair_slot_range: Option<RepairSlotRange>, repair_slot_range: Option<RepairSlotRange>,
) { ) {
let mut repair_info = RepairInfo::new(); let mut repair_info = RepairInfo::new();
@ -111,7 +115,10 @@ impl RepairService {
repair_slot_range, repair_slot_range,
) )
} else { } else {
Self::update_fast_repair(id, &epoch_slots, &cluster_info); let bank_forks = bank_forks
.as_ref()
.expect("Non-replicator repair strategy missing BankForks");
Self::update_fast_repair(id, &epoch_slots, &cluster_info, bank_forks);
Self::generate_repairs(blocktree, MAX_REPAIR_LENGTH) Self::generate_repairs(blocktree, MAX_REPAIR_LENGTH)
} }
}; };
@ -271,8 +278,13 @@ impl RepairService {
} }
} }
fn update_fast_repair(id: Pubkey, slots: &HashSet<u64>, cluster_info: &RwLock<ClusterInfo>) { fn update_fast_repair(
let root = 0; id: Pubkey,
slots: &HashSet<u64>,
cluster_info: &RwLock<ClusterInfo>,
bank_forks: &Arc<RwLock<BankForks>>,
) {
let root = bank_forks.read().unwrap().root();
cluster_info cluster_info
.write() .write()
.unwrap() .unwrap()

View File

@ -191,10 +191,10 @@ impl WindowService {
exit, exit,
repair_socket, repair_socket,
cluster_info.clone(), cluster_info.clone(),
bank_forks.clone(),
repair_slot_range, repair_slot_range,
); );
let exit = exit.clone(); let exit = exit.clone();
let bank_forks = bank_forks.clone();
let leader_schedule_cache = leader_schedule_cache.clone(); let leader_schedule_cache = leader_schedule_cache.clone();
let hash = *genesis_blockhash; let hash = *genesis_blockhash;
let t_window = Builder::new() let t_window = Builder::new()