Disable caches, allow toggle via feature flag (#3107)

This commit is contained in:
Preston Van Loon
2019-07-29 23:38:05 -04:00
committed by terence tsao
parent 68f29967f3
commit 63cf0f07a2
18 changed files with 179 additions and 4 deletions

View File

@@ -27,9 +27,17 @@ var log = logrus.WithField("prefix", "flags")
type FeatureFlagConfig struct {
DisableHistoricalStatePruning bool // DisableHistoricalStatePruning when updating finalized states.
DisableGossipSub bool // DisableGossipSub in p2p messaging.
EnableCommitteesCache bool // EnableCommitteesCache for state transition.
EnableExcessDeposits bool // EnableExcessDeposits in validator balances.
NoGenesisDelay bool // NoGenesisDelay when processing a chain start genesis event.
// Cache toggles.
EnableActiveBalanceCache bool // EnableActiveBalanceCache; see https://github.com/prysmaticlabs/prysm/issues/3106.
EnableAttestationCache bool // EnableAttestationCache; see https://github.com/prysmaticlabs/prysm/issues/3106.
EnableAncestorBlockCache bool // EnableAncestorBlockCache; see https://github.com/prysmaticlabs/prysm/issues/3106.
EnableEth1DataVoteCache bool // EnableEth1DataVoteCache; see https://github.com/prysmaticlabs/prysm/issues/3106.
EnableSeedCache bool // EnableSeedCache; see https://github.com/prysmaticlabs/prysm/issues/3106.
EnableStartShardCache bool // EnableStartShardCache; see https://github.com/prysmaticlabs/prysm/issues/3106.
EnableTotalBalanceCache bool // EnableTotalBalanceCache; see https://github.com/prysmaticlabs/prysm/issues/3106.
}
var featureConfig *FeatureFlagConfig
@@ -63,6 +71,34 @@ func ConfigureBeaconFeatures(ctx *cli.Context) {
log.Warn("Using non standard genesis delay. This may cause problems in a multi-node environment.")
cfg.NoGenesisDelay = true
}
if ctx.GlobalBool(EnableActiveBalanceCacheFlag.Name) {
log.Warn("Enabled unsafe active balance cache")
cfg.EnableActiveBalanceCache = true
}
if ctx.GlobalBool(EnableAttestationCacheFlag.Name) {
log.Warn("Enabled unsafe attestation cache")
cfg.EnableAttestationCache = true
}
if ctx.GlobalBool(EnableAncestorBlockCacheFlag.Name) {
log.Warn("Enabled unsafe ancestor block cache")
cfg.EnableAncestorBlockCache = true
}
if ctx.GlobalBool(EnableEth1DataVoteCacheFlag.Name) {
log.Warn("Enabled unsafe eth1 data vote cache")
cfg.EnableEth1DataVoteCache = true
}
if ctx.GlobalBool(EnableSeedCacheFlag.Name) {
log.Warn("Enabled unsafe seed cache")
cfg.EnableSeedCache = true
}
if ctx.GlobalBool(EnableStartShardCacheFlag.Name) {
log.Warn("Enabled unsafe start shard cache")
cfg.EnableStartShardCache = true
}
if ctx.GlobalBool(EnableTotalBalanceCacheFlag.Name) {
log.Warn("Enabled unsafe total balance cache")
cfg.EnableTotalBalanceCache = true
}
InitFeatureConfig(cfg)
}

View File

@@ -31,6 +31,41 @@ var (
Name: "no-genesis-delay",
Usage: "Process genesis event 30s after the ETH1 block time, rather than wait to midnight of the next day.",
}
// EnableActiveBalanceCacheFlag see https://github.com/prysmaticlabs/prysm/issues/3106.
EnableActiveBalanceCacheFlag = cli.BoolFlag{
Name: "enable-active-balance-cache",
Usage: "Enable unsafe cache mechanism. See https://github.com/prysmaticlabs/prysm/issues/3106",
}
// EnableAttestationCacheFlag see https://github.com/prysmaticlabs/prysm/issues/3106.
EnableAttestationCacheFlag = cli.BoolFlag{
Name: "enable-attestation-cache",
Usage: "Enable unsafe cache mechanism. See https://github.com/prysmaticlabs/prysm/issues/3106",
}
// EnableAncestorBlockCacheFlag see https://github.com/prysmaticlabs/prysm/issues/3106.
EnableAncestorBlockCacheFlag = cli.BoolFlag{
Name: "enable-ancestor-block-cache",
Usage: "Enable unsafe cache mechanism. See https://github.com/prysmaticlabs/prysm/issues/3106",
}
// EnableEth1DataVoteCacheFlag see https://github.com/prysmaticlabs/prysm/issues/3106.
EnableEth1DataVoteCacheFlag = cli.BoolFlag{
Name: "enable-eth1-data-vote-cache",
Usage: "Enable unsafe cache mechanism. See https://github.com/prysmaticlabs/prysm/issues/3106",
}
// EnableSeedCacheFlag see https://github.com/prysmaticlabs/prysm/issues/3106.
EnableSeedCacheFlag = cli.BoolFlag{
Name: "enable-seed-cache",
Usage: "Enable unsafe cache mechanism. See https://github.com/prysmaticlabs/prysm/issues/3106",
}
// EnableStartShardCacheFlag see https://github.com/prysmaticlabs/prysm/issues/3106.
EnableStartShardCacheFlag = cli.BoolFlag{
Name: "enable-start-shard-cache",
Usage: "Enable unsafe cache mechanism. See https://github.com/prysmaticlabs/prysm/issues/3106",
}
// EnableTotalBalanceCacheFlag see https://github.com/prysmaticlabs/prysm/issues/3106.
EnableTotalBalanceCacheFlag = cli.BoolFlag{
Name: "enable-total-balance-cache",
Usage: "Enable unsafe cache mechanism. See https://github.com/prysmaticlabs/prysm/issues/3106",
}
)
// ValidatorFlags contains a list of all the feature flags that apply to the validator client.
@@ -43,4 +78,11 @@ var BeaconChainFlags = []cli.Flag{
DisableGossipSubFlag,
EnableExcessDepositsFlag,
NoGenesisDelayFlag,
EnableActiveBalanceCacheFlag,
EnableAttestationCacheFlag,
EnableAncestorBlockCacheFlag,
EnableEth1DataVoteCacheFlag,
EnableSeedCacheFlag,
EnableStartShardCacheFlag,
EnableTotalBalanceCacheFlag,
}