config: Move discard_abci_responses flag into its own storage section (#9275)

* config: Move discard_abci_responses flag into its own storage section

Signed-off-by: Thane Thomson <connect@thanethomson.com>

* Update config comment to highlight space saving tradeoff

Signed-off-by: Thane Thomson <connect@thanethomson.com>

Signed-off-by: Thane Thomson <connect@thanethomson.com>
This commit is contained in:
Thane Thomson
2022-08-17 11:18:18 -04:00
committed by Sam Ricotta
parent 28b7cd6d6e
commit 596ca4e591
5 changed files with 46 additions and 44 deletions

View File

@@ -78,7 +78,7 @@ func loadStateAndBlockStore(config *cfg.Config) (*store.BlockStore, state.Store,
return nil, nil, err
}
stateStore := state.NewStore(stateDB, state.StoreOptions{
DiscardABCIResponses: config.RPC.DiscardABCIResponses,
DiscardABCIResponses: config.Storage.DiscardABCIResponses,
})
return blockStore, stateStore, nil

View File

@@ -77,6 +77,7 @@ type Config struct {
// https://github.com/tendermint/tendermint/issues/9279
DeprecatedFastSyncConfig map[interface{}]interface{} `mapstructure:"fastsync"`
Consensus *ConsensusConfig `mapstructure:"consensus"`
Storage *StorageConfig `mapstructure:"storage"`
TxIndex *TxIndexConfig `mapstructure:"tx_index"`
Instrumentation *InstrumentationConfig `mapstructure:"instrumentation"`
}
@@ -91,6 +92,7 @@ func DefaultConfig() *Config {
StateSync: DefaultStateSyncConfig(),
BlockSync: DefaultBlockSyncConfig(),
Consensus: DefaultConsensusConfig(),
Storage: DefaultStorageConfig(),
TxIndex: DefaultTxIndexConfig(),
Instrumentation: DefaultInstrumentationConfig(),
}
@@ -106,6 +108,7 @@ func TestConfig() *Config {
StateSync: TestStateSyncConfig(),
BlockSync: TestBlockSyncConfig(),
Consensus: TestConsensusConfig(),
Storage: TestStorageConfig(),
TxIndex: TestTxIndexConfig(),
Instrumentation: TestInstrumentationConfig(),
}
@@ -423,11 +426,6 @@ type RPCConfig struct {
// pprof listen address (https://golang.org/pkg/net/http/pprof)
PprofListenAddress string `mapstructure:"pprof_laddr"`
// Set false to ensure ABCI responses are persisted.
// ABCI responses are required for /BlockResults RPC queries, and
// to reindex events in the command-line tool.
DiscardABCIResponses bool `mapstructure:"discard_abci_responses"`
}
// DefaultRPCConfig returns a default configuration for the RPC server
@@ -452,9 +450,8 @@ func DefaultRPCConfig() *RPCConfig {
MaxBodyBytes: int64(1000000), // 1MB
MaxHeaderBytes: 1 << 20, // same as the net/http default
TLSCertFile: "",
TLSKeyFile: "",
DiscardABCIResponses: false,
TLSCertFile: "",
TLSKeyFile: "",
}
}
@@ -1092,6 +1089,34 @@ func (cfg *ConsensusConfig) ValidateBasic() error {
return nil
}
//-----------------------------------------------------------------------------
// StorageConfig
// StorageConfig allows more fine-grained control over certain storage-related
// behavior.
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.
DiscardABCIResponses bool `mapstructure:"discard_abci_responses"`
}
// DefaultStorageConfig returns the default configuration options relating to
// Tendermint storage optimization.
func DefaultStorageConfig() *StorageConfig {
return &StorageConfig{
DiscardABCIResponses: false,
}
}
// TestStorageConfig returns storage configuration that can be used for
// testing.
func TestStorageConfig() *StorageConfig {
return &StorageConfig{
DiscardABCIResponses: false,
}
}
// -----------------------------------------------------------------------------
// TxIndexConfig
// Remember that Event has the following structure:

View File

