add block store options to block store constructor

This commit is contained in:
William Banfield
2022-11-28 12:52:59 -05:00
parent 31c88322fb
commit 381244144f
18 changed files with 50 additions and 41 deletions
+1 -1
View File
@@ -76,7 +76,7 @@ func newReactor(
stateStore := sm.NewStore(stateDB, sm.StoreOptions{
DiscardABCIResponses: false,
})
blockStore := store.NewBlockStore(blockDB)
blockStore := store.NewBlockStore(blockDB, store.BlockStoreOptions{})
state, err := stateStore.LoadFromDBOrGenesisDoc(genDoc)
if err != nil {
+1 -1
View File
@@ -78,7 +78,7 @@ func loadStateAndBlockStore(config *cfg.Config) (*store.BlockStore, state.Store,
if err != nil {
return nil, nil, err
}
blockStore := store.NewBlockStore(blockStoreDB)
blockStore := store.NewBlockStore(blockStoreDB, store.BlockStoreOptions{})
if !os.FileExists(filepath.Join(config.DBDir(), "state.db")) {
return nil, nil, fmt.Errorf("no statestore found in %v", config.DBDir())
+1 -1
View File
@@ -63,7 +63,7 @@ func TestByzantinePrevoteEquivocation(t *testing.T) {
app.InitChain(abci.RequestInitChain{Validators: vals})
blockDB := dbm.NewMemDB()
blockStore := store.NewBlockStore(blockDB)
blockStore := store.NewBlockStore(blockDB, store.BlockStoreOptions{})
mtx := new(tmsync.Mutex)
// one for mempool, one for consensus
+1 -1
View File
@@ -392,7 +392,7 @@ func newStateWithConfigAndBlockStore(
blockDB dbm.DB,
) *State {
// Get BlockStore
blockStore := store.NewBlockStore(blockDB)
blockStore := store.NewBlockStore(blockDB, store.BlockStoreOptions{})
// one for mempool, one for consensus
mtx := new(tmsync.Mutex)
+1 -1
View File
@@ -155,7 +155,7 @@ func TestReactorWithEvidence(t *testing.T) {
// css[i] = newStateWithConfig(thisConfig, state, privVals[i], app)
blockDB := dbm.NewMemDB()
blockStore := store.NewBlockStore(blockDB)
blockStore := store.NewBlockStore(blockDB, store.BlockStoreOptions{})
mtx := new(tmsync.Mutex)
memplMetrics := mempl.NopMetrics()
+1 -1
View File
@@ -290,7 +290,7 @@ func newConsensusStateForReplay(config cfg.BaseConfig, csConfig *cfg.ConsensusCo
if err != nil {
tmos.Exit(err.Error())
}
blockStore := store.NewBlockStore(blockStoreDB)
blockStore := store.NewBlockStore(blockStoreDB, store.BlockStoreOptions{})
// Get State
stateDB, err := dbm.NewDB("state", dbType, config.DBDir())
+1 -1
View File
@@ -60,7 +60,7 @@ func WALGenerateNBlocks(t *testing.T, wr io.Writer, numBlocks int) (err error) {
t.Error(err)
}
blockStore := store.NewBlockStore(blockStoreDB)
blockStore := store.NewBlockStore(blockStoreDB, store.BlockStoreOptions{})
proxyApp := proxy.NewAppConns(proxy.NewLocalClientCreator(app), proxy.NopMetrics())
proxyApp.SetLogger(logger.With("module", "proxy"))
+1 -1
View File
@@ -64,7 +64,7 @@ type mockConstructorTestingTNewBlockStore interface {
}
// NewBlockStore creates a new instance of BlockStore. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
func NewBlockStore(t mockConstructorTestingTNewBlockStore) *BlockStore {
func NewBlockStore(t mockConstructorTestingTNewBlockStore, store.BlockStoreOptions{}) *BlockStore {
mock := &BlockStore{}
mock.Mock.Test(t)
+1 -1
View File
@@ -411,7 +411,7 @@ func initializeValidatorState(privVal types.PrivValidator, height int64) sm.Stor
// initializeBlockStore creates a block storage and populates it w/ a dummy
// block at +height+.
func initializeBlockStore(db dbm.DB, state sm.State, valAddr []byte) (*store.BlockStore, error) {
blockStore := store.NewBlockStore(db)
blockStore := store.NewBlockStore(db, store.BlockStoreOptions{})
for i := int64(1); i <= state.LastBlockHeight; i++ {
lastCommit := makeCommit(i-1, valAddr)
+2 -2
View File
@@ -295,7 +295,7 @@ func TestCreateProposalBlock(t *testing.T) {
// Make EvidencePool
evidenceDB := dbm.NewMemDB()
blockStore := store.NewBlockStore(dbm.NewMemDB())
blockStore := store.NewBlockStore(dbm.NewMemDB(), store.BlockStoreOptions{})
evidencePool, err := evidence.NewPool(evidenceDB, stateStore, blockStore)
require.NoError(t, err)
evidencePool.SetLogger(logger)
@@ -402,7 +402,7 @@ func TestMaxProposalBlockSize(t *testing.T) {
)
}
blockStore := store.NewBlockStore(dbm.NewMemDB())
blockStore := store.NewBlockStore(dbm.NewMemDB(), store.BlockStoreOptions{})
// fill the mempool with one txs just below the maximum size
txLength := int(types.MaxDataBytesNoEvidence(maxBytes, 1))
+1 -1
View File
@@ -130,7 +130,7 @@ func initDBs(config *cfg.Config, dbProvider DBProvider) (blockStore *store.Block
if err != nil {
return
}
blockStore = store.NewBlockStore(blockStoreDB)
blockStore = store.NewBlockStore(blockStoreDB, store.BlockStoreOptions{})
stateDB, err = dbProvider(&DBContext{"state", config})
if err != nil {
+10 -10
View File
@@ -50,7 +50,7 @@ func TestApplyBlock(t *testing.T) {
stateStore := sm.NewStore(stateDB, sm.StoreOptions{
DiscardABCIResponses: false,
})
blockStore := store.NewBlockStore(dbm.NewMemDB())
blockStore := store.NewBlockStore(dbm.NewMemDB(), store.BlockStoreOptions{})
mp := &mpmocks.Mempool{}
mp.On("Lock").Return()
@@ -235,7 +235,7 @@ func TestBeginBlockByzantineValidators(t *testing.T) {
mock.Anything,
mock.Anything).Return(nil)
blockStore := store.NewBlockStore(dbm.NewMemDB())
blockStore := store.NewBlockStore(dbm.NewMemDB(), store.BlockStoreOptions{})
blockExec := sm.NewBlockExecutor(stateStore, log.TestingLogger(), proxyApp.Consensus(),
mp, evpool, blockStore)
@@ -273,7 +273,7 @@ func TestProcessProposal(t *testing.T) {
stateStore := sm.NewStore(stateDB, sm.StoreOptions{
DiscardABCIResponses: false,
})
blockStore := store.NewBlockStore(dbm.NewMemDB())
blockStore := store.NewBlockStore(dbm.NewMemDB(), store.BlockStoreOptions{})
eventBus := types.NewEventBus()
err = eventBus.Start()
require.NoError(t, err)
@@ -494,7 +494,7 @@ func TestEndBlockValidatorUpdates(t *testing.T) {
mock.Anything).Return(nil)
mp.On("ReapMaxBytesMaxGas", mock.Anything, mock.Anything).Return(types.Txs{})
blockStore := store.NewBlockStore(dbm.NewMemDB())
blockStore := store.NewBlockStore(dbm.NewMemDB(), store.BlockStoreOptions{})
blockExec := sm.NewBlockExecutor(
stateStore,
log.TestingLogger(),
@@ -570,7 +570,7 @@ func TestEndBlockValidatorUpdatesResultingInEmptySet(t *testing.T) {
stateStore := sm.NewStore(stateDB, sm.StoreOptions{
DiscardABCIResponses: false,
})
blockStore := store.NewBlockStore(dbm.NewMemDB())
blockStore := store.NewBlockStore(dbm.NewMemDB(), store.BlockStoreOptions{})
blockExec := sm.NewBlockExecutor(
stateStore,
log.TestingLogger(),
@@ -624,7 +624,7 @@ func TestEmptyPrepareProposal(t *testing.T) {
mock.Anything).Return(nil)
mp.On("ReapMaxBytesMaxGas", mock.Anything, mock.Anything).Return(types.Txs{})
blockStore := store.NewBlockStore(dbm.NewMemDB())
blockStore := store.NewBlockStore(dbm.NewMemDB(), store.BlockStoreOptions{})
blockExec := sm.NewBlockExecutor(
stateStore,
log.TestingLogger(),
@@ -667,7 +667,7 @@ func TestPrepareProposalTxsAllIncluded(t *testing.T) {
require.NoError(t, err)
defer proxyApp.Stop() //nolint:errcheck // ignore for tests
blockStore := store.NewBlockStore(dbm.NewMemDB())
blockStore := store.NewBlockStore(dbm.NewMemDB(), store.BlockStoreOptions{})
blockExec := sm.NewBlockExecutor(
stateStore,
log.TestingLogger(),
@@ -720,7 +720,7 @@ func TestPrepareProposalReorderTxs(t *testing.T) {
require.NoError(t, err)
defer proxyApp.Stop() //nolint:errcheck // ignore for tests
blockStore := store.NewBlockStore(dbm.NewMemDB())
blockStore := store.NewBlockStore(dbm.NewMemDB(), store.BlockStoreOptions{})
blockExec := sm.NewBlockExecutor(
stateStore,
log.TestingLogger(),
@@ -775,7 +775,7 @@ func TestPrepareProposalErrorOnTooManyTxs(t *testing.T) {
require.NoError(t, err)
defer proxyApp.Stop() //nolint:errcheck // ignore for tests
blockStore := store.NewBlockStore(dbm.NewMemDB())
blockStore := store.NewBlockStore(dbm.NewMemDB(), store.BlockStoreOptions{})
blockExec := sm.NewBlockExecutor(
stateStore,
log.NewNopLogger(),
@@ -825,7 +825,7 @@ func TestPrepareProposalErrorOnPrepareProposalError(t *testing.T) {
require.NoError(t, err)
defer proxyApp.Stop() //nolint:errcheck // ignore for tests
blockStore := store.NewBlockStore(dbm.NewMemDB())
blockStore := store.NewBlockStore(dbm.NewMemDB(), store.BlockStoreOptions{})
blockExec := sm.NewBlockExecutor(
stateStore,
log.NewNopLogger(),
+1 -1
View File
@@ -237,7 +237,7 @@ type mockConstructorTestingTNewBlockStore interface {
}
// NewBlockStore creates a new instance of BlockStore. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
func NewBlockStore(t mockConstructorTestingTNewBlockStore) *BlockStore {
func NewBlockStore(t mockConstructorTestingTNewBlockStore, store.BlockStoreOptions{}) *BlockStore {
mock := &BlockStore{}
mock.Mock.Test(t)
+1 -1
View File
@@ -87,7 +87,7 @@ func TestRollback(t *testing.T) {
func TestRollbackHard(t *testing.T) {
const height int64 = 100
blockStore := store.NewBlockStore(dbm.NewMemDB())
blockStore := store.NewBlockStore(dbm.NewMemDB(), store.BlockStoreOptions{})
stateStore := state.NewStore(dbm.NewMemDB(), state.StoreOptions{DiscardABCIResponses: false})
valSet, _ := types.RandValidatorSet(5, 10)
+3 -3
View File
@@ -47,7 +47,7 @@ func TestValidateBlockHeader(t *testing.T) {
mock.Anything,
mock.Anything).Return(nil)
blockStore := store.NewBlockStore(dbm.NewMemDB())
blockStore := store.NewBlockStore(dbm.NewMemDB(), store.BlockStoreOptions{})
blockExec := sm.NewBlockExecutor(
stateStore,
@@ -135,7 +135,7 @@ func TestValidateBlockCommit(t *testing.T) {
mock.Anything,
mock.Anything).Return(nil)
blockStore := store.NewBlockStore(dbm.NewMemDB())
blockStore := store.NewBlockStore(dbm.NewMemDB(), store.BlockStoreOptions{})
blockExec := sm.NewBlockExecutor(
stateStore,
@@ -277,7 +277,7 @@ func TestValidateBlockEvidence(t *testing.T) {
mock.Anything,
mock.Anything).Return(nil)
state.ConsensusParams.Evidence.MaxBytes = 1000
blockStore := store.NewBlockStore(dbm.NewMemDB())
blockStore := store.NewBlockStore(dbm.NewMemDB(), store.BlockStoreOptions{})
blockExec := sm.NewBlockExecutor(
stateStore,
+13 -4
View File
@@ -47,14 +47,23 @@ type BlockStore struct {
height int64
}
type BlockStoreOptions struct {
Metrics *Metrics
}
// NewBlockStore returns a new BlockStore with the given DB,
// initialized to the last height that was committed to the DB.
func NewBlockStore(db dbm.DB) *BlockStore {
func NewBlockStore(db dbm.DB, o BlockStoreOptions) *BlockStore {
bs := LoadBlockStoreState(db)
m := NopMetrics()
if o.Metrics != nil {
m = o.Metrics
}
return &BlockStore{
base: bs.Base,
height: bs.Height,
db: db,
metrics: m,
base: bs.Base,
height: bs.Height,
db: db,
}
}
+9 -9
View File
@@ -56,7 +56,7 @@ func makeStateAndBlockStore(logger log.Logger) (sm.State, *BlockStore, cleanupFu
if err != nil {
panic(fmt.Errorf("error constructing state from genesis file: %w", err))
}
return state, NewBlockStore(blockDB), func() { os.RemoveAll(config.RootDir) }
return state, NewBlockStore(blockDB, store.BlockStoreOptions{}) , func() { os.RemoveAll(config.RootDir) }
}
func TestLoadBlockStoreState(t *testing.T) {
@@ -82,13 +82,13 @@ func TestLoadBlockStoreState(t *testing.T) {
}
}
func TestNewBlockStore(t *testing.T) {
func TestNewBlockStore(t *testing.T, store.BlockStoreOptions{}) {
db := dbm.NewMemDB()
bss := tmstore.BlockStoreState{Base: 100, Height: 10000}
bz, _ := proto.Marshal(&bss)
err := db.Set(blockStoreKey, bz)
require.NoError(t, err)
bs := NewBlockStore(db)
bs := NewBlockStore(db, store.BlockStoreOptions{})
require.Equal(t, int64(100), bs.Base(), "failed to properly parse blockstore")
require.Equal(t, int64(10000), bs.Height(), "failed to properly parse blockstore")
@@ -106,7 +106,7 @@ func TestNewBlockStore(t *testing.T) {
_, _, panicErr := doFn(func() (interface{}, error) {
err := db.Set(blockStoreKey, tt.data)
require.NoError(t, err)
_ = NewBlockStore(db)
_ = NewBlockStore(db, store.BlockStoreOptions{})
return nil, nil
})
require.NotNil(t, panicErr, "#%d panicCauser: %q expected a panic", i, tt.data)
@@ -115,13 +115,13 @@ func TestNewBlockStore(t *testing.T) {
err = db.Set(blockStoreKey, []byte{})
require.NoError(t, err)
bs = NewBlockStore(db)
bs = NewBlockStore(db, store.BlockStoreOptions{})
assert.Equal(t, bs.Height(), int64(0), "expecting empty bytes to be unmarshaled alright")
}
func freshBlockStore() (*BlockStore, dbm.DB) {
db := dbm.NewMemDB()
return NewBlockStore(db), db
return NewBlockStore(db, store.BlockStoreOptions{}) , db
}
var (
@@ -371,7 +371,7 @@ func TestLoadBaseMeta(t *testing.T) {
})
state, err := stateStore.LoadFromDBOrGenesisFile(config.GenesisFile())
require.NoError(t, err)
bs := NewBlockStore(dbm.NewMemDB())
bs := NewBlockStore(dbm.NewMemDB(), store.BlockStoreOptions{})
for h := int64(1); h <= 10; h++ {
block := state.MakeBlock(h, test.MakeNTxs(h, 10), new(types.Commit), nil, state.Validators.GetProposer().Address)
@@ -434,7 +434,7 @@ func TestPruneBlocks(t *testing.T) {
state, err := stateStore.LoadFromDBOrGenesisFile(config.GenesisFile())
require.NoError(t, err)
db := dbm.NewMemDB()
bs := NewBlockStore(db)
bs := NewBlockStore(db, store.BlockStoreOptions{})
assert.EqualValues(t, 0, bs.Base())
assert.EqualValues(t, 0, bs.Height())
assert.EqualValues(t, 0, bs.Size())
@@ -573,7 +573,7 @@ func TestLoadBlockMetaByHash(t *testing.T) {
})
state, err := stateStore.LoadFromDBOrGenesisFile(config.GenesisFile())
require.NoError(t, err)
bs := NewBlockStore(dbm.NewMemDB())
bs := NewBlockStore(dbm.NewMemDB(), store.BlockStoreOptions{})
b1 := state.MakeBlock(state.LastBlockHeight+1, test.MakeNTxs(state.LastBlockHeight+1, 10), new(types.Commit), nil, state.Validators.GetProposer().Address)
partSet, err := b1.MakePartSet(2)
+1 -1
View File
@@ -46,7 +46,7 @@ func main() {
if err != nil {
panic(err)
}
s := store.NewBlockStore(db)
s := store.NewBlockStore(db, store.BlockStoreOptions{})
defer s.Close()
rs, err := report.GenerateFromBlockStore(s)
if err != nil {