diff --git a/substrate/client/state-db/src/lib.rs b/substrate/client/state-db/src/lib.rs index 5e01a0e063..961f641a1a 100644 --- a/substrate/client/state-db/src/lib.rs +++ b/substrate/client/state-db/src/lib.rs @@ -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 => diff --git a/substrate/client/state-db/src/noncanonical.rs b/substrate/client/state-db/src/noncanonical.rs index 84ba94c052..b7eec8ab60 100644 --- a/substrate/client/state-db/src/noncanonical.rs +++ b/substrate/client/state-db/src/noncanonical.rs @@ -283,7 +283,12 @@ impl NonCanonicalOverlay { }; 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::>() + ); + return Err(StateDbError::TooManySiblingBlocks { number }) } if level.blocks.iter().any(|b| b.hash == *hash) { return Err(StateDbError::BlockAlreadyExists)