From 4a8349fa8a6af5e441220a57d393f016e5783ecd Mon Sep 17 00:00:00 2001 From: teor Date: Fri, 4 Nov 2022 16:57:45 +1000 Subject: [PATCH] fix(sync): Make the syncer ignore some new block verification errors (#5537) * Fix error text for state service for syncer * Fix error handling in syncer * cargo fmt --all Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> --- zebra-state/src/service.rs | 7 +++++-- zebrad/src/components/sync.rs | 8 ++++++-- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/zebra-state/src/service.rs b/zebra-state/src/service.rs index ac2ff5e1f..1b457f24a 100644 --- a/zebra-state/src/service.rs +++ b/zebra-state/src/service.rs @@ -609,14 +609,17 @@ impl StateService { .contains(&prepared.hash) { let (rsp_tx, rsp_rx) = oneshot::channel(); - let _ = rsp_tx.send(Err("block already sent to be committed to the state".into())); + let _ = rsp_tx.send(Err( + "block has already been sent to be committed to the state".into(), + )); return rsp_rx; } if self.read_service.db.contains_height(prepared.height) { let (rsp_tx, rsp_rx) = oneshot::channel(); let _ = rsp_tx.send(Err( - "block height is already committed to the finalized state".into(), + "block height is in the finalized state: block is already committed to the state" + .into(), )); return rsp_rx; } diff --git a/zebrad/src/components/sync.rs b/zebrad/src/components/sync.rs index 03b4335fb..c33ea98e1 100644 --- a/zebrad/src/components/sync.rs +++ b/zebrad/src/components/sync.rs @@ -1126,9 +1126,12 @@ where BlockDownloadVerifyError::Invalid { error: VerifyChainError::Block(VerifyBlockError::Commit(ref source)), .. - } if format!("{source:?}").contains("block is already committed to the state") => { + } if format!("{source:?}").contains("block is already committed to the state") + || format!("{source:?}") + .contains("block has already been sent to be committed to the state") => + { // TODO: improve this by checking the type (#2908) - debug!(error = ?e, "block is already committed, possibly from a previous sync run, continuing"); + debug!(error = ?e, "block is already committed or pending a commit, possibly from a previous sync run, continuing"); false } BlockDownloadVerifyError::DownloadFailed { ref error, .. } @@ -1158,6 +1161,7 @@ where if err_str.contains("AlreadyVerified") || err_str.contains("AlreadyInChain") || err_str.contains("block is already committed to the state") + || err_str.contains("block has already been sent to be committed to the state") || err_str.contains("NotFound") { error!(?e,