Commit 22054dfb authored by Matthew Slipper's avatar Matthew Slipper

indexer: reduce DB load

parent d5e70866
......@@ -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",
......
......@@ -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(
......
......@@ -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,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment