Browse Source

simplify indexer service main loop

pull/1550/head
Anton Kaliaev 7 years ago
parent
commit
5e3a23df6d
No known key found for this signature in database GPG Key ID: 7B6881D965918214
2 changed files with 12 additions and 19 deletions
  1. +1
    -0
      node/node.go
  2. +11
    -19
      state/txindex/indexer_service.go

+ 1
- 0
node/node.go View File

@ -343,6 +343,7 @@ func NewNode(config *cfg.Config,
}
indexerService := txindex.NewIndexerService(txIndexer, eventBus)
indexerService.SetLogger(logger.With("module", "txindex"))
// run the profile server
profileHost := config.ProfListenAddress


+ 11
- 19
state/txindex/indexer_service.go View File

@ -41,32 +41,24 @@ func (is *IndexerService) OnStart() error {
}
go func() {
var numTxs, got int64
var batch *Batch
for {
select {
case e, ok := <-blockHeadersCh:
if !ok {
return
}
numTxs = e.(types.EventDataNewBlockHeader).Header.NumTxs
batch = NewBatch(numTxs)
case e, ok := <-txsCh:
e, ok := <-blockHeadersCh
if !ok {
return
}
header := e.(types.EventDataNewBlockHeader).Header
batch := NewBatch(header.NumTxs)
for i := int64(0); i < header.NumTxs; i++ {
e, ok := <-txsCh
if !ok {
is.Logger.Error("Failed to index all transactions due to closed transactions channel", "height", header.Height, "numTxs", header.NumTxs, "numProcessed", i)
return
}
if batch == nil {
panic("Expected pubsub to send block header first, but got tx event")
}
txResult := e.(types.EventDataTx).TxResult
batch.Add(&txResult)
got++
if numTxs == got {
is.idr.AddBatch(batch)
batch = nil
got = 0
}
}
is.idr.AddBatch(batch)
is.Logger.Info("Indexed block", "height", header.Height)
}
}()
return nil


Loading…
Cancel
Save