Better logging when backfilling ancient blocks fail (#10796)
* Better logging when backfilling ancient blocks fail Print total blocks imported, closes #10792 * `finalize()` doesn't need Engine Pull out call to migrated_blocks() from replace_client_db() * More logs * Clarify that the percentage may be misleading * Remove replace_client_db() and replace with a straight call to restore_db() * Include the parent_hash in UnlinkedAncientBlockChain errors * Add a new RestorationStatus varian: Finalizing (as it can take a loooong while) Call abort_restore() when restoration fails * Add missing cases for new variant * typos * Typo and derive Debug * Do not attempt to salvage existing blocks unless they form a complete chain back to genesis * Fix test * Revert "Fix test" This reverts commit f027d4b4cb7b6c23fceec528c1711886ba9cfe4e. * Fix test again * Update comment * Be careful about locks * fix test failure * Do not defer returning an error when the chain is broken * Review feedback * no hex formatting for Option
This commit is contained in:
@@ -256,7 +256,7 @@ impl SyncHandler {
|
||||
return Err(DownloaderImportError::Invalid);
|
||||
}
|
||||
match io.chain().block_status(BlockId::Hash(hash.clone())) {
|
||||
BlockStatus::InChain => {
|
||||
BlockStatus::InChain => {
|
||||
trace!(target: "sync", "New block hash already in chain {:?}", hash);
|
||||
},
|
||||
BlockStatus::Queued => {
|
||||
@@ -529,10 +529,14 @@ impl SyncHandler {
|
||||
sync.snapshot.clear();
|
||||
return Ok(());
|
||||
},
|
||||
RestorationStatus::Initializing { .. } => {
|
||||
RestorationStatus::Initializing { .. } => {
|
||||
trace!(target: "warp", "{}: Snapshot restoration is initializing", peer_id);
|
||||
return Ok(());
|
||||
}
|
||||
RestorationStatus::Finalizing => {
|
||||
trace!(target: "warp", "{}: Snapshot finalizing restoration", peer_id);
|
||||
return Ok(());
|
||||
}
|
||||
RestorationStatus::Ongoing { .. } => {
|
||||
trace!(target: "sync", "{}: Snapshot restoration is ongoing", peer_id);
|
||||
},
|
||||
|
||||
@@ -1210,7 +1210,7 @@ impl ChainSync {
|
||||
RestorationStatus::Inactive | RestorationStatus::Failed => {
|
||||
self.set_state(SyncState::SnapshotWaiting);
|
||||
},
|
||||
RestorationStatus::Initializing { .. } | RestorationStatus::Ongoing { .. } => (),
|
||||
RestorationStatus::Initializing { .. } | RestorationStatus::Ongoing { .. } | RestorationStatus::Finalizing => (),
|
||||
},
|
||||
SyncState::SnapshotWaiting => {
|
||||
match io.snapshot_service().status() {
|
||||
@@ -1221,6 +1221,9 @@ impl ChainSync {
|
||||
RestorationStatus::Initializing { .. } => {
|
||||
trace!(target:"sync", "Snapshot restoration is initializing");
|
||||
},
|
||||
RestorationStatus::Finalizing { .. } => {
|
||||
trace!(target:"sync", "Snapshot finalizing restoration");
|
||||
},
|
||||
RestorationStatus::Ongoing { state_chunks_done, block_chunks_done, .. } => {
|
||||
if !self.snapshot.is_complete() && self.snapshot.done_chunks() - (state_chunks_done + block_chunks_done) as usize <= MAX_SNAPSHOT_CHUNKS_DOWNLOAD_AHEAD {
|
||||
trace!(target:"sync", "Resuming snapshot sync");
|
||||
|
||||
Reference in New Issue
Block a user