Enrich TooManySiblingBlocks error info (#13052)

This commit is contained in:
Liu-Cheng Xu
2023-01-04 06:00:10 +08:00
committed by GitHub
parent 169cbc69c5
commit 1db2dc5b36
2 changed files with 9 additions and 3 deletions
+3 -2
View File
@@ -134,7 +134,7 @@ pub enum StateDbError {
/// Invalid pruning mode specified. Contains expected mode.
IncompatiblePruningModes { stored: PruningMode, requested: PruningMode },
/// Too many unfinalized sibling blocks inserted.
TooManySiblingBlocks,
TooManySiblingBlocks { number: u64 },
/// Trying to insert existing block.
BlockAlreadyExists,
/// Invalid metadata
@@ -184,7 +184,8 @@ impl fmt::Debug for StateDbError {
"Incompatible pruning modes [stored: {:?}; requested: {:?}]",
stored, requested
),
Self::TooManySiblingBlocks => write!(f, "Too many sibling blocks inserted"),
Self::TooManySiblingBlocks { number } =>
write!(f, "Too many sibling blocks at #{number} inserted"),
Self::BlockAlreadyExists => write!(f, "Block already exists"),
Self::Metadata(message) => write!(f, "Invalid metadata: {}", message),
Self::BlockUnavailable =>
@@ -283,7 +283,12 @@ impl<BlockHash: Hash, Key: Hash> NonCanonicalOverlay<BlockHash, Key> {
};
if level.blocks.len() >= MAX_BLOCKS_PER_LEVEL as usize {
return Err(StateDbError::TooManySiblingBlocks)
trace!(
target: "state-db",
"Too many sibling blocks at #{number}: {:?}",
level.blocks.iter().map(|b| &b.hash).collect::<Vec<_>>()
);
return Err(StateDbError::TooManySiblingBlocks { number })
}
if level.blocks.iter().any(|b| b.hash == *hash) {
return Err(StateDbError::BlockAlreadyExists)