mirror of
https://github.com/tendermint/tendermint.git
synced 2025-12-23 14:25:19 +00:00
* Added BlockStore.DeleteBlock() * Added initial block pruner prototype * wip * Added BlockStore.PruneBlocks() * Added consensus setting for block pruning * Added BlockStore base * Error on replay if base does not have blocks * Handle missing blocks when sending VoteSetMaj23Message * Error message tweak * Properly update blockstore state * Error message fix again * blockchain: ignore peer missing blocks * Added FIXME * Added test for block replay with truncated history * Handle peer base in blockchain reactor * Improved replay error handling * Added tests for Store.PruneBlocks() * Fix non-RPC handling of truncated block history * Panic on missing block meta in needProofBlock() * Updated changelog * Handle truncated block history in RPC layer * Added info about earliest block in /status RPC * Reorder height and base in blockchain reactor messages * Updated changelog * Fix tests * Appease linter * Minor review fixes * Non-empty BlockStores should always have base > 0 * Update code to assume base > 0 invariant * Added blockstore tests for pruning to 0 * Make sure we don't prune below the current base * Added BlockStore.Size() * config: added retain_blocks recommendations * Update v1 blockchain reactor to handle blockstore base * Added state database pruning * Propagate errors on missing validator sets * Comment tweaks * Improved error message Co-Authored-By: Anton Kaliaev <anton.kalyaev@gmail.com> * use ABCI field ResponseCommit.retain_height instead of retain-blocks config option * remove State.RetainHeight, return value instead * fix minor issues * rename pruneHeights() to pruneBlocks() * noop to fix GitHub borkage Co-authored-by: Anton Kaliaev <anton.kalyaev@gmail.com>
102 lines
2.0 KiB
Go
102 lines
2.0 KiB
Go
package state
|
|
|
|
import "fmt"
|
|
|
|
type (
|
|
ErrInvalidBlock error
|
|
ErrProxyAppConn error
|
|
|
|
ErrUnknownBlock struct {
|
|
Height int64
|
|
}
|
|
|
|
ErrBlockHashMismatch struct {
|
|
CoreHash []byte
|
|
AppHash []byte
|
|
Height int64
|
|
}
|
|
|
|
ErrAppBlockHeightTooHigh struct {
|
|
CoreHeight int64
|
|
AppHeight int64
|
|
}
|
|
|
|
ErrAppBlockHeightTooLow struct {
|
|
AppHeight int64
|
|
StoreBase int64
|
|
}
|
|
|
|
ErrLastStateMismatch struct {
|
|
Height int64
|
|
Core []byte
|
|
App []byte
|
|
}
|
|
|
|
ErrStateMismatch struct {
|
|
Got *State
|
|
Expected *State
|
|
}
|
|
|
|
ErrNoValSetForHeight struct {
|
|
Height int64
|
|
}
|
|
|
|
ErrNoConsensusParamsForHeight struct {
|
|
Height int64
|
|
}
|
|
|
|
ErrNoABCIResponsesForHeight struct {
|
|
Height int64
|
|
}
|
|
)
|
|
|
|
func (e ErrUnknownBlock) Error() string {
|
|
return fmt.Sprintf("could not find block #%d", e.Height)
|
|
}
|
|
|
|
func (e ErrBlockHashMismatch) Error() string {
|
|
return fmt.Sprintf(
|
|
"app block hash (%X) does not match core block hash (%X) for height %d",
|
|
e.AppHash,
|
|
e.CoreHash,
|
|
e.Height,
|
|
)
|
|
}
|
|
|
|
func (e ErrAppBlockHeightTooHigh) Error() string {
|
|
return fmt.Sprintf("app block height (%d) is higher than core (%d)", e.AppHeight, e.CoreHeight)
|
|
}
|
|
|
|
func (e ErrAppBlockHeightTooLow) Error() string {
|
|
return fmt.Sprintf("app block height (%d) is too far below block store base (%d)", e.AppHeight, e.StoreBase)
|
|
}
|
|
|
|
func (e ErrLastStateMismatch) Error() string {
|
|
return fmt.Sprintf(
|
|
"latest tendermint block (%d) LastAppHash (%X) does not match app's AppHash (%X)",
|
|
e.Height,
|
|
e.Core,
|
|
e.App,
|
|
)
|
|
}
|
|
|
|
func (e ErrStateMismatch) Error() string {
|
|
return fmt.Sprintf(
|
|
"state after replay does not match saved state. Got ----\n%v\nExpected ----\n%v\n",
|
|
e.Got,
|
|
e.Expected,
|
|
)
|
|
}
|
|
|
|
func (e ErrNoValSetForHeight) Error() string {
|
|
return fmt.Sprintf("could not find validator set for height #%d", e.Height)
|
|
}
|
|
|
|
func (e ErrNoConsensusParamsForHeight) Error() string {
|
|
return fmt.Sprintf("could not find consensus params for height #%d", e.Height)
|
|
}
|
|
|
|
func (e ErrNoABCIResponsesForHeight) Error() string {
|
|
return fmt.Sprintf("could not find results for height #%d", e.Height)
|
|
}
|