Skip to content

Commit c2405cc

Browse files
mmsqemelekes
andauthored
feat: do not start indexer service (back port: tendermint#3331) (tendermint#3496)
if block && tx indexers are no-op --------- Co-authored-by: Anton Kaliaev <[email protected]>
1 parent 641d528 commit c2405cc

File tree

3 files changed

+30
-15
lines changed

3 files changed

+30
-15
lines changed

node/node.go

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -592,10 +592,11 @@ func (n *Node) OnStop() {
592592
if err := n.eventBus.Stop(); err != nil {
593593
n.Logger.Error("Error closing eventBus", "err", err)
594594
}
595-
if err := n.indexerService.Stop(); err != nil {
596-
n.Logger.Error("Error closing indexerService", "err", err)
595+
if n.indexerService != nil {
596+
if err := n.indexerService.Stop(); err != nil {
597+
n.Logger.Error("Error closing indexerService", "err", err)
598+
}
597599
}
598-
599600
// now stop the reactors
600601
if err := n.sw.Stop(); err != nil {
601602
n.Logger.Error("Error closing switch", "err", err)

node/setup.go

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -149,16 +149,20 @@ func createAndStartIndexerService(
149149
txIndexer txindex.TxIndexer
150150
blockIndexer indexer.BlockIndexer
151151
)
152-
txIndexer, blockIndexer, err := block.IndexerFromConfig(config, dbProvider, chainID)
152+
153+
txIndexer, blockIndexer, allIndexersDisabled, err := block.IndexerFromConfigWithDisabledIndexers(config, dbProvider, chainID)
153154
if err != nil {
154155
return nil, nil, nil, err
155156
}
157+
if allIndexersDisabled {
158+
return nil, txIndexer, blockIndexer, nil
159+
}
156160

157161
txIndexer.SetLogger(logger.With("module", "txindex"))
158162
blockIndexer.SetLogger(logger.With("module", "txindex"))
163+
159164
indexerService := txindex.NewIndexerService(txIndexer, blockIndexer, eventBus, false)
160165
indexerService.SetLogger(logger.With("module", "txindex"))
161-
162166
if err := indexerService.Start(); err != nil {
163167
return nil, nil, nil, err
164168
}

state/indexer/block/indexer.go

Lines changed: 20 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -16,32 +16,42 @@ import (
1616
"github.com/cometbft/cometbft/state/txindex/null"
1717
)
1818

19-
// EventSinksFromConfig constructs a slice of indexer.EventSink using the provided
19+
// IndexerFromConfig constructs a slice of indexer.EventSink using the provided
2020
// configuration.
21-
//
22-
//nolint:lll
23-
func IndexerFromConfig(cfg *config.Config, dbProvider config.DBProvider, chainID string) (txindex.TxIndexer, indexer.BlockIndexer, error) {
21+
func IndexerFromConfig(cfg *config.Config, dbProvider config.DBProvider, chainID string) (
22+
txIdx txindex.TxIndexer, blockIdx indexer.BlockIndexer, err error,
23+
) {
24+
txidx, blkidx, _, err := IndexerFromConfigWithDisabledIndexers(cfg, dbProvider, chainID)
25+
return txidx, blkidx, err
26+
}
27+
28+
// IndexerFromConfigWithDisabledIndexers constructs a slice of indexer.EventSink using the provided
29+
// configuration. If all indexers are disabled in the configuration, it returns null indexers.
30+
// Otherwise, it creates the appropriate indexers based on the configuration.
31+
func IndexerFromConfigWithDisabledIndexers(cfg *config.Config, dbProvider config.DBProvider, chainID string) (
32+
txIdx txindex.TxIndexer, blockIdx indexer.BlockIndexer, allIndexersDisabled bool, err error,
33+
) {
2434
switch cfg.TxIndex.Indexer {
2535
case "kv":
2636
store, err := dbProvider(&config.DBContext{ID: "tx_index", Config: cfg})
2737
if err != nil {
28-
return nil, nil, err
38+
return nil, nil, false, err
2939
}
3040

31-
return kv.NewTxIndex(store), blockidxkv.New(dbm.NewPrefixDB(store, []byte("block_events"))), nil
41+
return kv.NewTxIndex(store), blockidxkv.New(dbm.NewPrefixDB(store, []byte("block_events"))), false, nil
3242

3343
case "psql":
3444
conn := cfg.TxIndex.PsqlConn
3545
if conn == "" {
36-
return nil, nil, errors.New("the psql connection settings cannot be empty")
46+
return nil, nil, false, errors.New("the psql connection settings cannot be empty")
3747
}
3848
es, err := psql.NewEventSink(cfg.TxIndex.PsqlConn, chainID)
3949
if err != nil {
40-
return nil, nil, fmt.Errorf("creating psql indexer: %w", err)
50+
return nil, nil, false, fmt.Errorf("creating psql indexer: %w", err)
4151
}
42-
return es.TxIndexer(), es.BlockIndexer(), nil
52+
return es.TxIndexer(), es.BlockIndexer(), false, nil
4353

4454
default:
45-
return &null.TxIndex{}, &blockidxnull.BlockerIndexer{}, nil
55+
return &null.TxIndex{}, &blockidxnull.BlockerIndexer{}, true, nil
4656
}
4757
}

0 commit comments

Comments
 (0)