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
//! 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::cluster_info::ClusterInfo;
use crate::result::Result;
@ -67,6 +68,7 @@ impl RepairService {
exit: &Arc<AtomicBool>,
repair_socket: Arc<UdpSocket>,
cluster_info: Arc<RwLock<ClusterInfo>>,
bank_forks: Option<Arc<RwLock<BankForks>>>,
repair_slot_range: Option<RepairSlotRange>,
) -> Self {
let exit = exit.clone();
@ -78,6 +80,7 @@ impl RepairService {
exit,
&repair_socket,
&cluster_info,
&bank_forks,
repair_slot_range,
)
})
@ -91,6 +94,7 @@ impl RepairService {
exit: Arc<AtomicBool>,
repair_socket: &Arc<UdpSocket>,
cluster_info: &Arc<RwLock<ClusterInfo>>,
bank_forks: &Option<Arc<RwLock<BankForks>>>,
repair_slot_range: Option<RepairSlotRange>,
) {
let mut repair_info = RepairInfo::new();
@ -111,7 +115,10 @@ impl RepairService {
repair_slot_range,
)
} 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)
}
};
@ -271,8 +278,13 @@ impl RepairService {
}
}
fn update_fast_repair(id: Pubkey, slots: &HashSet<u64>, cluster_info: &RwLock<ClusterInfo>) {
let root = 0;
fn update_fast_repair(
id: Pubkey,
slots: &HashSet<u64>,
cluster_info: &RwLock<ClusterInfo>,
bank_forks: &Arc<RwLock<BankForks>>,
) {
let root = bank_forks.read().unwrap().root();
cluster_info
.write()
.unwrap()

View File

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