Make validation process perpetual (#8)
* Make validation process perpetual * Get sleep interval from config * Add license * Gracefully shutdown validator on interrupt * Change default trail and sleep values
This commit is contained in:
+16
-7
@@ -3,6 +3,9 @@ package cmd
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"os"
|
||||
"os/signal"
|
||||
"sync"
|
||||
|
||||
"github.com/ethereum/go-ethereum/statediff"
|
||||
log "github.com/sirupsen/logrus"
|
||||
@@ -36,6 +39,7 @@ func stateValidator() {
|
||||
logWithCommand.Fatalf("block height cannot be less the 1")
|
||||
}
|
||||
trail := viper.GetUint64("validate.trail")
|
||||
sleepInterval := viper.GetUint("validate.sleepInterval")
|
||||
|
||||
chainConfigPath := viper.GetString("ethereum.chainConfig")
|
||||
chainCfg, err := statediff.LoadConfig(chainConfigPath)
|
||||
@@ -43,26 +47,31 @@ func stateValidator() {
|
||||
logWithCommand.Fatal(err)
|
||||
}
|
||||
|
||||
srvc := validator.NewService(cfg.DB, height, trail, chainCfg)
|
||||
service := validator.NewService(cfg.DB, height, trail, sleepInterval, chainCfg)
|
||||
|
||||
_, err = srvc.Start(context.Background())
|
||||
if err != nil {
|
||||
logWithCommand.Fatal(err)
|
||||
}
|
||||
wg := new(sync.WaitGroup)
|
||||
wg.Add(1)
|
||||
go service.Start(context.Background(), wg)
|
||||
|
||||
logWithCommand.Println("state validation complete")
|
||||
shutdown := make(chan os.Signal, 1)
|
||||
signal.Notify(shutdown, os.Interrupt)
|
||||
<-shutdown
|
||||
service.Stop()
|
||||
wg.Wait()
|
||||
}
|
||||
|
||||
func init() {
|
||||
rootCmd.AddCommand(stateValidatorCmd)
|
||||
|
||||
stateValidatorCmd.PersistentFlags().String("block-height", "1", "block height to initiate state validation")
|
||||
stateValidatorCmd.PersistentFlags().String("trail", "0", "trail of block height to validate")
|
||||
stateValidatorCmd.PersistentFlags().String("trail", "16", "trail of block height to validate")
|
||||
stateValidatorCmd.PersistentFlags().String("sleep-interval", "10", "sleep interval in seconds after validator has caught up to (head-trail) height")
|
||||
|
||||
stateValidatorCmd.PersistentFlags().String("chain-config", "", "path to chain config")
|
||||
|
||||
_ = viper.BindPFlag("validate.block-height", stateValidatorCmd.PersistentFlags().Lookup("block-height"))
|
||||
_ = viper.BindPFlag("validate.trail", stateValidatorCmd.PersistentFlags().Lookup("trail"))
|
||||
_ = viper.BindPFlag("validate.sleepInterval", stateValidatorCmd.PersistentFlags().Lookup("sleep-interval"))
|
||||
|
||||
_ = viper.BindPFlag("ethereum.chainConfig", stateValidatorCmd.PersistentFlags().Lookup("chain-config"))
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user