diff --git a/abci/example/kvstore/kvstore.go b/abci/example/kvstore/kvstore.go index 43928ffa8..f80a4fd66 100644 --- a/abci/example/kvstore/kvstore.go +++ b/abci/example/kvstore/kvstore.go @@ -61,7 +61,7 @@ func NewPersistentApplication(dbDir string) *Application { name := "kvstore" db, err := dbm.NewGoLevelDB(name, dbDir) if err != nil { - panic(err) + panic(fmt.Errorf("failed to create persistent app at %s: %w", dbDir, err)) } return NewApplication(db) } diff --git a/blocksync/reactor_test.go b/blocksync/reactor_test.go index c845b066c..10c7105cf 100644 --- a/blocksync/reactor_test.go +++ b/blocksync/reactor_test.go @@ -74,7 +74,7 @@ func newReactor( blockDB := dbm.NewMemDB() stateDB := dbm.NewMemDB() stateStore := sm.NewStore(stateDB, sm.StoreOptions{ - DiscardFinalizeBlockResponses: false, + DiscardABCIResponses: false, }) blockStore := store.NewBlockStore(blockDB) @@ -101,7 +101,7 @@ func newReactor( fastSync := true db := dbm.NewMemDB() stateStore = sm.NewStore(db, sm.StoreOptions{ - DiscardFinalizeBlockResponses: false, + DiscardABCIResponses: false, }) blockExec := sm.NewBlockExecutor(stateStore, log.TestingLogger(), proxyApp.Consensus(), mp, sm.EmptyEvidencePool{}, blockStore) diff --git a/config/config.go b/config/config.go index cc2491f84..c1ad2e229 100644 --- a/config/config.go +++ b/config/config.go @@ -1120,14 +1120,14 @@ type StorageConfig struct { // Set to false to ensure ABCI responses are persisted. ABCI responses are // required for `/block_results` RPC queries, and to reindex events in the // command-line tool. - DiscardFinalizeBlockResponses bool `mapstructure:"discard_abci_responses"` + DiscardABCIResponses bool `mapstructure:"discard_abci_responses"` } // DefaultStorageConfig returns the default configuration options relating to // Tendermint storage optimization. func DefaultStorageConfig() *StorageConfig { return &StorageConfig{ - DiscardFinalizeBlockResponses: false, + DiscardABCIResponses: false, } } @@ -1135,7 +1135,7 @@ func DefaultStorageConfig() *StorageConfig { // testing. func TestStorageConfig() *StorageConfig { return &StorageConfig{ - DiscardFinalizeBlockResponses: false, + DiscardABCIResponses: false, } } diff --git a/config/toml.go b/config/toml.go index a5550ff63..6041b92c3 100644 --- a/config/toml.go +++ b/config/toml.go @@ -514,7 +514,7 @@ peer_query_maj23_sleep_duration = "{{ .Consensus.PeerQueryMaj23SleepDuration }}" # considerable amount of disk space. Set to false to ensure ABCI responses are # persisted. ABCI responses are required for /block_results RPC queries, and to # reindex events in the command-line tool. -discard_abci_responses = {{ .Storage.DiscardFinalizeBlockResponses}} +discard_abci_responses = {{ .Storage.DiscardABCIResponses}} ####################################################### ### Transaction Indexer Configuration Options ### diff --git a/consensus/byzantine_test.go b/consensus/byzantine_test.go index d86ab3cba..a1cb43949 100644 --- a/consensus/byzantine_test.go +++ b/consensus/byzantine_test.go @@ -53,7 +53,7 @@ func TestByzantinePrevoteEquivocation(t *testing.T) { logger := consensusLogger().With("test", "byzantine", "validator", i) stateDB := dbm.NewMemDB() // each state needs its own db stateStore := sm.NewStore(stateDB, sm.StoreOptions{ - DiscardFinalizeBlockResponses: false, + DiscardABCIResponses: false, }) state, _ := stateStore.LoadFromDBOrGenesisDoc(genDoc) thisConfig := ResetConfig(fmt.Sprintf("%s_%d", testName, i)) diff --git a/consensus/common_test.go b/consensus/common_test.go index e95df8e8c..2144bd556 100644 --- a/consensus/common_test.go +++ b/consensus/common_test.go @@ -434,7 +434,7 @@ func newStateWithConfigAndBlockStore( // Make State stateDB := blockDB stateStore := sm.NewStore(stateDB, sm.StoreOptions{ - DiscardFinalizeBlockResponses: false, + DiscardABCIResponses: false, }) if err := stateStore.Save(state); err != nil { // for save height 1's validators info @@ -759,7 +759,7 @@ func randConsensusNet(t *testing.T, nValidators int, testName string, tickerFunc for i := 0; i < nValidators; i++ { stateDB := dbm.NewMemDB() // each state needs its own db stateStore := sm.NewStore(stateDB, sm.StoreOptions{ - DiscardFinalizeBlockResponses: false, + DiscardABCIResponses: false, }) state, _ := stateStore.LoadFromDBOrGenesisDoc(genDoc) thisConfig := ResetConfig(fmt.Sprintf("%s_%d", testName, i)) @@ -801,7 +801,7 @@ func randConsensusNetWithPeers( for i := 0; i < nPeers; i++ { stateDB := dbm.NewMemDB() // each state needs its own db stateStore := sm.NewStore(stateDB, sm.StoreOptions{ - DiscardFinalizeBlockResponses: false, + DiscardABCIResponses: false, }) t.Cleanup(func() { _ = stateStore.Close() }) state, _ := stateStore.LoadFromDBOrGenesisDoc(genDoc) diff --git a/consensus/mempool_test.go b/consensus/mempool_test.go index ca40d65f3..a729e5b2d 100644 --- a/consensus/mempool_test.go +++ b/consensus/mempool_test.go @@ -118,7 +118,7 @@ func deliverTxsRange(t *testing.T, cs *State, start, end int) { func TestMempoolTxConcurrentWithCommit(t *testing.T) { state, privVals := randGenesisState(1, false, 10) blockDB := dbm.NewMemDB() - stateStore := sm.NewStore(blockDB, sm.StoreOptions{DiscardFinalizeBlockResponses: false}) + stateStore := sm.NewStore(blockDB, sm.StoreOptions{DiscardABCIResponses: false}) cs := newStateWithConfigAndBlockStore(config, state, privVals[0], kvstore.NewInMemoryApplication(), blockDB) err := stateStore.Save(state) require.NoError(t, err) @@ -143,7 +143,7 @@ func TestMempoolRmBadTx(t *testing.T) { state, privVals := randGenesisState(1, false, 10) app := kvstore.NewInMemoryApplication() blockDB := dbm.NewMemDB() - stateStore := sm.NewStore(blockDB, sm.StoreOptions{DiscardFinalizeBlockResponses: false}) + stateStore := sm.NewStore(blockDB, sm.StoreOptions{DiscardABCIResponses: false}) cs := newStateWithConfigAndBlockStore(config, state, privVals[0], app, blockDB) err := stateStore.Save(state) require.NoError(t, err) diff --git a/consensus/reactor_test.go b/consensus/reactor_test.go index 47befb3e9..1f52df754 100644 --- a/consensus/reactor_test.go +++ b/consensus/reactor_test.go @@ -139,7 +139,7 @@ func TestReactorWithEvidence(t *testing.T) { for i := 0; i < nValidators; i++ { stateDB := dbm.NewMemDB() // each state needs its own db stateStore := sm.NewStore(stateDB, sm.StoreOptions{ - DiscardFinalizeBlockResponses: false, + DiscardABCIResponses: false, }) state, _ := stateStore.LoadFromDBOrGenesisDoc(genDoc) thisConfig := ResetConfig(fmt.Sprintf("%s_%d", testName, i)) diff --git a/consensus/replay_file.go b/consensus/replay_file.go index 905f363a0..c342c32bd 100644 --- a/consensus/replay_file.go +++ b/consensus/replay_file.go @@ -298,7 +298,7 @@ func newConsensusStateForReplay(config cfg.BaseConfig, csConfig *cfg.ConsensusCo tmos.Exit(err.Error()) } stateStore := sm.NewStore(stateDB, sm.StoreOptions{ - DiscardFinalizeBlockResponses: false, + DiscardABCIResponses: false, }) gdoc, err := sm.MakeGenesisDocFromFile(config.GenesisFile()) if err != nil { diff --git a/consensus/replay_test.go b/consensus/replay_test.go index 3ebff40fe..72c87e743 100644 --- a/consensus/replay_test.go +++ b/consensus/replay_test.go @@ -8,6 +8,7 @@ import ( "os" "path/filepath" "runtime" + "sort" "testing" "time" @@ -22,6 +23,7 @@ import ( "github.com/tendermint/tendermint/abci/types/mocks" cfg "github.com/tendermint/tendermint/config" "github.com/tendermint/tendermint/crypto" + cryptoenc "github.com/tendermint/tendermint/crypto/encoding" "github.com/tendermint/tendermint/internal/test" "github.com/tendermint/tendermint/libs/log" tmrand "github.com/tendermint/tendermint/libs/rand" @@ -163,7 +165,7 @@ LOOP: blockDB := dbm.NewMemDB() stateDB := blockDB stateStore := sm.NewStore(stateDB, sm.StoreOptions{ - DiscardFinalizeBlockResponses: false, + DiscardABCIResponses: false, }) state, err := sm.MakeGenesisStateFromFile(consensusReplayConfig.GenesisFile()) require.NoError(t, err) @@ -308,31 +310,272 @@ const numBlocks = 6 // 3 - save block and committed with truncated block store and state behind var modes = []uint{0, 1, 2, 3} +// This is actually not a test, it's for storing validator change tx data for testHandshakeReplay +func setupChainWithChangingValidators(t *testing.T, name string) (*cfg.Config, []*types.Block, []*types.Commit, sm.State) { + nPeers := 7 + nVals := 4 + css, genDoc, config, cleanup := randConsensusNetWithPeers( + t, + nVals, + nPeers, + name, + newMockTickerFunc(true), + newPersistentKVStoreWithPath) + genesisState, err := sm.MakeGenesisState(genDoc) + require.NoError(t, err) + t.Cleanup(cleanup) + + partSize := types.BlockPartSizeBytes + + newRoundCh := subscribe(css[0].eventBus, types.EventQueryNewRound) + proposalCh := subscribe(css[0].eventBus, types.EventQueryCompleteProposal) + + vss := make([]*validatorStub, nPeers) + for i := 0; i < nPeers; i++ { + vss[i] = newValidatorStub(css[i].privValidator, int32(i)) + } + height, round := css[0].Height, css[0].Round + + // start the machine + startTestRound(css[0], height, round) + incrementHeight(vss...) + ensureNewRound(newRoundCh, height, 0) + ensureNewProposal(proposalCh, height, round) + rs := css[0].GetRoundState() + signAddVotes(css[0], tmproto.PrecommitType, rs.ProposalBlock.Hash(), rs.ProposalBlockParts.Header(), vss[1:nVals]...) + ensureNewRound(newRoundCh, height+1, 0) + + // HEIGHT 2 + height++ + incrementHeight(vss...) + newValidatorPubKey1, err := css[nVals].privValidator.GetPubKey() + require.NoError(t, err) + valPubKey1ABCI, err := cryptoenc.PubKeyToProto(newValidatorPubKey1) + require.NoError(t, err) + newValidatorTx1 := kvstore.MakeValSetChangeTx(valPubKey1ABCI, testMinPower) + err = assertMempool(css[0].txNotifier).CheckTx(newValidatorTx1, nil, mempool.TxInfo{}) + assert.NoError(t, err) + propBlock, err := css[0].createProposalBlock() // changeProposer(t, cs1, vs2) + require.NoError(t, err) + propBlockParts, err := propBlock.MakePartSet(partSize) + require.NoError(t, err) + blockID := types.BlockID{Hash: propBlock.Hash(), PartSetHeader: propBlockParts.Header()} + + proposal := types.NewProposal(vss[1].Height, round, -1, blockID) + p := proposal.ToProto() + if err := vss[1].SignProposal(test.DefaultTestChainID, p); err != nil { + t.Fatal("failed to sign bad proposal", err) + } + proposal.Signature = p.Signature + + // set the proposal block + if err := css[0].SetProposalAndBlock(proposal, propBlock, propBlockParts, "some peer"); err != nil { + t.Fatal(err) + } + ensureNewProposal(proposalCh, height, round) + rs = css[0].GetRoundState() + signAddVotes(css[0], tmproto.PrecommitType, rs.ProposalBlock.Hash(), rs.ProposalBlockParts.Header(), vss[1:nVals]...) + ensureNewRound(newRoundCh, height+1, 0) + + // HEIGHT 3 + height++ + incrementHeight(vss...) + updateValidatorPubKey1, err := css[nVals].privValidator.GetPubKey() + require.NoError(t, err) + updatePubKey1ABCI, err := cryptoenc.PubKeyToProto(updateValidatorPubKey1) + require.NoError(t, err) + updateValidatorTx1 := kvstore.MakeValSetChangeTx(updatePubKey1ABCI, 25) + err = assertMempool(css[0].txNotifier).CheckTx(updateValidatorTx1, nil, mempool.TxInfo{}) + assert.NoError(t, err) + propBlock, err = css[0].createProposalBlock() // changeProposer(t, cs1, vs2) + require.NoError(t, err) + propBlockParts, err = propBlock.MakePartSet(partSize) + require.NoError(t, err) + blockID = types.BlockID{Hash: propBlock.Hash(), PartSetHeader: propBlockParts.Header()} + + proposal = types.NewProposal(vss[2].Height, round, -1, blockID) + p = proposal.ToProto() + if err := vss[2].SignProposal(test.DefaultTestChainID, p); err != nil { + t.Fatal("failed to sign bad proposal", err) + } + proposal.Signature = p.Signature + + // set the proposal block + if err := css[0].SetProposalAndBlock(proposal, propBlock, propBlockParts, "some peer"); err != nil { + t.Fatal(err) + } + ensureNewProposal(proposalCh, height, round) + rs = css[0].GetRoundState() + signAddVotes(css[0], tmproto.PrecommitType, rs.ProposalBlock.Hash(), rs.ProposalBlockParts.Header(), vss[1:nVals]...) + ensureNewRound(newRoundCh, height+1, 0) + + // HEIGHT 4 + height++ + incrementHeight(vss...) + newValidatorPubKey2, err := css[nVals+1].privValidator.GetPubKey() + require.NoError(t, err) + newVal2ABCI, err := cryptoenc.PubKeyToProto(newValidatorPubKey2) + require.NoError(t, err) + newValidatorTx2 := kvstore.MakeValSetChangeTx(newVal2ABCI, testMinPower) + err = assertMempool(css[0].txNotifier).CheckTx(newValidatorTx2, nil, mempool.TxInfo{}) + assert.Nil(t, err) + newValidatorPubKey3, err := css[nVals+2].privValidator.GetPubKey() + require.NoError(t, err) + newVal3ABCI, err := cryptoenc.PubKeyToProto(newValidatorPubKey3) + require.NoError(t, err) + newValidatorTx3 := kvstore.MakeValSetChangeTx(newVal3ABCI, testMinPower) + err = assertMempool(css[0].txNotifier).CheckTx(newValidatorTx3, nil, mempool.TxInfo{}) + assert.NoError(t, err) + propBlock, err = css[0].createProposalBlock() // changeProposer(t, cs1, vs2) + require.NoError(t, err) + propBlockParts, err = propBlock.MakePartSet(partSize) + require.NoError(t, err) + blockID = types.BlockID{Hash: propBlock.Hash(), PartSetHeader: propBlockParts.Header()} + newVss := make([]*validatorStub, nVals+1) + copy(newVss, vss[:nVals+1]) + sort.Sort(ValidatorStubsByPower(newVss)) + + valIndexFn := func(cssIdx int) int { + for i, vs := range newVss { + vsPubKey, err := vs.GetPubKey() + require.NoError(t, err) + + cssPubKey, err := css[cssIdx].privValidator.GetPubKey() + require.NoError(t, err) + + if vsPubKey.Equals(cssPubKey) { + return i + } + } + panic(fmt.Sprintf("validator css[%d] not found in newVss", cssIdx)) + } + + selfIndex := valIndexFn(0) + + proposal = types.NewProposal(vss[3].Height, round, -1, blockID) + p = proposal.ToProto() + if err := vss[3].SignProposal(test.DefaultTestChainID, p); err != nil { + t.Fatal("failed to sign bad proposal", err) + } + proposal.Signature = p.Signature + + // set the proposal block + if err := css[0].SetProposalAndBlock(proposal, propBlock, propBlockParts, "some peer"); err != nil { + t.Fatal(err) + } + ensureNewProposal(proposalCh, height, round) + + removeValidatorTx2 := kvstore.MakeValSetChangeTx(newVal2ABCI, 0) + err = assertMempool(css[0].txNotifier).CheckTx(removeValidatorTx2, nil, mempool.TxInfo{}) + assert.Nil(t, err) + + rs = css[0].GetRoundState() + for i := 0; i < nVals+1; i++ { + if i == selfIndex { + continue + } + signAddVotes(css[0], tmproto.PrecommitType, rs.ProposalBlock.Hash(), rs.ProposalBlockParts.Header(), newVss[i]) + } + + ensureNewRound(newRoundCh, height+1, 0) + + // HEIGHT 5 + height++ + incrementHeight(vss...) + // Reflect the changes to vss[nVals] at height 3 and resort newVss. + newVssIdx := valIndexFn(nVals) + newVss[newVssIdx].VotingPower = 25 + sort.Sort(ValidatorStubsByPower(newVss)) + selfIndex = valIndexFn(0) + ensureNewProposal(proposalCh, height, round) + rs = css[0].GetRoundState() + for i := 0; i < nVals+1; i++ { + if i == selfIndex { + continue + } + signAddVotes(css[0], tmproto.PrecommitType, rs.ProposalBlock.Hash(), rs.ProposalBlockParts.Header(), newVss[i]) + } + ensureNewRound(newRoundCh, height+1, 0) + + // HEIGHT 6 + height++ + incrementHeight(vss...) + removeValidatorTx3 := kvstore.MakeValSetChangeTx(newVal3ABCI, 0) + err = assertMempool(css[0].txNotifier).CheckTx(removeValidatorTx3, nil, mempool.TxInfo{}) + assert.NoError(t, err) + propBlock, err = css[0].createProposalBlock() // changeProposer(t, cs1, vs2) + require.NoError(t, err) + propBlockParts, err = propBlock.MakePartSet(partSize) + require.NoError(t, err) + blockID = types.BlockID{Hash: propBlock.Hash(), PartSetHeader: propBlockParts.Header()} + newVss = make([]*validatorStub, nVals+3) + copy(newVss, vss[:nVals+3]) + sort.Sort(ValidatorStubsByPower(newVss)) + + selfIndex = valIndexFn(0) + proposal = types.NewProposal(vss[1].Height, round, -1, blockID) + p = proposal.ToProto() + if err := vss[1].SignProposal(test.DefaultTestChainID, p); err != nil { + t.Fatal("failed to sign bad proposal", err) + } + proposal.Signature = p.Signature + + // set the proposal block + if err := css[0].SetProposalAndBlock(proposal, propBlock, propBlockParts, "some peer"); err != nil { + t.Fatal(err) + } + ensureNewProposal(proposalCh, height, round) + rs = css[0].GetRoundState() + for i := 0; i < nVals+3; i++ { + if i == selfIndex { + continue + } + signAddVotes(css[0], tmproto.PrecommitType, rs.ProposalBlock.Hash(), rs.ProposalBlockParts.Header(), newVss[i]) + } + ensureNewRound(newRoundCh, height+1, 0) + + chain := make([]*types.Block, 0) + commits := make([]*types.Commit, 0) + for i := 1; i <= numBlocks; i++ { + chain = append(chain, css[0].blockStore.LoadBlock(int64(i))) + commits = append(commits, css[0].blockStore.LoadBlockCommit(int64(i))) + } + return config, chain, commits, genesisState +} + // Sync from scratch func TestHandshakeReplayAll(t *testing.T) { for _, m := range modes { - testHandshakeReplay(t, config, 0, m) + t.Run(fmt.Sprintf("mode_%d_single", m), func(t *testing.T) { + testHandshakeReplay(t, config, 0, m, false) + }) + t.Run(fmt.Sprintf("mode_%d_multi", m), func(t *testing.T) { + testHandshakeReplay(t, config, 0, m, false) + }) } } // Sync many, not from scratch func TestHandshakeReplaySome(t *testing.T) { for _, m := range modes { - testHandshakeReplay(t, config, 2, m) + testHandshakeReplay(t, config, 2, m, false) + testHandshakeReplay(t, config, 2, m, true) } } // Sync from lagging by one func TestHandshakeReplayOne(t *testing.T) { for _, m := range modes { - testHandshakeReplay(t, config, numBlocks-1, m) + testHandshakeReplay(t, config, numBlocks-1, m, false) + testHandshakeReplay(t, config, numBlocks-1, m, true) } } // Sync from caught up func TestHandshakeReplayNone(t *testing.T) { for _, m := range modes { - testHandshakeReplay(t, config, numBlocks, m) + testHandshakeReplay(t, config, numBlocks, m, false) + testHandshakeReplay(t, config, numBlocks, m, true) } } @@ -353,8 +596,9 @@ func tempWALWithData(data []byte) string { // Make some blocks. Start a fresh app and apply nBlocks blocks. // Then restart the app and sync it up with the remaining blocks -func testHandshakeReplay(t *testing.T, config *cfg.Config, nBlocks int, mode uint) { +func testHandshakeReplay(t *testing.T, config *cfg.Config, nBlocks int, mode uint, testValidatorsChange bool) { var ( + testConfig *cfg.Config chain []*types.Block commits []*types.Commit store *mockBlockStore @@ -364,35 +608,40 @@ func testHandshakeReplay(t *testing.T, config *cfg.Config, nBlocks int, mode uin evpool = sm.EmptyEvidencePool{} ) - testConfig := ResetConfig(fmt.Sprintf("%d_%d_s", nBlocks, mode)) - t.Cleanup(func() { - _ = os.RemoveAll(testConfig.RootDir) - }) - walBody, err := WALWithNBlocks(t, numBlocks) - require.NoError(t, err) - walFile := tempWALWithData(walBody) - config.Consensus.SetWalFile(walFile) + if testValidatorsChange { + testConfig, chain, commits, genesisState = setupChainWithChangingValidators(t, fmt.Sprintf("%d_%d_m", nBlocks, mode)) + store = newMockBlockStore(t, config, genesisState.ConsensusParams) + } else { + testConfig = ResetConfig(fmt.Sprintf("%d_%d_s", nBlocks, mode)) + t.Cleanup(func() { + _ = os.RemoveAll(testConfig.RootDir) + }) + walBody, err := WALWithNBlocks(t, numBlocks, testConfig) + require.NoError(t, err) + walFile := tempWALWithData(walBody) + config.Consensus.SetWalFile(walFile) - privVal := privval.LoadFilePV(config.PrivValidatorKeyFile(), config.PrivValidatorStateFile()) + privVal := privval.LoadFilePV(config.PrivValidatorKeyFile(), config.PrivValidatorStateFile()) - wal, err := NewWAL(walFile) - require.NoError(t, err) - wal.SetLogger(log.TestingLogger()) - err = wal.Start() - require.NoError(t, err) - t.Cleanup(func() { - if err := wal.Stop(); err != nil { - t.Error(err) - } - }) - chain, commits, err = makeBlockchainFromWAL(wal) - require.NoError(t, err) - pubKey, err := privVal.GetPubKey() - require.NoError(t, err) - stateDB, genesisState, store = stateAndStore(t, config, pubKey, kvstore.AppVersion) + wal, err := NewWAL(walFile) + require.NoError(t, err) + wal.SetLogger(log.TestingLogger()) + err = wal.Start() + require.NoError(t, err) + t.Cleanup(func() { + if err := wal.Stop(); err != nil { + t.Error(err) + } + }) + chain, commits, err = makeBlockchainFromWAL(wal) + require.NoError(t, err) + pubKey, err := privVal.GetPubKey() + require.NoError(t, err) + stateDB, genesisState, store = stateAndStore(t, config, pubKey, kvstore.AppVersion) + } stateStore := sm.NewStore(stateDB, sm.StoreOptions{ - DiscardFinalizeBlockResponses: false, + DiscardABCIResponses: false, }) t.Cleanup(func() { _ = stateStore.Close() @@ -419,7 +668,7 @@ func testHandshakeReplay(t *testing.T, config *cfg.Config, nBlocks int, mode uin proxyApp := proxy.NewAppConns(clientCreator2, proxy.NopMetrics()) stateDB1 := dbm.NewMemDB() stateStore := sm.NewStore(stateDB1, sm.StoreOptions{ - DiscardFinalizeBlockResponses: false, + DiscardABCIResponses: false, }) err := stateStore.Save(genesisState) require.NoError(t, err) @@ -449,7 +698,7 @@ func testHandshakeReplay(t *testing.T, config *cfg.Config, nBlocks int, mode uin } }) - err = handshaker.Handshake(proxyApp) + err := handshaker.Handshake(proxyApp) if expectError { require.Error(t, err) return @@ -604,7 +853,7 @@ func TestHandshakePanicsIfAppReturnsWrongAppHash(t *testing.T) { require.NoError(t, err) stateDB, state, store := stateAndStore(t, config, pubKey, appVersion) stateStore := sm.NewStore(stateDB, sm.StoreOptions{ - DiscardFinalizeBlockResponses: false, + DiscardABCIResponses: false, }) genDoc, _ := sm.MakeGenesisDocFromFile(config.GenesisFile()) state.LastValidators = state.Validators.Copy() @@ -821,7 +1070,7 @@ func stateAndStore( ) (dbm.DB, sm.State, *mockBlockStore) { stateDB := dbm.NewMemDB() stateStore := sm.NewStore(stateDB, sm.StoreOptions{ - DiscardFinalizeBlockResponses: false, + DiscardABCIResponses: false, }) state, err := sm.MakeGenesisStateFromFile(config.GenesisFile()) require.NoError(t, err) @@ -917,7 +1166,7 @@ func TestHandshakeUpdatesValidators(t *testing.T) { require.NoError(t, err) stateDB, state, store := stateAndStore(t, config, pubKey, 0x0) stateStore := sm.NewStore(stateDB, sm.StoreOptions{ - DiscardFinalizeBlockResponses: false, + DiscardABCIResponses: false, }) oldValAddr := state.Validators.Validators[0].Address diff --git a/consensus/wal_generator.go b/consensus/wal_generator.go index a84ddc0b6..4501bb42d 100644 --- a/consensus/wal_generator.go +++ b/consensus/wal_generator.go @@ -28,9 +28,7 @@ import ( // persistent kvstore application and special consensus wal instance // (byteBufferWAL) and waits until numBlocks are created. // If the node fails to produce given numBlocks, it returns an error. -func WALGenerateNBlocks(t *testing.T, wr io.Writer, numBlocks int) (err error) { - config := getConfig(t) - +func WALGenerateNBlocks(t *testing.T, wr io.Writer, numBlocks int, config *cfg.Config) (err error) { app := kvstore.NewPersistentApplication(filepath.Join(config.DBDir(), "wal_generator")) logger := log.TestingLogger().With("wal_generator", "wal_generator") @@ -49,7 +47,7 @@ func WALGenerateNBlocks(t *testing.T, wr io.Writer, numBlocks int) (err error) { blockStoreDB := db.NewMemDB() stateDB := blockStoreDB stateStore := sm.NewStore(stateDB, sm.StoreOptions{ - DiscardFinalizeBlockResponses: false, + DiscardABCIResponses: false, }) state, err := sm.MakeGenesisState(genDoc) if err != nil { @@ -123,11 +121,11 @@ func WALGenerateNBlocks(t *testing.T, wr io.Writer, numBlocks int) (err error) { } // WALWithNBlocks returns a WAL content with numBlocks. -func WALWithNBlocks(t *testing.T, numBlocks int) (data []byte, err error) { +func WALWithNBlocks(t *testing.T, numBlocks int, config *cfg.Config) (data []byte, err error) { var b bytes.Buffer wr := bufio.NewWriter(&b) - if err := WALGenerateNBlocks(t, wr, numBlocks); err != nil { + if err := WALGenerateNBlocks(t, wr, numBlocks, config); err != nil { return []byte{}, err } diff --git a/consensus/wal_test.go b/consensus/wal_test.go index 12b775b41..80367c000 100644 --- a/consensus/wal_test.go +++ b/consensus/wal_test.go @@ -56,7 +56,7 @@ func TestWALTruncate(t *testing.T) { // 60 block's size nearly 70K, greater than group's headBuf size(4096 * 10), // when headBuf is full, truncate content will Flush to the file. at this // time, RotateFile is called, truncate content exist in each file. - err = WALGenerateNBlocks(t, wal.Group(), 60) + err = WALGenerateNBlocks(t, wal.Group(), 60, getConfig(t)) require.NoError(t, err) time.Sleep(1 * time.Millisecond) // wait groupCheckDuration, make sure RotateFile run @@ -150,7 +150,7 @@ func TestWALWrite(t *testing.T) { } func TestWALSearchForEndHeight(t *testing.T) { - walBody, err := WALWithNBlocks(t, 6) + walBody, err := WALWithNBlocks(t, 6, getConfig(t)) if err != nil { t.Fatal(err) } @@ -188,7 +188,7 @@ func TestWALPeriodicSync(t *testing.T) { wal.SetLogger(log.TestingLogger()) // Generate some data - err = WALGenerateNBlocks(t, wal.Group(), 5) + err = WALGenerateNBlocks(t, wal.Group(), 5, getConfig(t)) require.NoError(t, err) // We should have data in the buffer now diff --git a/light/detector.go b/light/detector.go index 1fd21f41e..dd56d9428 100644 --- a/light/detector.go +++ b/light/detector.go @@ -34,7 +34,7 @@ func (c *Client) detectDivergence(ctx context.Context, primaryTrace []*types.Lig lastVerifiedHeader = primaryTrace[len(primaryTrace)-1].SignedHeader witnessesToRemove = make([]int, 0) ) - c.logger.Debug("Running detector against trace", "endBlockHeight", lastVerifiedHeader.Height, + c.logger.Debug("Running detector against trace", "finalizeBlockHeight", lastVerifiedHeader.Height, "endBlockHash", lastVerifiedHeader.Hash, "length", len(primaryTrace)) c.providerMutex.Lock() diff --git a/node/node.go b/node/node.go index 252715223..ddf86e0dc 100644 --- a/node/node.go +++ b/node/node.go @@ -152,7 +152,7 @@ func NewNode(config *cfg.Config, } stateStore := sm.NewStore(stateDB, sm.StoreOptions{ - DiscardFinalizeBlockResponses: config.Storage.DiscardFinalizeBlockResponses, + DiscardABCIResponses: config.Storage.DiscardABCIResponses, }) state, genDoc, err := LoadStateFromDBOrGenesisDocProvider(stateDB, genesisDocProvider) diff --git a/node/node_test.go b/node/node_test.go index 9f389a9fd..436218d78 100644 --- a/node/node_test.go +++ b/node/node_test.go @@ -261,7 +261,7 @@ func TestCreateProposalBlock(t *testing.T) { var height int64 = 1 state, stateDB, privVals := state(1, height) stateStore := sm.NewStore(stateDB, sm.StoreOptions{ - DiscardFinalizeBlockResponses: false, + DiscardABCIResponses: false, }) maxBytes := 16384 var partSize uint32 = 256 @@ -373,7 +373,7 @@ func TestMaxProposalBlockSize(t *testing.T) { var height int64 = 1 state, stateDB, _ := state(1, height) stateStore := sm.NewStore(stateDB, sm.StoreOptions{ - DiscardFinalizeBlockResponses: false, + DiscardABCIResponses: false, }) var maxBytes int64 = 16384 var partSize uint32 = 256 @@ -505,7 +505,7 @@ func state(nVals int, height int64) (sm.State, dbm.DB, []types.PrivValidator) { // save validators to db for 2 heights stateDB := dbm.NewMemDB() stateStore := sm.NewStore(stateDB, sm.StoreOptions{ - DiscardFinalizeBlockResponses: false, + DiscardABCIResponses: false, }) if err := stateStore.Save(s); err != nil { panic(err) diff --git a/node/setup.go b/node/setup.go index dc5498ba1..5fedcbe8e 100644 --- a/node/setup.go +++ b/node/setup.go @@ -620,7 +620,7 @@ func LoadStateFromDBOrGenesisDocProvider( } } stateStore := sm.NewStore(stateDB, sm.StoreOptions{ - DiscardFinalizeBlockResponses: false, + DiscardABCIResponses: false, }) state, err := stateStore.LoadFromDBOrGenesisDoc(genDoc) if err != nil { diff --git a/rpc/core/blocks_test.go b/rpc/core/blocks_test.go index 1787a250b..8256920d9 100644 --- a/rpc/core/blocks_test.go +++ b/rpc/core/blocks_test.go @@ -79,7 +79,7 @@ func TestBlockResults(t *testing.T) { env = &Environment{} env.StateStore = sm.NewStore(dbm.NewMemDB(), sm.StoreOptions{ - DiscardFinalizeBlockResponses: false, + DiscardABCIResponses: false, }) err := env.StateStore.SaveFinalizeBlockResponse(100, results) require.NoError(t, err) diff --git a/state/execution_test.go b/state/execution_test.go index 953d0a5de..78830fcc7 100644 --- a/state/execution_test.go +++ b/state/execution_test.go @@ -47,7 +47,7 @@ func TestApplyBlock(t *testing.T) { state, stateDB, _ := makeState(1, 1) stateStore := sm.NewStore(stateDB, sm.StoreOptions{ - DiscardFinalizeBlockResponses: false, + DiscardABCIResponses: false, }) blockStore := store.NewBlockStore(dbm.NewMemDB()) @@ -88,7 +88,7 @@ func TestFinalizeBlockValidators(t *testing.T) { state, stateDB, _ := makeState(2, 2) stateStore := sm.NewStore(stateDB, sm.StoreOptions{ - DiscardFinalizeBlockResponses: false, + DiscardABCIResponses: false, }) prevHash := state.LastBlockID.Hash @@ -153,7 +153,7 @@ func TestFinalizeBlockMisbehavior(t *testing.T) { state, stateDB, privVals := makeState(1, 1) stateStore := sm.NewStore(stateDB, sm.StoreOptions{ - DiscardFinalizeBlockResponses: false, + DiscardABCIResponses: false, }) defaultEvidenceTime := time.Date(2019, 1, 1, 0, 0, 0, 0, time.UTC) @@ -270,7 +270,7 @@ func TestProcessProposal(t *testing.T) { state, stateDB, privVals := makeState(1, height) stateStore := sm.NewStore(stateDB, sm.StoreOptions{ - DiscardFinalizeBlockResponses: false, + DiscardABCIResponses: false, }) blockStore := store.NewBlockStore(dbm.NewMemDB()) eventBus := types.NewEventBus() @@ -478,7 +478,7 @@ func TestFinalizeBlockValidatorUpdates(t *testing.T) { state, stateDB, _ := makeState(1, 1) stateStore := sm.NewStore(stateDB, sm.StoreOptions{ - DiscardFinalizeBlockResponses: false, + DiscardABCIResponses: false, }) mp := &mpmocks.Mempool{} mp.On("Lock").Return() @@ -567,7 +567,7 @@ func TestFinalizeBlockValidatorUpdatesResultingInEmptySet(t *testing.T) { state, stateDB, _ := makeState(1, 1) stateStore := sm.NewStore(stateDB, sm.StoreOptions{ - DiscardFinalizeBlockResponses: false, + DiscardABCIResponses: false, }) blockStore := store.NewBlockStore(dbm.NewMemDB()) blockExec := sm.NewBlockExecutor( @@ -608,7 +608,7 @@ func TestEmptyPrepareProposal(t *testing.T) { state, stateDB, privVals := makeState(1, height) stateStore := sm.NewStore(stateDB, sm.StoreOptions{ - DiscardFinalizeBlockResponses: false, + DiscardABCIResponses: false, }) mp := &mpmocks.Mempool{} mp.On("Lock").Return() @@ -646,7 +646,7 @@ func TestPrepareProposalTxsAllIncluded(t *testing.T) { state, stateDB, privVals := makeState(1, height) stateStore := sm.NewStore(stateDB, sm.StoreOptions{ - DiscardFinalizeBlockResponses: false, + DiscardABCIResponses: false, }) evpool := &mocks.EvidencePool{} @@ -695,7 +695,7 @@ func TestPrepareProposalReorderTxs(t *testing.T) { state, stateDB, privVals := makeState(1, height) stateStore := sm.NewStore(stateDB, sm.StoreOptions{ - DiscardFinalizeBlockResponses: false, + DiscardABCIResponses: false, }) evpool := &mocks.EvidencePool{} @@ -750,7 +750,7 @@ func TestPrepareProposalErrorOnTooManyTxs(t *testing.T) { // limit max block size state.ConsensusParams.Block.MaxBytes = 60 * 1024 stateStore := sm.NewStore(stateDB, sm.StoreOptions{ - DiscardFinalizeBlockResponses: false, + DiscardABCIResponses: false, }) evpool := &mocks.EvidencePool{} @@ -801,7 +801,7 @@ func TestPrepareProposalErrorOnPrepareProposalError(t *testing.T) { state, stateDB, privVals := makeState(1, height) stateStore := sm.NewStore(stateDB, sm.StoreOptions{ - DiscardFinalizeBlockResponses: false, + DiscardABCIResponses: false, }) evpool := &mocks.EvidencePool{} diff --git a/state/export_test.go b/state/export_test.go index f1a60f29f..331cfb3b7 100644 --- a/state/export_test.go +++ b/state/export_test.go @@ -41,6 +41,6 @@ func ValidateValidatorUpdates(abciUpdates []abci.ValidatorUpdate, params types.V // SaveValidatorsInfo is an alias for the private saveValidatorsInfo method in // store.go, exported exclusively and explicitly for testing. func SaveValidatorsInfo(db dbm.DB, height, lastHeightChanged int64, valSet *types.ValidatorSet) error { - stateStore := dbStore{db, StoreOptions{DiscardFinalizeBlockResponses: false}} + stateStore := dbStore{db, StoreOptions{DiscardABCIResponses: false}} return stateStore.saveValidatorsInfo(height, lastHeightChanged, valSet) } diff --git a/state/helpers_test.go b/state/helpers_test.go index 0e9652d2c..f1d5c971e 100644 --- a/state/helpers_test.go +++ b/state/helpers_test.go @@ -124,7 +124,7 @@ func makeState(nVals, height int) (sm.State, dbm.DB, map[string]types.PrivValida stateDB := dbm.NewMemDB() stateStore := sm.NewStore(stateDB, sm.StoreOptions{ - DiscardFinalizeBlockResponses: false, + DiscardABCIResponses: false, }) if err := stateStore.Save(s); err != nil { panic(err) diff --git a/state/rollback_test.go b/state/rollback_test.go index 08a7ea9c3..9e2d03efc 100644 --- a/state/rollback_test.go +++ b/state/rollback_test.go @@ -88,7 +88,7 @@ func TestRollback(t *testing.T) { func TestRollbackHard(t *testing.T) { const height int64 = 100 blockStore := store.NewBlockStore(dbm.NewMemDB()) - stateStore := state.NewStore(dbm.NewMemDB(), state.StoreOptions{DiscardFinalizeBlockResponses: false}) + stateStore := state.NewStore(dbm.NewMemDB(), state.StoreOptions{DiscardABCIResponses: false}) valSet, _ := types.RandValidatorSet(5, 10) @@ -204,7 +204,7 @@ func TestRollbackHard(t *testing.T) { func TestRollbackNoState(t *testing.T) { stateStore := state.NewStore(dbm.NewMemDB(), state.StoreOptions{ - DiscardFinalizeBlockResponses: false, + DiscardABCIResponses: false, }) blockStore := &mocks.BlockStore{} @@ -238,7 +238,7 @@ func TestRollbackDifferentStateHeight(t *testing.T) { } func setupStateStore(t *testing.T, height int64) state.Store { - stateStore := state.NewStore(dbm.NewMemDB(), state.StoreOptions{DiscardFinalizeBlockResponses: false}) + stateStore := state.NewStore(dbm.NewMemDB(), state.StoreOptions{DiscardABCIResponses: false}) valSet, _ := types.RandValidatorSet(5, 10) params := types.DefaultConsensusParams() diff --git a/state/state_test.go b/state/state_test.go index dc14b6bbb..d8ddf26d1 100644 --- a/state/state_test.go +++ b/state/state_test.go @@ -28,7 +28,7 @@ func setupTestCase(t *testing.T) (func(t *testing.T), dbm.DB, sm.State) { dbType := dbm.BackendType(config.DBBackend) stateDB, err := dbm.NewDB("state", dbType, config.DBDir()) stateStore := sm.NewStore(stateDB, sm.StoreOptions{ - DiscardFinalizeBlockResponses: false, + DiscardABCIResponses: false, }) require.NoError(t, err) state, err := stateStore.LoadFromDBOrGenesisFile(config.GenesisFile()) @@ -77,7 +77,7 @@ func TestStateSaveLoad(t *testing.T) { tearDown, stateDB, state := setupTestCase(t) defer tearDown(t) stateStore := sm.NewStore(stateDB, sm.StoreOptions{ - DiscardFinalizeBlockResponses: false, + DiscardABCIResponses: false, }) assert := assert.New(t) @@ -98,7 +98,7 @@ func TestFinalizeBlockResponsesSaveLoad1(t *testing.T) { tearDown, stateDB, state := setupTestCase(t) defer tearDown(t) stateStore := sm.NewStore(stateDB, sm.StoreOptions{ - DiscardFinalizeBlockResponses: false, + DiscardABCIResponses: false, }) assert := assert.New(t) @@ -131,7 +131,7 @@ func TestFinalizeBlockResponsesSaveLoad2(t *testing.T) { assert := assert.New(t) stateStore := sm.NewStore(stateDB, sm.StoreOptions{ - DiscardFinalizeBlockResponses: false, + DiscardABCIResponses: false, }) cases := [...]struct { @@ -219,7 +219,7 @@ func TestValidatorSimpleSaveLoad(t *testing.T) { assert := assert.New(t) statestore := sm.NewStore(stateDB, sm.StoreOptions{ - DiscardFinalizeBlockResponses: false, + DiscardABCIResponses: false, }) // Can't load anything for height 0. @@ -254,7 +254,7 @@ func TestOneValidatorChangesSaveLoad(t *testing.T) { tearDown, stateDB, state := setupTestCase(t) defer tearDown(t) stateStore := sm.NewStore(stateDB, sm.StoreOptions{ - DiscardFinalizeBlockResponses: false, + DiscardABCIResponses: false, }) // Change vals at these heights. @@ -912,7 +912,7 @@ func TestStoreLoadValidatorsIncrementsProposerPriority(t *testing.T) { tearDown, stateDB, state := setupTestCase(t) t.Cleanup(func() { tearDown(t) }) stateStore := sm.NewStore(stateDB, sm.StoreOptions{ - DiscardFinalizeBlockResponses: false, + DiscardABCIResponses: false, }) state.Validators = genValSet(valSetSize) state.NextValidators = state.Validators.CopyIncrementProposerPriority(1) @@ -939,7 +939,7 @@ func TestManyValidatorChangesSaveLoad(t *testing.T) { tearDown, stateDB, state := setupTestCase(t) defer tearDown(t) stateStore := sm.NewStore(stateDB, sm.StoreOptions{ - DiscardFinalizeBlockResponses: false, + DiscardABCIResponses: false, }) require.Equal(t, int64(0), state.LastBlockHeight) state.Validators = genValSet(valSetSize) @@ -1005,7 +1005,7 @@ func TestConsensusParamsChangesSaveLoad(t *testing.T) { defer tearDown(t) stateStore := sm.NewStore(stateDB, sm.StoreOptions{ - DiscardFinalizeBlockResponses: false, + DiscardABCIResponses: false, }) // Change vals at these heights. diff --git a/state/store.go b/state/store.go index bcb293d45..107658d82 100644 --- a/state/store.go +++ b/state/store.go @@ -84,11 +84,11 @@ type dbStore struct { } type StoreOptions struct { - // DiscardFinalizeBlockResponses determines whether or not the store - // retains all ABCIResponses. If DiscardFinalizeBlockResponses is enabled, + // DiscardABCIResponses determines whether or not the store + // retains all ABCIResponses. If DiscardABCIResponses is enabled, // the store will maintain only the response object from the latest // height. - DiscardFinalizeBlockResponses bool + DiscardABCIResponses bool } var _ Store = (*dbStore)(nil) @@ -375,11 +375,11 @@ func TxResultsHash(txResults []*abci.ExecTxResult) []byte { return types.NewResults(txResults).Hash() } -// LoadFinalizeBlockResponse loads the DiscardFinalizeBlockResponses for the given height from the +// LoadFinalizeBlockResponse loads the DiscardABCIResponses for the given height from the // database. If the node has D set to true, ErrABCIResponsesNotPersisted // is persisted. If not found, ErrNoABCIResponsesForHeight is returned. func (store dbStore) LoadFinalizeBlockResponse(height int64) (*abci.ResponseFinalizeBlock, error) { - if store.DiscardFinalizeBlockResponses { + if store.DiscardABCIResponses { return nil, ErrFinalizeBlockResponsesNotPersisted } @@ -469,7 +469,7 @@ func (store dbStore) SaveFinalizeBlockResponse(height int64, resp *abci.Response // If the flag is false then we save the ABCIResponse. This can be used for the /BlockResults // query or to reindex an event using the command line. - if !store.DiscardFinalizeBlockResponses { + if !store.DiscardABCIResponses { bz, err := resp.Marshal() if err != nil { return err diff --git a/state/store_test.go b/state/store_test.go index ec042886f..6d4715c96 100644 --- a/state/store_test.go +++ b/state/store_test.go @@ -22,7 +22,7 @@ import ( func TestStoreLoadValidators(t *testing.T) { stateDB := dbm.NewMemDB() stateStore := sm.NewStore(stateDB, sm.StoreOptions{ - DiscardFinalizeBlockResponses: false, + DiscardABCIResponses: false, }) val, _ := types.RandValidator(true, 10) vals := types.NewValidatorSet([]*types.Validator{val}) @@ -55,7 +55,7 @@ func BenchmarkLoadValidators(b *testing.B) { stateDB, err := dbm.NewDB("state", dbType, config.DBDir()) require.NoError(b, err) stateStore := sm.NewStore(stateDB, sm.StoreOptions{ - DiscardFinalizeBlockResponses: false, + DiscardABCIResponses: false, }) state, err := stateStore.LoadFromDBOrGenesisFile(config.GenesisFile()) if err != nil { @@ -112,7 +112,7 @@ func TestPruneStates(t *testing.T) { t.Run(name, func(t *testing.T) { db := dbm.NewMemDB() stateStore := sm.NewStore(db, sm.StoreOptions{ - DiscardFinalizeBlockResponses: false, + DiscardABCIResponses: false, }) pk := ed25519.GenPrivKey().PubKey() @@ -238,7 +238,7 @@ func TestLastFinalizeBlockResponses(t *testing.T) { t.Run("Not persisting responses", func(t *testing.T) { stateDB := dbm.NewMemDB() stateStore := sm.NewStore(stateDB, sm.StoreOptions{ - DiscardFinalizeBlockResponses: false, + DiscardABCIResponses: false, }) responses, err := stateStore.LoadFinalizeBlockResponse(1) require.Error(t, err) @@ -251,7 +251,7 @@ func TestLastFinalizeBlockResponses(t *testing.T) { } // create new db and state store and set discard abciresponses to false. stateDB = dbm.NewMemDB() - stateStore = sm.NewStore(stateDB, sm.StoreOptions{DiscardFinalizeBlockResponses: false}) + stateStore = sm.NewStore(stateDB, sm.StoreOptions{DiscardABCIResponses: false}) height := int64(10) // save the last abci response. err = stateStore.SaveFinalizeBlockResponse(height, response1) @@ -281,7 +281,7 @@ func TestLastFinalizeBlockResponses(t *testing.T) { } // create a new statestore with the responses on. stateStore := sm.NewStore(stateDB, sm.StoreOptions{ - DiscardFinalizeBlockResponses: true, + DiscardABCIResponses: true, }) // save an additional response. err := stateStore.SaveFinalizeBlockResponse(height+1, response2) diff --git a/state/tx_filter_test.go b/state/tx_filter_test.go index 52cc1ab31..d5ab761ac 100644 --- a/state/tx_filter_test.go +++ b/state/tx_filter_test.go @@ -34,7 +34,7 @@ func TestTxFilter(t *testing.T) { stateDB, err := dbm.NewDB("state", "memdb", os.TempDir()) require.NoError(t, err) stateStore := sm.NewStore(stateDB, sm.StoreOptions{ - DiscardFinalizeBlockResponses: false, + DiscardABCIResponses: false, }) state, err := stateStore.LoadFromDBOrGenesisDoc(genDoc) require.NoError(t, err) diff --git a/state/validation_test.go b/state/validation_test.go index 7fc092bfa..f99dfbd83 100644 --- a/state/validation_test.go +++ b/state/validation_test.go @@ -32,7 +32,7 @@ func TestValidateBlockHeader(t *testing.T) { state, stateDB, privVals := makeState(3, 1) stateStore := sm.NewStore(stateDB, sm.StoreOptions{ - DiscardFinalizeBlockResponses: false, + DiscardABCIResponses: false, }) mp := &mpmocks.Mempool{} mp.On("Lock").Return() @@ -120,7 +120,7 @@ func TestValidateBlockCommit(t *testing.T) { state, stateDB, privVals := makeState(1, 1) stateStore := sm.NewStore(stateDB, sm.StoreOptions{ - DiscardFinalizeBlockResponses: false, + DiscardABCIResponses: false, }) mp := &mpmocks.Mempool{} mp.On("Lock").Return() @@ -254,7 +254,7 @@ func TestValidateBlockEvidence(t *testing.T) { state, stateDB, privVals := makeState(4, 1) stateStore := sm.NewStore(stateDB, sm.StoreOptions{ - DiscardFinalizeBlockResponses: false, + DiscardABCIResponses: false, }) defaultEvidenceTime := time.Date(2019, 1, 1, 0, 0, 0, 0, time.UTC) diff --git a/store/store_test.go b/store/store_test.go index 47c944956..93c9227d6 100644 --- a/store/store_test.go +++ b/store/store_test.go @@ -50,7 +50,7 @@ func makeStateAndBlockStore(logger log.Logger) (sm.State, *BlockStore, cleanupFu blockDB := dbm.NewMemDB() stateDB := dbm.NewMemDB() stateStore := sm.NewStore(stateDB, sm.StoreOptions{ - DiscardFinalizeBlockResponses: false, + DiscardABCIResponses: false, }) state, err := stateStore.LoadFromDBOrGenesisFile(config.GenesisFile()) if err != nil { @@ -367,7 +367,7 @@ func TestLoadBaseMeta(t *testing.T) { config := test.ResetTestRoot("blockchain_reactor_test") defer os.RemoveAll(config.RootDir) stateStore := sm.NewStore(dbm.NewMemDB(), sm.StoreOptions{ - DiscardFinalizeBlockResponses: false, + DiscardABCIResponses: false, }) state, err := stateStore.LoadFromDBOrGenesisFile(config.GenesisFile()) require.NoError(t, err) @@ -429,7 +429,7 @@ func TestPruneBlocks(t *testing.T) { config := test.ResetTestRoot("blockchain_reactor_test") defer os.RemoveAll(config.RootDir) stateStore := sm.NewStore(dbm.NewMemDB(), sm.StoreOptions{ - DiscardFinalizeBlockResponses: false, + DiscardABCIResponses: false, }) state, err := stateStore.LoadFromDBOrGenesisFile(config.GenesisFile()) require.NoError(t, err) @@ -569,7 +569,7 @@ func TestLoadBlockMetaByHash(t *testing.T) { config := test.ResetTestRoot("blockchain_reactor_test") defer os.RemoveAll(config.RootDir) stateStore := sm.NewStore(dbm.NewMemDB(), sm.StoreOptions{ - DiscardFinalizeBlockResponses: false, + DiscardABCIResponses: false, }) state, err := stateStore.LoadFromDBOrGenesisFile(config.GenesisFile()) require.NoError(t, err)