diff --git a/internal/store/store.go b/internal/store/store.go index beec1ac2f..9f47dfbe7 100644 --- a/internal/store/store.go +++ b/internal/store/store.go @@ -465,85 +465,6 @@ func (bs *BlockStore) batchDelete( return pruned, end, iter.Error() } -// SaveBlock persists the given block, blockParts, and seenCommit to the underlying db. -// blockParts: Must be parts of the block -// seenCommit: The +2/3 precommits that were seen which committed at height. -// If all the nodes restart after committing a block, -// we need this to reload the precommits to catch-up nodes to the -// most recent height. Otherwise they'd stall at H-1. -func (bs *BlockStore) SaveBlockWithExtensions(block *types.Block, blockParts *types.PartSet, seenCommit *types.ExtendedCommit) { - if block == nil { - panic("BlockStore can only save a non-nil block") - } - - batch := bs.db.NewBatch() - - height := block.Height - hash := block.Hash() - - if g, w := height, bs.Height()+1; bs.Base() > 0 && g != w { - panic(fmt.Sprintf("BlockStore can only save contiguous blocks. Wanted %v, got %v", w, g)) - } - if !blockParts.IsComplete() { - panic("BlockStore can only save complete block part sets") - } - if height != seenCommit.Height { - panic(fmt.Sprintf("BlockStore cannot save seen commit of a different height (block: %d, commit: %d)", - height, seenCommit.Height)) - } - - // Save block parts. This must be done before the block meta, since callers - // typically load the block meta first as an indication that the block exists - // and then go on to load block parts - we must make sure the block is - // complete as soon as the block meta is written. - for i := 0; i < int(blockParts.Total()); i++ { - part := blockParts.GetPart(i) - bs.saveBlockPart(height, i, part, batch) - } - - blockMeta := types.NewBlockMeta(block, blockParts) - pbm := blockMeta.ToProto() - if pbm == nil { - panic("nil blockmeta") - } - - metaBytes := mustEncode(pbm) - if err := batch.Set(blockMetaKey(height), metaBytes); err != nil { - panic(err) - } - - if err := batch.Set(blockHashKey(hash), []byte(fmt.Sprintf("%d", height))); err != nil { - panic(err) - } - - pbc := block.LastCommit.ToProto() - blockCommitBytes := mustEncode(pbc) - if err := batch.Set(blockCommitKey(height-1), blockCommitBytes); err != nil { - panic(err) - } - - // Save seen commit (seen +2/3 precommits for block) - pbsc := seenCommit.ToCommit().ToProto() - seenCommitBytes := mustEncode(pbsc) - if err := batch.Set(seenCommitKey(), seenCommitBytes); err != nil { - panic(err) - } - - pbec := seenCommit.ToProto() - extCommitBytes := mustEncode(pbec) - if err := batch.Set(extCommitKey(height), extCommitBytes); err != nil { - panic(err) - } - - if err := batch.WriteSync(); err != nil { - panic(err) - } - - if err := batch.Close(); err != nil { - panic(err) - } -} - // SaveBlock persists the given block, blockParts, and seenCommit to the underlying db. // blockParts: Must be parts of the block // seenCommit: The +2/3 precommits that were seen which committed at height.