consensus: improve checkpoint request replacement diagnostics

This commit is contained in:
Henry de Valence 2020-11-12 14:38:47 -08:00
parent a3ab589d89
commit aa8d95bd23
1 changed files with 4 additions and 8 deletions

View File

@ -454,12 +454,7 @@ where
let height = match self.check_block(&block) {
Ok(height) => height,
Err(error) => {
// Block errors happen frequently on mainnet, due to bad peers.
tracing::trace!(?error);
// Sending might fail, depending on what the caller does with rx,
// but there's nothing we can do about it.
let _ = tx.send(Err(error));
tx.send(Err(error)).expect("rx has not been dropped yet");
return rx;
}
};
@ -474,11 +469,12 @@ where
let hash = block.hash();
// Replace older requests by newer ones by swapping the oneshot.
for qb in qblocks.iter_mut() {
if qb.hash == hash {
let old_tx = std::mem::replace(&mut qb.tx, tx);
let e = VerifyCheckpointError::NewerRequest { height, hash };
tracing::trace!(?e);
tracing::trace!(?e, "failing older of duplicate requests");
let old_tx = std::mem::replace(&mut qb.tx, tx);
let _ = old_tx.send(Err(e));
return rx;
}