parent
9cdffc7d64
commit
bba94c43b9
|
@ -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()
|
||||||
|
|
|
@ -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()
|
||||||
|
|
Loading…
Reference in New Issue