@@ -263,9 +263,6 @@ tls_key_file = "{{ .RPC.TLSKeyFile }}"
# pprof listen address (https://golang.org/pkg/net/http/pprof)
pprof_laddr = "{{ .RPC.PprofListenAddress }}"
# Flag that enables discarding of abci responses
discard_abci_responses = {{ .RPC.DiscardABCIResponses}}
#######################################################
### P2P Configuration Options ###
#######################################################
@@ -485,6 +482,16 @@ create_empty_blocks_interval = "{{ .Consensus.CreateEmptyBlocksInterval }}"
peer_gossip_sleep_duration = "{{ .Consensus.PeerGossipSleepDuration }}"
peer_query_maj23_sleep_duration = "{{ .Consensus.PeerQueryMaj23SleepDuration }}"
#######################################################
### Storage Configuration Options ###
#######################################################
# Set to true to discard ABCI responses from the state store, which can save a
# 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.DiscardABCIResponses}}
#######################################################
### Transaction Indexer Configuration Options ###
#######################################################

View File

@@ -431,7 +431,7 @@ func createEvidenceReactor(config *cfg.Config, dbProvider DBProvider,
}
evidenceLogger := logger.With("module", "evidence")
evidencePool, err := evidence.NewPool(evidenceDB, sm.NewStore(stateDB, sm.StoreOptions{
DiscardABCIResponses: config.RPC.DiscardABCIResponses,
DiscardABCIResponses: config.Storage.DiscardABCIResponses,
}), blockStore)
if err != nil {
return nil, nil, err
@@ -717,7 +717,7 @@ func NewNode(config *cfg.Config,
}
stateStore := sm.NewStore(stateDB, sm.StoreOptions{
DiscardABCIResponses: config.RPC.DiscardABCIResponses,
DiscardABCIResponses: config.Storage.DiscardABCIResponses,
})
state, genDoc, err := LoadStateFromDBOrGenesisDocProvider(stateDB, genesisDocProvider)

View File

@@ -453,19 +453,9 @@ func TestTransportMultiplexDialRejectWrongID(t *testing.T) {
_, err := dialer.Dial(*addr, peerConfig{})
if err != nil {
t.Logf("connection failed: %v", err)
<<<<<<< HEAD
if e, ok := err.(ErrRejected); ok {
if !e.IsAuthFailure() {
t.Errorf("expected auth failure, got %v", e)
||||||| parent of fbd754b4d (Backport of sam/abci-responses (#9090) (#9159))
if err, ok := err.(ErrRejected); ok {
if !err.IsAuthFailure() {
t.Errorf("expected auth failure, got %v", err)
=======
if e, ok := err.(ErrRejected); ok {
if !e.IsAuthFailure() {
t.Errorf("expected auth failure, got %v", err)
>>>>>>> fbd754b4d (Backport of sam/abci-responses (#9090) (#9159))
}
} else {
t.Errorf("expected ErrRejected, got %v", err)
@@ -500,19 +490,9 @@ func TestTransportMultiplexRejectIncompatible(t *testing.T) {
}()
_, err := mt.Accept(peerConfig{})
<<<<<<< HEAD
if e, ok := err.(ErrRejected); ok {
if !e.IsIncompatible() {
t.Errorf("expected to reject incompatible, got %v", e)
||||||| parent of fbd754b4d (Backport of sam/abci-responses (#9090) (#9159))
if err, ok := err.(ErrRejected); ok {
if !err.IsIncompatible() {
t.Errorf("expected to reject incompatible, got %v", err)
=======
if e, ok := err.(ErrRejected); ok {
if !e.IsIncompatible() {
t.Errorf("expected to reject incompatible, got %v", err)
>>>>>>> fbd754b4d (Backport of sam/abci-responses (#9090) (#9159))
}
} else {
t.Errorf("expected ErrRejected, got %v", err)
@@ -537,19 +517,9 @@ func TestTransportMultiplexRejectSelf(t *testing.T) {
}()
if err := <-errc; err != nil {
<<<<<<< HEAD
if e, ok := err.(ErrRejected); ok {
if !e.IsSelf() {
t.Errorf("expected to reject self, got: %v", e)
||||||| parent of fbd754b4d (Backport of sam/abci-responses (#9090) (#9159))
if err, ok := err.(ErrRejected); ok {
if !err.IsSelf() {
t.Errorf("expected to reject self, got: %v", err)
=======
if e, ok := err.(ErrRejected); ok {
if !e.IsSelf() {
t.Errorf("expected to reject self, got: %v", err)
>>>>>>> fbd754b4d (Backport of sam/abci-responses (#9090) (#9159))
}
} else {
t.Errorf("expected ErrRejected, got %v", err)