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>
This commit is contained in:
teor 2022-11-04 16:57:45 +10:00 committed by GitHub
parent 2dc8c0a2bd
commit 4a8349fa8a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 11 additions and 4 deletions

View File

@ -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;
}

View File

@ -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,