From a335bbbb6129ebd73dc292403385610e6923735f Mon Sep 17 00:00:00 2001 From: Nishant Das Date: Thu, 17 Sep 2020 14:11:21 +0800 Subject: [PATCH] Add Flag To Disable Initial Sync (#7258) * add new flag * terence's review --- beacon-chain/flags/base.go | 6 ++++++ beacon-chain/flags/config.go | 8 ++++++-- beacon-chain/main.go | 1 + beacon-chain/sync/initial-sync/service.go | 12 ++++++++++++ beacon-chain/usage.go | 1 + 5 files changed, 26 insertions(+), 2 deletions(-) diff --git a/beacon-chain/flags/base.go b/beacon-chain/flags/base.go index cd76219504..7a1a308aa4 100644 --- a/beacon-chain/flags/base.go +++ b/beacon-chain/flags/base.go @@ -119,6 +119,12 @@ var ( Usage: "The factor by which block batch limit may increase on burst.", Value: 10, } + // DisableSync disables a node from syncing at start-up. Instead the node enters regular sync + // immediately. + DisableSync = &cli.BoolFlag{ + Name: "disable-sync", + Usage: "Starts the beacon node without entering initial sync and instead exits to regular sync immediately.", + } // EnableDebugRPCEndpoints as /v1/beacon/state. EnableDebugRPCEndpoints = &cli.BoolFlag{ Name: "enable-debug-rpc-endpoints", diff --git a/beacon-chain/flags/config.go b/beacon-chain/flags/config.go index 22e9b7509b..d2201356d9 100644 --- a/beacon-chain/flags/config.go +++ b/beacon-chain/flags/config.go @@ -10,6 +10,7 @@ import ( // beacon node. type GlobalFlags struct { UnsafeSync bool + DisableSync bool DisableDiscv5 bool MinimumSyncPeers int BlockBatchLimit int @@ -36,11 +37,14 @@ func Init(c *GlobalFlags) { func ConfigureGlobalFlags(ctx *cli.Context) { cfg := &GlobalFlags{} if ctx.Bool(UnsafeSync.Name) { + log.Warn("Using Unsafe Sync flag, it is insecure to use this flag with your beacon node.") cfg.UnsafeSync = true } - if ctx.Bool(DisableDiscv5.Name) { - cfg.DisableDiscv5 = true + if ctx.Bool(DisableSync.Name) { + log.Warn("Using Disable Sync flag, using this flag on a live network might lead to adverse consequences.") + cfg.DisableSync = true } + cfg.DisableDiscv5 = ctx.Bool(DisableDiscv5.Name) cfg.BlockBatchLimit = ctx.Int(BlockBatchLimit.Name) cfg.BlockBatchLimitBurstFactor = ctx.Int(BlockBatchLimitBurstFactor.Name) configureMinimumPeers(ctx, cfg) diff --git a/beacon-chain/main.go b/beacon-chain/main.go index fc345d3063..fc8ad4fe7d 100644 --- a/beacon-chain/main.go +++ b/beacon-chain/main.go @@ -39,6 +39,7 @@ var appFlags = []cli.Flag{ flags.ContractDeploymentBlock, flags.SetGCPercent, flags.UnsafeSync, + flags.DisableSync, flags.DisableDiscv5, flags.BlockBatchLimit, flags.BlockBatchLimitBurstFactor, diff --git a/beacon-chain/sync/initial-sync/service.go b/beacon-chain/sync/initial-sync/service.go index 6a18469e50..2395069511 100644 --- a/beacon-chain/sync/initial-sync/service.go +++ b/beacon-chain/sync/initial-sync/service.go @@ -116,6 +116,18 @@ func (s *Service) Start() { genesis = time.Unix(int64(headState.GenesisTime()), 0) } + if flags.Get().DisableSync { + s.synced = true + s.stateNotifier.StateFeed().Send(&feed.Event{ + Type: statefeed.Synced, + Data: &statefeed.SyncedData{ + StartTime: genesis, + }, + }) + log.WithField("genesisTime", genesis).Info("Due to Sync Being Disabled, entering regular sync immediately.") + return + } + if genesis.After(roughtime.Now()) { s.synced = true s.stateNotifier.StateFeed().Send(&feed.Event{ diff --git a/beacon-chain/usage.go b/beacon-chain/usage.go index 4d15fafe87..7aee0ab98f 100644 --- a/beacon-chain/usage.go +++ b/beacon-chain/usage.go @@ -98,6 +98,7 @@ var appHelpFlagGroups = []flagGroup{ flags.HTTPWeb3ProviderFlag, flags.SetGCPercent, flags.UnsafeSync, + flags.DisableSync, flags.SlotsPerArchivedPoint, flags.DisableDiscv5, flags.BlockBatchLimit,