mirror of
https://github.com/grassrootseconomics/eth-tracker.git
synced 2026-01-13 10:27:59 +01:00
56 lines
1.2 KiB
Go
56 lines
1.2 KiB
Go
package syncer
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
)
|
|
|
|
func (s *Syncer) BootstrapHistoricalSyncer() {
|
|
// logg here
|
|
for i, e := s.db.NextSet(0); e; i, e = s.db.NextSet(i + 1) {
|
|
if i > 0 {
|
|
s.batchQueue.PushBack(uint64(i))
|
|
}
|
|
}
|
|
}
|
|
|
|
func (s *Syncer) StartHistoricalSyncer(ctx context.Context) error {
|
|
for {
|
|
select {
|
|
case <-ctx.Done():
|
|
s.logg.Info("historical syncer shutting down")
|
|
return nil
|
|
default:
|
|
for s.batchQueue.Len() > 0 {
|
|
var (
|
|
currentIterLen = s.batchQueue.Len()
|
|
batch []uint64
|
|
)
|
|
|
|
if currentIterLen < blockBatchSize {
|
|
batch = make([]uint64, currentIterLen)
|
|
for i := 0; i < currentIterLen; i++ {
|
|
v, _ := s.batchQueue.PopFront()
|
|
batch[i] = v
|
|
}
|
|
} else {
|
|
batch = make([]uint64, blockBatchSize)
|
|
for i := 0; i < blockBatchSize; i++ {
|
|
v, _ := s.batchQueue.PopFront()
|
|
batch[i] = v
|
|
}
|
|
}
|
|
|
|
blocks, err := s.chain.GetBlocks(context.Background(), batch)
|
|
if err != nil {
|
|
s.logg.Error("batch blocks fetcher error", "fetch_size", currentIterLen, "block_range", fmt.Sprintf("%d-%d", batch[0], batch[len(batch)-1]), "error", err)
|
|
}
|
|
|
|
for _, v := range blocks {
|
|
s.blocksQueue.PushBack(v)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|