Handle errors when sending an accounts package during shutdown (#31874)
This commit is contained in:
parent
8c73a2cae9
commit
c569a37713
|
@ -233,7 +233,12 @@ fn run_bank_forks_snapshot_n<F>(
|
||||||
if slot % set_root_interval == 0 || slot == last_slot {
|
if slot % set_root_interval == 0 || slot == last_slot {
|
||||||
// set_root should send a snapshot request
|
// set_root should send a snapshot request
|
||||||
bank_forks.set_root(bank.slot(), &request_sender, None);
|
bank_forks.set_root(bank.slot(), &request_sender, None);
|
||||||
snapshot_request_handler.handle_snapshot_requests(false, 0, &mut None);
|
snapshot_request_handler.handle_snapshot_requests(
|
||||||
|
false,
|
||||||
|
0,
|
||||||
|
&mut None,
|
||||||
|
&AtomicBool::new(false),
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -753,6 +758,7 @@ fn test_bank_forks_incremental_snapshot(
|
||||||
false,
|
false,
|
||||||
0,
|
0,
|
||||||
&mut last_full_snapshot_slot,
|
&mut last_full_snapshot_slot,
|
||||||
|
&AtomicBool::new(false),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -149,6 +149,7 @@ impl SnapshotRequestHandler {
|
||||||
test_hash_calculation: bool,
|
test_hash_calculation: bool,
|
||||||
non_snapshot_time_us: u128,
|
non_snapshot_time_us: u128,
|
||||||
last_full_snapshot_slot: &mut Option<Slot>,
|
last_full_snapshot_slot: &mut Option<Slot>,
|
||||||
|
exit: &AtomicBool,
|
||||||
) -> Option<Result<u64, SnapshotError>> {
|
) -> Option<Result<u64, SnapshotError>> {
|
||||||
let (
|
let (
|
||||||
snapshot_request,
|
snapshot_request,
|
||||||
|
@ -174,6 +175,7 @@ impl SnapshotRequestHandler {
|
||||||
last_full_snapshot_slot,
|
last_full_snapshot_slot,
|
||||||
snapshot_request,
|
snapshot_request,
|
||||||
accounts_package_type,
|
accounts_package_type,
|
||||||
|
exit,
|
||||||
))
|
))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -295,6 +297,7 @@ impl SnapshotRequestHandler {
|
||||||
last_full_snapshot_slot: &mut Option<Slot>,
|
last_full_snapshot_slot: &mut Option<Slot>,
|
||||||
snapshot_request: SnapshotRequest,
|
snapshot_request: SnapshotRequest,
|
||||||
accounts_package_type: AccountsPackageType,
|
accounts_package_type: AccountsPackageType,
|
||||||
|
exit: &AtomicBool,
|
||||||
) -> Result<u64, SnapshotError> {
|
) -> Result<u64, SnapshotError> {
|
||||||
debug!(
|
debug!(
|
||||||
"handling snapshot request: {:?}, {:?}",
|
"handling snapshot request: {:?}, {:?}",
|
||||||
|
@ -414,9 +417,15 @@ impl SnapshotRequestHandler {
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
self.accounts_package_sender
|
let send_result = self.accounts_package_sender.send(accounts_package);
|
||||||
.send(accounts_package)
|
if let Err(err) = send_result {
|
||||||
.expect("send accounts package");
|
// Sending the accounts package should never fail *unless* we're shutting down.
|
||||||
|
let accounts_package = &err.0;
|
||||||
|
assert!(
|
||||||
|
exit.load(Ordering::Relaxed),
|
||||||
|
"Failed to send accounts package: {err}, {accounts_package:?}"
|
||||||
|
);
|
||||||
|
}
|
||||||
snapshot_time.stop();
|
snapshot_time.stop();
|
||||||
info!(
|
info!(
|
||||||
"Took bank snapshot. accounts package type: {:?}, slot: {}, bank hash: {}",
|
"Took bank snapshot. accounts package type: {:?}, slot: {}, bank hash: {}",
|
||||||
|
@ -528,11 +537,13 @@ impl AbsRequestHandlers {
|
||||||
test_hash_calculation: bool,
|
test_hash_calculation: bool,
|
||||||
non_snapshot_time_us: u128,
|
non_snapshot_time_us: u128,
|
||||||
last_full_snapshot_slot: &mut Option<Slot>,
|
last_full_snapshot_slot: &mut Option<Slot>,
|
||||||
|
exit: &AtomicBool,
|
||||||
) -> Option<Result<u64, SnapshotError>> {
|
) -> Option<Result<u64, SnapshotError>> {
|
||||||
self.snapshot_request_handler.handle_snapshot_requests(
|
self.snapshot_request_handler.handle_snapshot_requests(
|
||||||
test_hash_calculation,
|
test_hash_calculation,
|
||||||
non_snapshot_time_us,
|
non_snapshot_time_us,
|
||||||
last_full_snapshot_slot,
|
last_full_snapshot_slot,
|
||||||
|
exit,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -615,6 +626,7 @@ impl AccountsBackgroundService {
|
||||||
test_hash_calculation,
|
test_hash_calculation,
|
||||||
non_snapshot_time,
|
non_snapshot_time,
|
||||||
&mut last_full_snapshot_slot,
|
&mut last_full_snapshot_slot,
|
||||||
|
&exit,
|
||||||
)
|
)
|
||||||
})
|
})
|
||||||
.flatten();
|
.flatten();
|
||||||
|
|
Loading…
Reference in New Issue