From d5e70866191a7081ff9fbea5c232a1e078cb94e4 Mon Sep 17 00:00:00 2001 From: Matthew Slipper Date: Mon, 7 Mar 2022 09:55:19 -0700 Subject: [PATCH 1/3] indexer: fix metrics --- go/indexer/metrics/metrics.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/go/indexer/metrics/metrics.go b/go/indexer/metrics/metrics.go index 5d24637eb2872..0f1da797755fd 100644 --- a/go/indexer/metrics/metrics.go +++ b/go/indexer/metrics/metrics.go @@ -43,7 +43,7 @@ func NewMetrics(monitoredTokens map[string]string) *Metrics { return &Metrics{ SyncHeight: promauto.NewGaugeVec(prometheus.GaugeOpts{ - Name: "l1_sync_height", + Name: "sync_height", Help: "The max height of the indexer's last batch of L1 blocks.", Namespace: metricsNamespace, }, []string{ @@ -118,7 +118,7 @@ func (m *Metrics) SetL1SyncHeight(height uint64) { } func (m *Metrics) SetL2SyncHeight(height uint64) { - m.SyncHeight.WithLabelValues("l1").Set(float64(height)) + m.SyncHeight.WithLabelValues("l2").Set(float64(height)) } func (m *Metrics) RecordDeposit(addr common.Address) { From 22054dfb20eb86639e8b5312d594bd85a6c03fa9 Mon Sep 17 00:00:00 2001 From: Matthew Slipper Date: Mon, 7 Mar 2022 10:19:52 -0700 Subject: [PATCH 2/3] indexer: reduce DB load --- go/indexer/metrics/metrics.go | 2 +- go/indexer/services/l1/service.go | 12 ++++++++---- go/indexer/services/l2/service.go | 28 ++++++++++++++++------------ 3 files changed, 25 insertions(+), 17 deletions(-) diff --git a/go/indexer/metrics/metrics.go b/go/indexer/metrics/metrics.go index 0f1da797755fd..c329bb96abb22 100644 --- a/go/indexer/metrics/metrics.go +++ b/go/indexer/metrics/metrics.go @@ -44,7 +44,7 @@ func NewMetrics(monitoredTokens map[string]string) *Metrics { return &Metrics{ SyncHeight: promauto.NewGaugeVec(prometheus.GaugeOpts{ Name: "sync_height", - Help: "The max height of the indexer's last batch of L1 blocks.", + Help: "The max height of the indexer's last batch of L1/L1 blocks.", Namespace: metricsNamespace, }, []string{ "chain", diff --git a/go/indexer/services/l1/service.go b/go/indexer/services/l1/service.go index cbc1c03073790..feeaa9fd7f727 100644 --- a/go/indexer/services/l1/service.go +++ b/go/indexer/services/l1/service.go @@ -94,9 +94,9 @@ type Service struct { latestHeader uint64 headerSelector *ConfirmedHeaderSelector - metrics *metrics.Metrics + metrics *metrics.Metrics tokenCache map[common.Address]*db.Token - wg sync.WaitGroup + wg sync.WaitGroup } type IndexerStatus struct { @@ -289,10 +289,15 @@ func (s *Service) Update(newHeader *types.Header) error { logger.Error("Error querying state batches", "err", err) } - for _, header := range headers { + for i, header := range headers { blockHash := header.Hash number := header.Number.Uint64() deposits := depositsByBlockHash[blockHash] + batches := stateBatches[blockHash] + + if len(deposits) == 0 && len(batches) == 0 && i != len(headers)-1 { + continue + } block := &db.IndexedL1Block{ Hash: blockHash, @@ -313,7 +318,6 @@ func (s *Service) Update(newHeader *types.Header) error { return err } - batches := stateBatches[blockHash] err = s.cfg.DB.AddStateBatch(batches) if err != nil { logger.Error( diff --git a/go/indexer/services/l2/service.go b/go/indexer/services/l2/service.go index ada963c8261bc..905b803faf330 100644 --- a/go/indexer/services/l2/service.go +++ b/go/indexer/services/l2/service.go @@ -69,15 +69,15 @@ func respondWithJSON(w http.ResponseWriter, code int, payload interface{}) { } type ServiceConfig struct { - Context context.Context - Metrics *metrics.Metrics - L2Client *l2ethclient.Client - ChainID *big.Int - ConfDepth uint64 - MaxHeaderBatchSize uint64 - StartBlockNumber uint64 - StartBlockHash string - DB *db.Database + Context context.Context + Metrics *metrics.Metrics + L2Client *l2ethclient.Client + ChainID *big.Int + ConfDepth uint64 + MaxHeaderBatchSize uint64 + StartBlockNumber uint64 + StartBlockHash string + DB *db.Database } type Service struct { @@ -89,9 +89,9 @@ type Service struct { latestHeader uint64 headerSelector *ConfirmedHeaderSelector - metrics *metrics.Metrics + metrics *metrics.Metrics tokenCache map[common.Address]*db.Token - wg sync.WaitGroup + wg sync.WaitGroup } type IndexerStatus struct { @@ -267,11 +267,15 @@ func (s *Service) Update(newHeader *types.Header) error { } } - for _, header := range headers { + for i, header := range headers { blockHash := header.Hash() number := header.Number.Uint64() withdrawals := withdrawalsByBlockHash[blockHash] + if len(withdrawals) == 0 && i != len(headers)-1 { + continue + } + block := &db.IndexedL2Block{ Hash: blockHash, ParentHash: header.ParentHash, From f02b940e44bc7e7d3da6c2549b3dc17cd2f7a627 Mon Sep 17 00:00:00 2001 From: Matthew Slipper Date: Mon, 7 Mar 2022 12:16:42 -0700 Subject: [PATCH 3/3] Use promauto --- go/indexer/metrics/metrics.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/go/indexer/metrics/metrics.go b/go/indexer/metrics/metrics.go index c329bb96abb22..35e6b6164005b 100644 --- a/go/indexer/metrics/metrics.go +++ b/go/indexer/metrics/metrics.go @@ -66,7 +66,7 @@ func NewMetrics(monitoredTokens map[string]string) *Metrics { "symbol", }), - StateBatchesCount: prometheus.NewCounter(prometheus.CounterOpts{ + StateBatchesCount: promauto.NewCounter(prometheus.CounterOpts{ Name: "state_batches_count", Help: "The number of state batches indexed.", Namespace: metricsNamespace, @@ -101,7 +101,7 @@ func NewMetrics(monitoredTokens map[string]string) *Metrics { "chain", }), - CachedTokensCount: prometheus.NewCounterVec(prometheus.CounterOpts{ + CachedTokensCount: promauto.NewCounterVec(prometheus.CounterOpts{ Name: "cached_tokens_count", Help: "How many tokens are in the cache", Namespace: metricsNamespace,