mirror of
https://github.com/OffchainLabs/prysm.git
synced 2026-01-09 15:37:56 -05:00
Add Flag For Minimum Handshakes (#4280)
* add flag * jim and preston's review * check max peers * gaz * Merge branch 'master' of https://github.com/prysmaticlabs/geth-sharding into minStatusCount * remove space * add references * add warning log * change log * gaz
This commit is contained in:
committed by
prylabs-bulldozer[bot]
parent
a5881f924f
commit
c5dcf49ded
@@ -10,5 +10,9 @@ go_library(
|
||||
],
|
||||
importpath = "github.com/prysmaticlabs/prysm/beacon-chain/flags",
|
||||
visibility = ["//beacon-chain:__subpackages__"],
|
||||
deps = ["@com_github_urfave_cli//:go_default_library"],
|
||||
deps = [
|
||||
"//shared/cmd:go_default_library",
|
||||
"@com_github_sirupsen_logrus//:go_default_library",
|
||||
"@com_github_urfave_cli//:go_default_library",
|
||||
],
|
||||
)
|
||||
|
||||
@@ -48,4 +48,12 @@ var (
|
||||
Name: "grpc-gateway-port",
|
||||
Usage: "Enable gRPC gateway for JSON requests",
|
||||
}
|
||||
|
||||
// MinSyncPeers specifies the required number of successful peer handshakes in order
|
||||
// to start syncing with external peers.
|
||||
MinSyncPeers = cli.IntFlag{
|
||||
Name: "min-sync-peers",
|
||||
Usage: "The required number of valid peers to connect with before syncing.",
|
||||
Value: 3,
|
||||
}
|
||||
)
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
package flags
|
||||
|
||||
import (
|
||||
"github.com/prysmaticlabs/prysm/shared/cmd"
|
||||
log "github.com/sirupsen/logrus"
|
||||
"github.com/urfave/cli"
|
||||
)
|
||||
|
||||
@@ -11,6 +13,7 @@ type GlobalFlags struct {
|
||||
EnableArchivedValidatorSetChanges bool
|
||||
EnableArchivedBlocks bool
|
||||
EnableArchivedAttestations bool
|
||||
MinimumSyncPeers int
|
||||
}
|
||||
|
||||
var globalConfig *GlobalFlags
|
||||
@@ -44,5 +47,16 @@ func ConfigureGlobalFlags(ctx *cli.Context) {
|
||||
if ctx.GlobalBool(ArchiveAttestationsFlag.Name) {
|
||||
cfg.EnableArchivedAttestations = true
|
||||
}
|
||||
configureMinimumPeers(ctx, cfg)
|
||||
|
||||
Init(cfg)
|
||||
}
|
||||
|
||||
func configureMinimumPeers(ctx *cli.Context, cfg *GlobalFlags) {
|
||||
cfg.MinimumSyncPeers = ctx.GlobalInt(MinSyncPeers.Name)
|
||||
maxPeers := int(ctx.GlobalInt64(cmd.P2PMaxPeers.Name))
|
||||
if cfg.MinimumSyncPeers > maxPeers {
|
||||
log.Warnf("Changing Minimum Sync Peers to %d", maxPeers)
|
||||
cfg.MinimumSyncPeers = maxPeers
|
||||
}
|
||||
}
|
||||
|
||||
@@ -32,6 +32,7 @@ var appFlags = []cli.Flag{
|
||||
flags.CertFlag,
|
||||
flags.KeyFlag,
|
||||
flags.GRPCGatewayPort,
|
||||
flags.MinSyncPeers,
|
||||
flags.InteropMockEth1DataVotesFlag,
|
||||
flags.InteropGenesisStateFlag,
|
||||
flags.InteropNumValidatorsFlag,
|
||||
|
||||
@@ -15,6 +15,7 @@ go_library(
|
||||
"//beacon-chain/core/feed/state:go_default_library",
|
||||
"//beacon-chain/core/helpers:go_default_library",
|
||||
"//beacon-chain/db:go_default_library",
|
||||
"//beacon-chain/flags:go_default_library",
|
||||
"//beacon-chain/p2p:go_default_library",
|
||||
"//beacon-chain/sync:go_default_library",
|
||||
"//proto/beacon/p2p/v1:go_default_library",
|
||||
|
||||
@@ -11,6 +11,7 @@ import (
|
||||
statefeed "github.com/prysmaticlabs/prysm/beacon-chain/core/feed/state"
|
||||
"github.com/prysmaticlabs/prysm/beacon-chain/core/helpers"
|
||||
"github.com/prysmaticlabs/prysm/beacon-chain/db"
|
||||
"github.com/prysmaticlabs/prysm/beacon-chain/flags"
|
||||
"github.com/prysmaticlabs/prysm/beacon-chain/p2p"
|
||||
"github.com/prysmaticlabs/prysm/shared"
|
||||
"github.com/prysmaticlabs/prysm/shared/params"
|
||||
@@ -25,7 +26,6 @@ type blockchainService interface {
|
||||
}
|
||||
|
||||
const (
|
||||
minStatusCount = 3 // TODO(3147): Set this to more than 3, maybe configure from flag?
|
||||
handshakePollingInterval = 5 * time.Second // Polling interval for checking the number of received handshakes.
|
||||
)
|
||||
|
||||
@@ -118,12 +118,12 @@ func (s *InitialSync) Start() {
|
||||
// Every 5 sec, report handshake count.
|
||||
for {
|
||||
count := len(s.p2p.Peers().Connected())
|
||||
if count >= minStatusCount {
|
||||
if count >= flags.Get().MinimumSyncPeers {
|
||||
break
|
||||
}
|
||||
log.WithField(
|
||||
"handshakes",
|
||||
fmt.Sprintf("%d/%d", count, minStatusCount),
|
||||
fmt.Sprintf("%d/%d", count, flags.Get().MinimumSyncPeers),
|
||||
).Info("Waiting for enough peer handshakes before syncing")
|
||||
time.Sleep(handshakePollingInterval)
|
||||
}
|
||||
|
||||
@@ -98,6 +98,7 @@ var appHelpFlagGroups = []flagGroup{
|
||||
cmd.StaticPeers,
|
||||
cmd.EnableUPnPFlag,
|
||||
cmd.P2PEncoding,
|
||||
flags.MinSyncPeers,
|
||||
},
|
||||
},
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user