Browse Source

Faster synchronization with less calls to update Ethereum stats

feature/fastsync-skip-updateeth
Oleksandr Brezhniev 3 years ago
parent
commit
e68c64db75
1 changed files with 11 additions and 2 deletions
  1. +11
    -2
      synchronizer/synchronizer.go

+ 11
- 2
synchronizer/synchronizer.go

@ -23,6 +23,12 @@ const (
// errStrUnknownBlock is the string returned by geth when querying an // errStrUnknownBlock is the string returned by geth when querying an
// unknown block // unknown block
errStrUnknownBlock = "unknown block" errStrUnknownBlock = "unknown block"
// updateEthBlockNumThreshold is a threshold of number of ethereum blocks left to synchronize, such that
// if we have more blocks to sync than the defined value we can aggressively skip calling UpdateEth
updateEthBlockNumThreshold = 100
// While having more blocks to sync than updateEthBlockNumThreshold, UpdateEth will be called once in a
// defined number of blocks
updateEthFrequencyDivider = 100
) )
var ( var (
@ -528,8 +534,11 @@ func (s *Synchronizer) Sync(ctx context.Context,
log.Debugf("ethBlock: num: %v, parent: %v, hash: %v", log.Debugf("ethBlock: num: %v, parent: %v, hash: %v",
ethBlock.Num, ethBlock.ParentHash.String(), ethBlock.Hash.String()) ethBlock.Num, ethBlock.ParentHash.String(), ethBlock.Hash.String())
if err := s.stats.UpdateEth(s.ethClient); err != nil {
return nil, nil, tracerr.Wrap(err)
if nextBlockNum+updateEthBlockNumThreshold >= s.stats.Eth.LastBlock.Num ||
nextBlockNum%updateEthFrequencyDivider == 0 {
if err := s.stats.UpdateEth(s.ethClient); err != nil {
return nil, nil, tracerr.Wrap(err)
}
} }
log.Debugw("Syncing...", log.Debugw("Syncing...",

Loading…
Cancel
Save