Add a service (v3) to fill indexing gap for watched addresses #149
@ -101,9 +101,11 @@ func serve() {
|
||||
logWithCommand.Info("state validator disabled")
|
||||
}
|
||||
|
||||
var watchedAddressFillService *fill.Service
|
||||
if serverConfig.WatchedAddressGapFillerEnabled {
|
||||
service := fill.New(serverConfig)
|
||||
go service.Start()
|
||||
watchedAddressFillService = fill.New(serverConfig)
|
||||
wg.Add(1)
|
||||
go watchedAddressFillService.Start(wg)
|
||||
logWithCommand.Info("watched address gap filler enabled")
|
||||
} else {
|
||||
logWithCommand.Info("watched address gap filler disabled")
|
||||
@ -115,6 +117,9 @@ func serve() {
|
||||
if graphQL != nil {
|
||||
graphQL.Stop()
|
||||
}
|
||||
if watchedAddressFillService != nil {
|
||||
watchedAddressFillService.Stop()
|
||||
}
|
||||
server.Stop()
|
||||
wg.Wait()
|
||||
}
|
||||
|
@ -19,6 +19,7 @@ package fill
|
||||
|
||||
import (
|
||||
"math"
|
||||
"strings"
|
||||
"sync"
|
||||
i-norden
commented
If this is a standalone background process that has no server component and is disconnected from the rest of ipld-eth-server I'm not sure it belongs in this repo. If this is a standalone background process that has no server component and is disconnected from the rest of ipld-eth-server I'm not sure it belongs in this repo.
|
||||
"time"
|
||||
|
||||
"github.com/ethereum/go-ethereum/common"
|
||||
@ -46,6 +47,7 @@ type Service struct {
|
||||
i-norden
commented
If this is a standalone background process that has no server component and is disconnected from the rest of ipld-eth-server I'm not sure it belongs in this repo. If this is a standalone background process that has no server component and is disconnected from the rest of ipld-eth-server I'm not sure it belongs in this repo.
i-norden
commented
If this is a standalone background process that has no server component and is disconnected from the rest of ipld-eth-server I'm not sure it belongs in this repo. If this is a standalone background process that has no server component and is disconnected from the rest of ipld-eth-server I'm not sure it belongs in this repo.
|
||||
db *sqlx.DB
|
||||
client *rpc.Client
|
||||
interval int
|
||||
quitChan chan bool
|
||||
i-norden
commented
If this is a standalone background process that has no server component and is disconnected from the rest of ipld-eth-server I'm not sure it belongs in this repo. If this is a standalone background process that has no server component and is disconnected from the rest of ipld-eth-server I'm not sure it belongs in this repo.
|
||||
}
|
||||
|
||||
// NewServer creates a new Service
|
||||
@ -54,12 +56,32 @@ func New(config *serve.Config) *Service {
|
||||
i-norden
commented
If this is a standalone background process that has no server component and is disconnected from the rest of ipld-eth-server I'm not sure it belongs in this repo. If this is a standalone background process that has no server component and is disconnected from the rest of ipld-eth-server I'm not sure it belongs in this repo.
i-norden
commented
If this is a standalone background process that has no server component and is disconnected from the rest of ipld-eth-server I'm not sure it belongs in this repo. If this is a standalone background process that has no server component and is disconnected from the rest of ipld-eth-server I'm not sure it belongs in this repo.
|
||||
db: config.DB,
|
||||
client: config.Client,
|
||||
interval: config.WatchedAddressGapFillInterval,
|
||||
quitChan: make(chan bool),
|
||||
i-norden
commented
If this is a standalone background process that has no server component and is disconnected from the rest of ipld-eth-server I'm not sure it belongs in this repo. If this is a standalone background process that has no server component and is disconnected from the rest of ipld-eth-server I'm not sure it belongs in this repo.
|
||||
}
|
||||
}
|
||||
|
||||
// Start is used to begin the service
|
||||
func (s *Service) Start() {
|
||||
i-norden
commented
If this is a standalone background process that has no server component and is disconnected from the rest of ipld-eth-server I'm not sure it belongs in this repo. If this is a standalone background process that has no server component and is disconnected from the rest of ipld-eth-server I'm not sure it belongs in this repo.
|
||||
func (s *Service) Start(wg *sync.WaitGroup) {
|
||||
i-norden
commented
If this is a standalone background process that has no server component and is disconnected from the rest of ipld-eth-server I'm not sure it belongs in this repo. If this is a standalone background process that has no server component and is disconnected from the rest of ipld-eth-server I'm not sure it belongs in this repo.
|
||||
defer wg.Done()
|
||||
i-norden
commented
If this is a standalone background process that has no server component and is disconnected from the rest of ipld-eth-server I'm not sure it belongs in this repo. If this is a standalone background process that has no server component and is disconnected from the rest of ipld-eth-server I'm not sure it belongs in this repo.
|
||||
for {
|
||||
select {
|
||||
i-norden
commented
If this is a standalone background process that has no server component and is disconnected from the rest of ipld-eth-server I'm not sure it belongs in this repo. If this is a standalone background process that has no server component and is disconnected from the rest of ipld-eth-server I'm not sure it belongs in this repo.
|
||||
case <-s.quitChan:
|
||||
i-norden
commented
If this is a standalone background process that has no server component and is disconnected from the rest of ipld-eth-server I'm not sure it belongs in this repo. If this is a standalone background process that has no server component and is disconnected from the rest of ipld-eth-server I'm not sure it belongs in this repo.
|
||||
log.Info("quiting eth ipld server process")
|
||||
i-norden
commented
If this is a standalone background process that has no server component and is disconnected from the rest of ipld-eth-server I'm not sure it belongs in this repo. If this is a standalone background process that has no server component and is disconnected from the rest of ipld-eth-server I'm not sure it belongs in this repo.
|
||||
return
|
||||
i-norden
commented
If this is a standalone background process that has no server component and is disconnected from the rest of ipld-eth-server I'm not sure it belongs in this repo. If this is a standalone background process that has no server component and is disconnected from the rest of ipld-eth-server I'm not sure it belongs in this repo.
|
||||
default:
|
||||
i-norden
commented
If this is a standalone background process that has no server component and is disconnected from the rest of ipld-eth-server I'm not sure it belongs in this repo. If this is a standalone background process that has no server component and is disconnected from the rest of ipld-eth-server I'm not sure it belongs in this repo.
|
||||
s.fill()
|
||||
i-norden
commented
If this is a standalone background process that has no server component and is disconnected from the rest of ipld-eth-server I'm not sure it belongs in this repo. If this is a standalone background process that has no server component and is disconnected from the rest of ipld-eth-server I'm not sure it belongs in this repo.
|
||||
}
|
||||
i-norden
commented
If this is a standalone background process that has no server component and is disconnected from the rest of ipld-eth-server I'm not sure it belongs in this repo. If this is a standalone background process that has no server component and is disconnected from the rest of ipld-eth-server I'm not sure it belongs in this repo.
|
||||
}
|
||||
i-norden
commented
If this is a standalone background process that has no server component and is disconnected from the rest of ipld-eth-server I'm not sure it belongs in this repo. If this is a standalone background process that has no server component and is disconnected from the rest of ipld-eth-server I'm not sure it belongs in this repo.
|
||||
}
|
||||
i-norden
commented
If this is a standalone background process that has no server component and is disconnected from the rest of ipld-eth-server I'm not sure it belongs in this repo. If this is a standalone background process that has no server component and is disconnected from the rest of ipld-eth-server I'm not sure it belongs in this repo.
|
||||
|
||||
i-norden
commented
If this is a standalone background process that has no server component and is disconnected from the rest of ipld-eth-server I'm not sure it belongs in this repo. If this is a standalone background process that has no server component and is disconnected from the rest of ipld-eth-server I'm not sure it belongs in this repo.
|
||||
// Stop is used to gracefully stop the service
|
||||
i-norden
commented
If this is a standalone background process that has no server component and is disconnected from the rest of ipld-eth-server I'm not sure it belongs in this repo. If this is a standalone background process that has no server component and is disconnected from the rest of ipld-eth-server I'm not sure it belongs in this repo.
|
||||
func (s *Service) Stop() {
|
||||
i-norden
commented
If this is a standalone background process that has no server component and is disconnected from the rest of ipld-eth-server I'm not sure it belongs in this repo. If this is a standalone background process that has no server component and is disconnected from the rest of ipld-eth-server I'm not sure it belongs in this repo.
|
||||
log.Info("stopping watched address gap filler")
|
||||
i-norden
commented
If this is a standalone background process that has no server component and is disconnected from the rest of ipld-eth-server I'm not sure it belongs in this repo. If this is a standalone background process that has no server component and is disconnected from the rest of ipld-eth-server I'm not sure it belongs in this repo.
|
||||
close(s.quitChan)
|
||||
i-norden
commented
If this is a standalone background process that has no server component and is disconnected from the rest of ipld-eth-server I'm not sure it belongs in this repo. If this is a standalone background process that has no server component and is disconnected from the rest of ipld-eth-server I'm not sure it belongs in this repo.
|
||||
}
|
||||
i-norden
commented
If this is a standalone background process that has no server component and is disconnected from the rest of ipld-eth-server I'm not sure it belongs in this repo. If this is a standalone background process that has no server component and is disconnected from the rest of ipld-eth-server I'm not sure it belongs in this repo.
|
||||
|
||||
i-norden
commented
If this is a standalone background process that has no server component and is disconnected from the rest of ipld-eth-server I'm not sure it belongs in this repo. If this is a standalone background process that has no server component and is disconnected from the rest of ipld-eth-server I'm not sure it belongs in this repo.
|
||||
// fill performs the filling of indexing gap for watched addresses
|
||||
i-norden
commented
If this is a standalone background process that has no server component and is disconnected from the rest of ipld-eth-server I'm not sure it belongs in this repo. If this is a standalone background process that has no server component and is disconnected from the rest of ipld-eth-server I'm not sure it belongs in this repo.
|
||||
func (s *Service) fill() {
|
||||
i-norden
commented
If this is a standalone background process that has no server component and is disconnected from the rest of ipld-eth-server I'm not sure it belongs in this repo. If this is a standalone background process that has no server component and is disconnected from the rest of ipld-eth-server I'm not sure it belongs in this repo.
|
||||
// Wait for specified interval duration
|
||||
time.Sleep(time.Duration(s.interval) * time.Second)
|
||||
|
||||
@ -98,7 +120,6 @@ func (s *Service) Start() {
|
||||
i-norden
commented
If this is a standalone background process that has no server component and is disconnected from the rest of ipld-eth-server I'm not sure it belongs in this repo. If this is a standalone background process that has no server component and is disconnected from the rest of ipld-eth-server I'm not sure it belongs in this repo.
i-norden
commented
If this is a standalone background process that has no server component and is disconnected from the rest of ipld-eth-server I'm not sure it belongs in this repo. If this is a standalone background process that has no server component and is disconnected from the rest of ipld-eth-server I'm not sure it belongs in this repo.
|
||||
s.UpdateLastFilledAt(blockNumber, fillAddresses)
|
||||
}
|
||||
}
|
||||
}
|
||||
i-norden
commented
If this is a standalone background process that has no server component and is disconnected from the rest of ipld-eth-server I'm not sure it belongs in this repo. If this is a standalone background process that has no server component and is disconnected from the rest of ipld-eth-server I'm not sure it belongs in this repo.
|
||||
}
|
||||
|
||||
// GetFillAddresses finds the encompassing range to perform fill for the given watched addresses
|
||||
|
||||
i-norden
commented
If this is a standalone background process that has no server component and is disconnected from the rest of ipld-eth-server I'm not sure it belongs in this repo. If this is a standalone background process that has no server component and is disconnected from the rest of ipld-eth-server I'm not sure it belongs in this repo.
i-norden
commented
If this is a standalone background process that has no server component and is disconnected from the rest of ipld-eth-server I'm not sure it belongs in this repo. If this is a standalone background process that has no server component and is disconnected from the rest of ipld-eth-server I'm not sure it belongs in this repo.
|
If this is a standalone background process that has no server component and is disconnected from the rest of ipld-eth-server I'm not sure it belongs in this repo.
If this is a standalone background process that has no server component and is disconnected from the rest of ipld-eth-server I'm not sure it belongs in this repo.