diff --git a/CHANGELOG_PENDING.md b/CHANGELOG_PENDING.md index a1e632678..cd7ac2f2a 100644 --- a/CHANGELOG_PENDING.md +++ b/CHANGELOG_PENDING.md @@ -20,3 +20,4 @@ program](https://hackerone.com/tendermint). ### IMPROVEMENTS: ### BUG FIXES: +- [cs] \#4069 Don't panic when block meta is not found in store (@gregzaitsev) diff --git a/consensus/reactor.go b/consensus/reactor.go index 6d4b61219..4fb510da7 100644 --- a/consensus/reactor.go +++ b/consensus/reactor.go @@ -501,10 +501,12 @@ OUTER_LOOP: if prs.ProposalBlockParts == nil { blockMeta := conR.conS.blockStore.LoadBlockMeta(prs.Height) if blockMeta == nil { - panic(fmt.Sprintf("Failed to load block %d when blockStore is at %d", - prs.Height, conR.conS.blockStore.Height())) + heightLogger.Error("Failed to load block meta", + "blockstoreHeight", conR.conS.blockStore.Height()) + time.Sleep(conR.conS.config.PeerGossipSleepDuration) + } else { + ps.InitProposalBlockParts(blockMeta.BlockID.PartsHeader) } - ps.InitProposalBlockParts(blockMeta.BlockID.PartsHeader) // continue the loop since prs is a copy and not effected by this initialization continue OUTER_LOOP }