diff --git a/beacon-chain/rpc/beacon/attestations_test.go b/beacon-chain/rpc/beacon/attestations_test.go index c8b822919f43..6717b235b4cf 100644 --- a/beacon-chain/rpc/beacon/attestations_test.go +++ b/beacon-chain/rpc/beacon/attestations_test.go @@ -610,6 +610,8 @@ func TestServer_ListIndexedAttestations_NewStateManagnmentDisabled(t *testing.T) func TestServer_ListIndexedAttestations_GenesisEpoch(t *testing.T) { params.OverrideBeaconConfig(params.MainnetConfig()) defer params.OverrideBeaconConfig(params.MinimalSpecConfig()) + cfg := assertNewStateMgmtIsEnabled() + defer featureconfig.Init(cfg) db := dbTest.SetupDB(t) defer dbTest.TeardownDB(t, db) helpers.ClearCache() @@ -745,6 +747,8 @@ func TestServer_ListIndexedAttestations_GenesisEpoch(t *testing.T) { func TestServer_ListIndexedAttestations_OldEpoch(t *testing.T) { params.OverrideBeaconConfig(params.MainnetConfig()) defer params.OverrideBeaconConfig(params.MinimalSpecConfig()) + cfg := assertNewStateMgmtIsEnabled() + defer featureconfig.Init(cfg) db := dbTest.SetupDB(t) defer dbTest.TeardownDB(t, db) helpers.ClearCache() @@ -1226,3 +1230,14 @@ func TestServer_StreamAttestations_OnSlotTick(t *testing.T) { } <-exitRoutine } + +// assertNewStateMgmtIsEnabled asserts that state management feature is enabled. +func assertNewStateMgmtIsEnabled() *featureconfig.Flags { + cfg := featureconfig.Get() + if cfg.DisableNewStateMgmt { + cfgUpd := cfg.Copy() + cfgUpd.DisableNewStateMgmt = false + featureconfig.Init(cfgUpd) + } + return cfg +} diff --git a/shared/featureconfig/config.go b/shared/featureconfig/config.go index c87be39e95ba..124db05ae986 100644 --- a/shared/featureconfig/config.go +++ b/shared/featureconfig/config.go @@ -86,6 +86,45 @@ func Init(c *Flags) { featureConfig = c } +// Copy returns copy of the config object. +func (c *Flags) Copy() *Flags { + return &Flags{ + MinimalConfig: c.MinimalConfig, + WriteSSZStateTransitions: c.WriteSSZStateTransitions, + InitSyncNoVerify: c.InitSyncNoVerify, + DisableDynamicCommitteeSubnets: c.DisableNewStateMgmt, + SkipBLSVerify: c.SkipBLSVerify, + EnableBackupWebhook: c.EnableStateRefCopy, + PruneEpochBoundaryStates: c.PruneEpochBoundaryStates, + EnableSnappyDBCompression: c.EnableSnappyDBCompression, + ProtectProposer: c.ProtectProposer, + ProtectAttester: c.ProtectAttester, + DisableStrictAttestationPubsubVerification: c.DisableStrictAttestationPubsubVerification, + DisableUpdateHeadPerAttestation: c.DisableUpdateHeadPerAttestation, + EnableByteMempool: c.EnableByteMempool, + EnableDomainDataCache: c.EnableDomainDataCache, + EnableStateGenSigVerify: c.EnableStateGenSigVerify, + CheckHeadState: c.CheckHeadState, + EnableNoise: c.EnableNoise, + DontPruneStateStartUp: c.DontPruneStateStartUp, + DisableNewStateMgmt: c.DisableNewStateMgmt, + DisableInitSyncQueue: c.DisableInitSyncQueue, + EnableFieldTrie: c.EnableFieldTrie, + EnableBlockHTR: c.EnableBlockHTR, + NoInitSyncBatchSaveBlocks: c.NoInitSyncBatchSaveBlocks, + EnableStateRefCopy: c.EnableStateRefCopy, + WaitForSynced: c.WaitForSynced, + DisableForkChoice: c.DisableForkChoice, + BroadcastSlashings: c.BroadcastSlashings, + EnableSSZCache: c.EnableSSZCache, + EnableEth1DataVoteCache: c.EnableEth1DataVoteCache, + EnableSlasherConnection: c.EnableSlasherConnection, + EnableBlockTreeCache: c.EnableBlockTreeCache, + KafkaBootstrapServers: c.KafkaBootstrapServers, + CustomGenesisDelay: c.CustomGenesisDelay, + } +} + // ConfigureBeaconChain sets the global config based // on what flags are enabled for the beacon-chain client. func ConfigureBeaconChain(ctx *cli.Context) {