From d494952c82e8763ed1ba38e05ae0762aba584f85 Mon Sep 17 00:00:00 2001 From: Greg Szabo <16846635+greg-szabo@users.noreply.github.com> Date: Tue, 7 Jan 2020 03:21:49 -0500 Subject: [PATCH] cs: don't panic when block is not found in store (#4163) (#4287) Fixes #4069 Backport for v0.32.9 cherry-picked from master at ee6601a. Co-authored-by: Greg Zaitsev --- CHANGELOG_PENDING.md | 1 + consensus/reactor.go | 8 +++++--- 2 files changed, 6 insertions(+), 3 deletions(-) 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 }