diff --git a/epochStart/metachain/systemSCs_test.go b/epochStart/metachain/systemSCs_test.go index dabf1a862d3..884878ad685 100644 --- a/epochStart/metachain/systemSCs_test.go +++ b/epochStart/metachain/systemSCs_test.go @@ -36,6 +36,7 @@ import ( "github.com/multiversx/mx-chain-go/process/smartContract/hooks" "github.com/multiversx/mx-chain-go/sharding" "github.com/multiversx/mx-chain-go/state" + disabledState "github.com/multiversx/mx-chain-go/state/disabled" "github.com/multiversx/mx-chain-go/state/factory" "github.com/multiversx/mx-chain-go/state/storagePruningManager" "github.com/multiversx/mx-chain-go/state/storagePruningManager/evictionWaitingList" @@ -904,10 +905,8 @@ func createAccountsDB( Marshaller: marshaller, AccountFactory: accountFactory, StoragePruningManager: spm, - ProcessingMode: common.Normal, - ProcessStatusHandler: &testscommon.ProcessStatusHandlerStub{}, - AppStatusHandler: &statusHandlerMock.AppStatusHandlerStub{}, AddressConverter: &testscommon.PubkeyConverterMock{}, + SnapshotsManager: disabledState.NewDisabledSnapshotsManager(), } adb, _ := state.NewAccountsDB(args) return adb diff --git a/factory/api/apiResolverFactory.go b/factory/api/apiResolverFactory.go index 9a4e734daf5..c156c546ad7 100644 --- a/factory/api/apiResolverFactory.go +++ b/factory/api/apiResolverFactory.go @@ -36,6 +36,7 @@ import ( "github.com/multiversx/mx-chain-go/sharding" "github.com/multiversx/mx-chain-go/state" "github.com/multiversx/mx-chain-go/state/blockInfoProviders" + disabledState "github.com/multiversx/mx-chain-go/state/disabled" factoryState "github.com/multiversx/mx-chain-go/state/factory" "github.com/multiversx/mx-chain-go/state/storagePruningManager" "github.com/multiversx/mx-chain-go/state/storagePruningManager/evictionWaitingList" @@ -584,10 +585,8 @@ func createNewAccountsAdapterApi(args *scQueryElementArgs, chainHandler data.Cha Marshaller: args.coreComponents.InternalMarshalizer(), AccountFactory: accountFactory, StoragePruningManager: storagePruning, - ProcessingMode: args.processingMode, - ProcessStatusHandler: args.coreComponents.ProcessStatusHandler(), - AppStatusHandler: args.statusCoreComponents.AppStatusHandler(), AddressConverter: args.coreComponents.AddressPubKeyConverter(), + SnapshotsManager: disabledState.NewDisabledSnapshotsManager(), } provider, err := blockInfoProviders.NewCurrentBlockInfo(chainHandler) diff --git a/factory/processing/blockProcessorCreator_test.go b/factory/processing/blockProcessorCreator_test.go index 80e51fe1ce1..dd58982a791 100644 --- a/factory/processing/blockProcessorCreator_test.go +++ b/factory/processing/blockProcessorCreator_test.go @@ -14,13 +14,13 @@ import ( processComp "github.com/multiversx/mx-chain-go/factory/processing" "github.com/multiversx/mx-chain-go/state" "github.com/multiversx/mx-chain-go/state/accounts" + disabledState "github.com/multiversx/mx-chain-go/state/disabled" factoryState "github.com/multiversx/mx-chain-go/state/factory" "github.com/multiversx/mx-chain-go/state/storagePruningManager/disabled" "github.com/multiversx/mx-chain-go/testscommon" componentsMock "github.com/multiversx/mx-chain-go/testscommon/components" "github.com/multiversx/mx-chain-go/testscommon/hashingMocks" stateMock "github.com/multiversx/mx-chain-go/testscommon/state" - "github.com/multiversx/mx-chain-go/testscommon/statusHandler" storageManager "github.com/multiversx/mx-chain-go/testscommon/storage" trieMock "github.com/multiversx/mx-chain-go/testscommon/trie" "github.com/multiversx/mx-chain-go/trie" @@ -203,10 +203,8 @@ func createAccountAdapter( Marshaller: marshaller, AccountFactory: accountFactory, StoragePruningManager: disabled.NewDisabledStoragePruningManager(), - ProcessingMode: common.Normal, - ProcessStatusHandler: &testscommon.ProcessStatusHandlerStub{}, - AppStatusHandler: &statusHandler.AppStatusHandlerStub{}, AddressConverter: &testscommon.PubkeyConverterMock{}, + SnapshotsManager: disabledState.NewDisabledSnapshotsManager(), } adb, err := state.NewAccountsDB(args) if err != nil { diff --git a/factory/state/stateComponents.go b/factory/state/stateComponents.go index 54728a55947..8da3251e230 100644 --- a/factory/state/stateComponents.go +++ b/factory/state/stateComponents.go @@ -2,7 +2,6 @@ package state import ( "fmt" - "github.com/multiversx/mx-chain-core-go/core/check" chainData "github.com/multiversx/mx-chain-core-go/data" "github.com/multiversx/mx-chain-go/common" @@ -11,7 +10,11 @@ import ( "github.com/multiversx/mx-chain-go/errors" "github.com/multiversx/mx-chain-go/factory" "github.com/multiversx/mx-chain-go/state" + "github.com/multiversx/mx-chain-go/state/disabled" factoryState "github.com/multiversx/mx-chain-go/state/factory" + "github.com/multiversx/mx-chain-go/state/iteratorChannelsProvider" + "github.com/multiversx/mx-chain-go/state/lastSnapshotMarker" + "github.com/multiversx/mx-chain-go/state/stateMetrics" "github.com/multiversx/mx-chain-go/state/storagePruningManager" "github.com/multiversx/mx-chain-go/state/storagePruningManager/evictionWaitingList" "github.com/multiversx/mx-chain-go/state/syncer" @@ -108,6 +111,30 @@ func (scf *stateComponentsFactory) Create() (*stateComponents, error) { }, nil } +func (scf *stateComponentsFactory) createSnapshotManager( + accountFactory state.AccountFactory, + stateMetrics state.StateMetrics, + iteratorChannelsProvider state.IteratorChannelsProvider, +) (state.SnapshotsManager, error) { + if !scf.config.StateTriesConfig.SnapshotsEnabled { + return disabled.NewDisabledSnapshotsManager(), nil + } + + argsSnapshotsManager := state.ArgsNewSnapshotsManager{ + ShouldSerializeSnapshots: scf.shouldSerializeSnapshots, + ProcessingMode: scf.processingMode, + Marshaller: scf.core.InternalMarshalizer(), + AddressConverter: scf.core.AddressPubKeyConverter(), + ProcessStatusHandler: scf.core.ProcessStatusHandler(), + StateMetrics: stateMetrics, + ChannelsProvider: iteratorChannelsProvider, + AccountFactory: accountFactory, + LastSnapshotMarker: lastSnapshotMarker.NewLastSnapshotMarker(), + StateStatsHandler: scf.statusCore.StateStatsHandler(), + } + return state.NewSnapshotsManager(argsSnapshotsManager) +} + func (scf *stateComponentsFactory) createAccountsAdapters(triesContainer common.TriesHolder) (state.AccountsAdapter, state.AccountsAdapter, state.AccountsRepository, error) { argsAccCreator := factoryState.ArgsAccountCreator{ Hasher: scf.core.Hasher(), @@ -125,17 +152,29 @@ func (scf *stateComponentsFactory) createAccountsAdapters(triesContainer common. return nil, nil, nil, err } + argStateMetrics := stateMetrics.ArgsStateMetrics{ + SnapshotInProgressKey: common.MetricAccountsSnapshotInProgress, + LastSnapshotDurationKey: common.MetricLastAccountsSnapshotDurationSec, + SnapshotMessage: stateMetrics.UserTrieSnapshotMsg, + } + sm, err := stateMetrics.NewStateMetrics(argStateMetrics, scf.statusCore.AppStatusHandler()) + if err != nil { + return nil, nil, nil, err + } + + snapshotsManager, err := scf.createSnapshotManager(accountFactory, sm, iteratorChannelsProvider.NewUserStateIteratorChannelsProvider()) + if err != nil { + return nil, nil, nil, err + } + argsProcessingAccountsDB := state.ArgsAccountsDB{ - Trie: merkleTrie, - Hasher: scf.core.Hasher(), - Marshaller: scf.core.InternalMarshalizer(), - AccountFactory: accountFactory, - StoragePruningManager: storagePruning, - ProcessingMode: scf.processingMode, - ShouldSerializeSnapshots: scf.shouldSerializeSnapshots, - ProcessStatusHandler: scf.core.ProcessStatusHandler(), - AppStatusHandler: scf.statusCore.AppStatusHandler(), - AddressConverter: scf.core.AddressPubKeyConverter(), + Trie: merkleTrie, + Hasher: scf.core.Hasher(), + Marshaller: scf.core.InternalMarshalizer(), + AccountFactory: accountFactory, + StoragePruningManager: storagePruning, + AddressConverter: scf.core.AddressPubKeyConverter(), + SnapshotsManager: snapshotsManager, } accountsAdapter, err := state.NewAccountsDB(argsProcessingAccountsDB) if err != nil { @@ -148,10 +187,8 @@ func (scf *stateComponentsFactory) createAccountsAdapters(triesContainer common. Marshaller: scf.core.InternalMarshalizer(), AccountFactory: accountFactory, StoragePruningManager: storagePruning, - ProcessingMode: scf.processingMode, - ProcessStatusHandler: scf.core.ProcessStatusHandler(), - AppStatusHandler: scf.statusCore.AppStatusHandler(), AddressConverter: scf.core.AddressPubKeyConverter(), + SnapshotsManager: disabled.NewDisabledSnapshotsManager(), } accountsAdapterApiOnFinal, err := factoryState.CreateAccountsAdapterAPIOnFinal(argsAPIAccountsDB, scf.chainHandler) @@ -191,17 +228,29 @@ func (scf *stateComponentsFactory) createPeerAdapter(triesContainer common.Tries return nil, err } + argStateMetrics := stateMetrics.ArgsStateMetrics{ + SnapshotInProgressKey: common.MetricPeersSnapshotInProgress, + LastSnapshotDurationKey: common.MetricLastPeersSnapshotDurationSec, + SnapshotMessage: stateMetrics.PeerTrieSnapshotMsg, + } + sm, err := stateMetrics.NewStateMetrics(argStateMetrics, scf.statusCore.AppStatusHandler()) + if err != nil { + return nil, err + } + + snapshotManager, err := scf.createSnapshotManager(accountFactory, sm, iteratorChannelsProvider.NewPeerStateIteratorChannelsProvider()) + if err != nil { + return nil, err + } + argsProcessingPeerAccountsDB := state.ArgsAccountsDB{ - Trie: merkleTrie, - Hasher: scf.core.Hasher(), - Marshaller: scf.core.InternalMarshalizer(), - AccountFactory: accountFactory, - StoragePruningManager: storagePruning, - ProcessingMode: scf.processingMode, - ShouldSerializeSnapshots: scf.shouldSerializeSnapshots, - ProcessStatusHandler: scf.core.ProcessStatusHandler(), - AppStatusHandler: scf.statusCore.AppStatusHandler(), - AddressConverter: scf.core.AddressPubKeyConverter(), + Trie: merkleTrie, + Hasher: scf.core.Hasher(), + Marshaller: scf.core.InternalMarshalizer(), + AccountFactory: accountFactory, + StoragePruningManager: storagePruning, + AddressConverter: scf.core.AddressPubKeyConverter(), + SnapshotsManager: snapshotManager, } peerAdapter, err := state.NewPeerAccountsDB(argsProcessingPeerAccountsDB) if err != nil { diff --git a/genesis/process/memoryComponents.go b/genesis/process/memoryComponents.go index 623c6f69f12..f996faa81ed 100644 --- a/genesis/process/memoryComponents.go +++ b/genesis/process/memoryComponents.go @@ -5,8 +5,8 @@ import ( "github.com/multiversx/mx-chain-core-go/hashing" "github.com/multiversx/mx-chain-core-go/marshal" "github.com/multiversx/mx-chain-go/common" - commonDisabled "github.com/multiversx/mx-chain-go/common/disabled" "github.com/multiversx/mx-chain-go/state" + disabledState "github.com/multiversx/mx-chain-go/state/disabled" "github.com/multiversx/mx-chain-go/state/storagePruningManager/disabled" "github.com/multiversx/mx-chain-go/trie" ) @@ -32,10 +32,8 @@ func createAccountAdapter( Marshaller: marshaller, AccountFactory: accountFactory, StoragePruningManager: disabled.NewDisabledStoragePruningManager(), - ProcessingMode: common.Normal, - ProcessStatusHandler: commonDisabled.NewProcessStatusHandler(), - AppStatusHandler: commonDisabled.NewAppStatusHandler(), AddressConverter: addressConverter, + SnapshotsManager: disabledState.NewDisabledSnapshotsManager(), } adb, err := state.NewAccountsDB(args) diff --git a/integrationTests/state/stateTrie/stateTrie_test.go b/integrationTests/state/stateTrie/stateTrie_test.go index df4c1623616..b069f31f5a2 100644 --- a/integrationTests/state/stateTrie/stateTrie_test.go +++ b/integrationTests/state/stateTrie/stateTrie_test.go @@ -24,6 +24,7 @@ import ( "github.com/multiversx/mx-chain-core-go/hashing/sha256" crypto "github.com/multiversx/mx-chain-crypto-go" "github.com/multiversx/mx-chain-go/common" + "github.com/multiversx/mx-chain-go/common/statistics" "github.com/multiversx/mx-chain-go/config" "github.com/multiversx/mx-chain-go/dataRetriever" "github.com/multiversx/mx-chain-go/epochStart" @@ -32,13 +33,16 @@ import ( "github.com/multiversx/mx-chain-go/sharding" "github.com/multiversx/mx-chain-go/state" "github.com/multiversx/mx-chain-go/state/factory" + "github.com/multiversx/mx-chain-go/state/iteratorChannelsProvider" + "github.com/multiversx/mx-chain-go/state/lastSnapshotMarker" "github.com/multiversx/mx-chain-go/state/storagePruningManager" "github.com/multiversx/mx-chain-go/state/storagePruningManager/evictionWaitingList" "github.com/multiversx/mx-chain-go/storage" "github.com/multiversx/mx-chain-go/storage/storageunit" "github.com/multiversx/mx-chain-go/testscommon" "github.com/multiversx/mx-chain-go/testscommon/enableEpochsHandlerMock" - "github.com/multiversx/mx-chain-go/testscommon/statusHandler" + "github.com/multiversx/mx-chain-go/testscommon/marshallerMock" + stateMock "github.com/multiversx/mx-chain-go/testscommon/state" testStorage "github.com/multiversx/mx-chain-go/testscommon/storage" "github.com/multiversx/mx-chain-go/trie" vmcommon "github.com/multiversx/mx-chain-vm-common-go" @@ -1056,16 +1060,25 @@ func createAccounts( EnableEpochsHandler: &enableEpochsHandlerMock.EnableEpochsHandlerStub{}, } accCreator, _ := factory.NewAccountCreator(argsAccCreator) + snapshotsManager, _ := state.NewSnapshotsManager(state.ArgsNewSnapshotsManager{ + ProcessingMode: common.Normal, + Marshaller: &marshallerMock.MarshalizerMock{}, + AddressConverter: &testscommon.PubkeyConverterMock{}, + ProcessStatusHandler: &testscommon.ProcessStatusHandlerStub{}, + StateMetrics: &stateMock.StateMetricsStub{}, + AccountFactory: accCreator, + ChannelsProvider: iteratorChannelsProvider.NewUserStateIteratorChannelsProvider(), + LastSnapshotMarker: lastSnapshotMarker.NewLastSnapshotMarker(), + StateStatsHandler: statistics.NewStateStatistics(), + }) argsAccountsDB := state.ArgsAccountsDB{ Trie: tr, Hasher: integrationTests.TestHasher, Marshaller: integrationTests.TestMarshalizer, AccountFactory: accCreator, StoragePruningManager: spm, - ProcessingMode: common.Normal, - ProcessStatusHandler: &testscommon.ProcessStatusHandlerStub{}, - AppStatusHandler: &statusHandler.AppStatusHandlerStub{}, AddressConverter: &testscommon.PubkeyConverterMock{}, + SnapshotsManager: snapshotsManager, } adb, _ := state.NewAccountsDB(argsAccountsDB) @@ -2502,16 +2515,26 @@ func createAccountsDBTestSetup() *state.AccountsDB { } accCreator, _ := factory.NewAccountCreator(argsAccCreator) + snapshotsManager, _ := state.NewSnapshotsManager(state.ArgsNewSnapshotsManager{ + ProcessingMode: common.Normal, + Marshaller: &marshallerMock.MarshalizerMock{}, + AddressConverter: &testscommon.PubkeyConverterMock{}, + ProcessStatusHandler: &testscommon.ProcessStatusHandlerStub{}, + StateMetrics: &stateMock.StateMetricsStub{}, + AccountFactory: accCreator, + ChannelsProvider: iteratorChannelsProvider.NewUserStateIteratorChannelsProvider(), + LastSnapshotMarker: lastSnapshotMarker.NewLastSnapshotMarker(), + StateStatsHandler: statistics.NewStateStatistics(), + }) + argsAccountsDB := state.ArgsAccountsDB{ Trie: tr, Hasher: integrationTests.TestHasher, Marshaller: integrationTests.TestMarshalizer, AccountFactory: accCreator, StoragePruningManager: spm, - ProcessingMode: common.Normal, - ProcessStatusHandler: &testscommon.ProcessStatusHandlerStub{}, - AppStatusHandler: &statusHandler.AppStatusHandlerStub{}, AddressConverter: &testscommon.PubkeyConverterMock{}, + SnapshotsManager: snapshotsManager, } adb, _ := state.NewAccountsDB(argsAccountsDB) diff --git a/integrationTests/testInitializer.go b/integrationTests/testInitializer.go index 3de7877e0e7..4c86c54fb60 100644 --- a/integrationTests/testInitializer.go +++ b/integrationTests/testInitializer.go @@ -29,6 +29,7 @@ import ( "github.com/multiversx/mx-chain-crypto-go/signing/mcl" "github.com/multiversx/mx-chain-crypto-go/signing/secp256k1" "github.com/multiversx/mx-chain-go/common" + "github.com/multiversx/mx-chain-go/common/statistics" "github.com/multiversx/mx-chain-go/config" "github.com/multiversx/mx-chain-go/dataRetriever" "github.com/multiversx/mx-chain-go/dataRetriever/blockchain" @@ -49,6 +50,8 @@ import ( "github.com/multiversx/mx-chain-go/state" "github.com/multiversx/mx-chain-go/state/accounts" "github.com/multiversx/mx-chain-go/state/factory" + "github.com/multiversx/mx-chain-go/state/iteratorChannelsProvider" + "github.com/multiversx/mx-chain-go/state/lastSnapshotMarker" "github.com/multiversx/mx-chain-go/state/parsers" "github.com/multiversx/mx-chain-go/state/storagePruningManager" "github.com/multiversx/mx-chain-go/state/storagePruningManager/evictionWaitingList" @@ -67,7 +70,6 @@ import ( "github.com/multiversx/mx-chain-go/testscommon/marshallerMock" "github.com/multiversx/mx-chain-go/testscommon/p2pmocks" testStorage "github.com/multiversx/mx-chain-go/testscommon/state" - "github.com/multiversx/mx-chain-go/testscommon/statusHandler" statusHandlerMock "github.com/multiversx/mx-chain-go/testscommon/statusHandler" testcommonStorage "github.com/multiversx/mx-chain-go/testscommon/storage" "github.com/multiversx/mx-chain-go/testscommon/txDataBuilder" @@ -454,16 +456,27 @@ func CreateAccountsDBWithEnableEpochsHandler( ewl, _ := evictionWaitingList.NewMemoryEvictionWaitingList(ewlArgs) accountFactory, _ := getAccountFactory(accountType, enableEpochsHandler) spm, _ := storagePruningManager.NewStoragePruningManager(ewl, 10) + + snapshotsManager, _ := state.NewSnapshotsManager(state.ArgsNewSnapshotsManager{ + ProcessingMode: common.Normal, + Marshaller: TestMarshalizer, + AddressConverter: &testscommon.PubkeyConverterMock{}, + ProcessStatusHandler: &testscommon.ProcessStatusHandlerStub{}, + StateMetrics: &testStorage.StateMetricsStub{}, + AccountFactory: accountFactory, + ChannelsProvider: iteratorChannelsProvider.NewUserStateIteratorChannelsProvider(), + LastSnapshotMarker: lastSnapshotMarker.NewLastSnapshotMarker(), + StateStatsHandler: statistics.NewStateStatistics(), + }) + args := state.ArgsAccountsDB{ Trie: tr, Hasher: sha256.NewSha256(), Marshaller: TestMarshalizer, AccountFactory: accountFactory, StoragePruningManager: spm, - ProcessingMode: common.Normal, - ProcessStatusHandler: &testscommon.ProcessStatusHandlerStub{}, - AppStatusHandler: &statusHandler.AppStatusHandlerStub{}, AddressConverter: &testscommon.PubkeyConverterMock{}, + SnapshotsManager: snapshotsManager, } adb, _ := state.NewAccountsDB(args) diff --git a/state/accountsDB.go b/state/accountsDB.go index 0584d838888..06fb88eac3a 100644 --- a/state/accountsDB.go +++ b/state/accountsDB.go @@ -18,10 +18,7 @@ import ( "github.com/multiversx/mx-chain-go/common" "github.com/multiversx/mx-chain-go/common/errChan" "github.com/multiversx/mx-chain-go/common/holders" - "github.com/multiversx/mx-chain-go/state/iteratorChannelsProvider" - "github.com/multiversx/mx-chain-go/state/lastSnapshotMarker" "github.com/multiversx/mx-chain-go/state/parsers" - "github.com/multiversx/mx-chain-go/state/stateMetrics" "github.com/multiversx/mx-chain-go/trie/keyBuilder" "github.com/multiversx/mx-chain-go/trie/statistics" logger "github.com/multiversx/mx-chain-logger-go" @@ -98,16 +95,13 @@ var log = logger.GetOrCreate("state") // ArgsAccountsDB is the arguments DTO for the AccountsDB instance type ArgsAccountsDB struct { - Trie common.Trie - Hasher hashing.Hasher - Marshaller marshal.Marshalizer - AccountFactory AccountFactory - StoragePruningManager StoragePruningManager - ProcessingMode common.NodeProcessingMode - ShouldSerializeSnapshots bool - ProcessStatusHandler common.ProcessStatusHandler - AppStatusHandler core.AppStatusHandler - AddressConverter core.PubkeyConverter + Trie common.Trie + Hasher hashing.Hasher + Marshaller marshal.Marshalizer + AccountFactory AccountFactory + StoragePruningManager StoragePruningManager + AddressConverter core.PubkeyConverter + SnapshotsManager SnapshotsManager } // NewAccountsDB creates a new account manager @@ -117,37 +111,10 @@ func NewAccountsDB(args ArgsAccountsDB) (*AccountsDB, error) { return nil, err } - argStateMetrics := stateMetrics.ArgsStateMetrics{ - SnapshotInProgressKey: common.MetricAccountsSnapshotInProgress, - LastSnapshotDurationKey: common.MetricLastAccountsSnapshotDurationSec, - SnapshotMessage: stateMetrics.UserTrieSnapshotMsg, - } - sm, err := stateMetrics.NewStateMetrics(argStateMetrics, args.AppStatusHandler) - if err != nil { - return nil, err - } - - argsSnapshotsManager := ArgsNewSnapshotsManager{ - ShouldSerializeSnapshots: args.ShouldSerializeSnapshots, - ProcessingMode: args.ProcessingMode, - Marshaller: args.Marshaller, - AddressConverter: args.AddressConverter, - ProcessStatusHandler: args.ProcessStatusHandler, - StateMetrics: sm, - ChannelsProvider: iteratorChannelsProvider.NewUserStateIteratorChannelsProvider(), - AccountFactory: args.AccountFactory, - StateStatsHandler: args.Trie.GetStorageManager().GetStateStatsHandler(), - LastSnapshotMarker: lastSnapshotMarker.NewLastSnapshotMarker(), - } - snapshotManager, err := NewSnapshotsManager(argsSnapshotsManager) - if err != nil { - return nil, err - } - - return createAccountsDb(args, snapshotManager), nil + return createAccountsDb(args), nil } -func createAccountsDb(args ArgsAccountsDB, snapshotManager SnapshotsManager) *AccountsDB { +func createAccountsDb(args ArgsAccountsDB) *AccountsDB { return &AccountsDB{ mainTrie: args.Trie, hasher: args.Hasher, @@ -162,7 +129,7 @@ func createAccountsDb(args ArgsAccountsDB, snapshotManager SnapshotsManager) *Ac identifier: "load code", }, addressConverter: args.AddressConverter, - snapshotsManger: snapshotManager, + snapshotsManger: args.SnapshotsManager, } } @@ -185,6 +152,9 @@ func checkArgsAccountsDB(args ArgsAccountsDB) error { if check.IfNil(args.AddressConverter) { return ErrNilAddressConverter } + if check.IfNil(args.SnapshotsManager) { + return ErrNilSnapshotsManager + } return nil } diff --git a/state/accountsDB_test.go b/state/accountsDB_test.go index 9321b6c7fdd..529a2c4e5ee 100644 --- a/state/accountsDB_test.go +++ b/state/accountsDB_test.go @@ -20,11 +20,13 @@ import ( "github.com/multiversx/mx-chain-go/common" "github.com/multiversx/mx-chain-go/common/errChan" "github.com/multiversx/mx-chain-go/common/holders" + "github.com/multiversx/mx-chain-go/common/statistics" "github.com/multiversx/mx-chain-go/config" "github.com/multiversx/mx-chain-go/process/mock" "github.com/multiversx/mx-chain-go/state" "github.com/multiversx/mx-chain-go/state/accounts" "github.com/multiversx/mx-chain-go/state/factory" + "github.com/multiversx/mx-chain-go/state/iteratorChannelsProvider" "github.com/multiversx/mx-chain-go/state/lastSnapshotMarker" "github.com/multiversx/mx-chain-go/state/parsers" "github.com/multiversx/mx-chain-go/state/storagePruningManager" @@ -35,7 +37,6 @@ import ( "github.com/multiversx/mx-chain-go/testscommon/hashingMocks" "github.com/multiversx/mx-chain-go/testscommon/marshallerMock" stateMock "github.com/multiversx/mx-chain-go/testscommon/state" - "github.com/multiversx/mx-chain-go/testscommon/statusHandler" "github.com/multiversx/mx-chain-go/testscommon/storage" "github.com/multiversx/mx-chain-go/testscommon/storageManager" trieMock "github.com/multiversx/mx-chain-go/testscommon/trie" @@ -48,24 +49,36 @@ import ( const trieDbOperationDelay = time.Second func createMockAccountsDBArgs() state.ArgsAccountsDB { + accCreator := &stateMock.AccountsFactoryStub{ + CreateAccountCalled: func(address []byte) (vmcommon.AccountHandler, error) { + return stateMock.NewAccountWrapMock(address), nil + }, + } + + snapshotsManager, _ := state.NewSnapshotsManager(state.ArgsNewSnapshotsManager{ + ProcessingMode: common.Normal, + Marshaller: &marshallerMock.MarshalizerMock{}, + AddressConverter: &testscommon.PubkeyConverterMock{}, + ProcessStatusHandler: &testscommon.ProcessStatusHandlerStub{}, + StateMetrics: &stateMock.StateMetricsStub{}, + AccountFactory: accCreator, + ChannelsProvider: iteratorChannelsProvider.NewUserStateIteratorChannelsProvider(), + LastSnapshotMarker: lastSnapshotMarker.NewLastSnapshotMarker(), + StateStatsHandler: statistics.NewStateStatistics(), + }) + return state.ArgsAccountsDB{ Trie: &trieMock.TrieStub{ GetStorageManagerCalled: func() common.StorageManager { return &storageManager.StorageManagerStub{} }, }, - Hasher: &hashingMocks.HasherMock{}, - Marshaller: &marshallerMock.MarshalizerMock{}, - AccountFactory: &stateMock.AccountsFactoryStub{ - CreateAccountCalled: func(address []byte) (vmcommon.AccountHandler, error) { - return stateMock.NewAccountWrapMock(address), nil - }, - }, + Hasher: &hashingMocks.HasherMock{}, + Marshaller: &marshallerMock.MarshalizerMock{}, + AccountFactory: accCreator, StoragePruningManager: disabled.NewDisabledStoragePruningManager(), - ProcessingMode: common.Normal, - ProcessStatusHandler: &testscommon.ProcessStatusHandlerStub{}, - AppStatusHandler: &statusHandler.AppStatusHandlerStub{}, AddressConverter: &testscommon.PubkeyConverterMock{}, + SnapshotsManager: snapshotsManager, } } @@ -133,16 +146,26 @@ func getDefaultStateComponents( } accCreator, _ := factory.NewAccountCreator(argsAccCreator) + snapshotsManager, _ := state.NewSnapshotsManager(state.ArgsNewSnapshotsManager{ + ProcessingMode: common.Normal, + Marshaller: marshaller, + AddressConverter: &testscommon.PubkeyConverterMock{}, + ProcessStatusHandler: &testscommon.ProcessStatusHandlerStub{}, + StateMetrics: &stateMock.StateMetricsStub{}, + AccountFactory: accCreator, + ChannelsProvider: iteratorChannelsProvider.NewUserStateIteratorChannelsProvider(), + LastSnapshotMarker: lastSnapshotMarker.NewLastSnapshotMarker(), + StateStatsHandler: statistics.NewStateStatistics(), + }) + argsAccountsDB := state.ArgsAccountsDB{ Trie: tr, Hasher: hasher, Marshaller: marshaller, AccountFactory: accCreator, StoragePruningManager: spm, - ProcessingMode: common.Normal, - ProcessStatusHandler: &testscommon.ProcessStatusHandlerStub{}, - AppStatusHandler: &statusHandler.AppStatusHandlerStub{}, AddressConverter: &testscommon.PubkeyConverterMock{}, + SnapshotsManager: snapshotsManager, } adb, _ := state.NewAccountsDB(argsAccountsDB) @@ -202,25 +225,25 @@ func TestNewAccountsDB(t *testing.T) { assert.True(t, check.IfNil(adb)) assert.Equal(t, state.ErrNilStoragePruningManager, err) }) - t.Run("nil process status handler should error", func(t *testing.T) { + t.Run("nil address converter should error", func(t *testing.T) { t.Parallel() args := createMockAccountsDBArgs() - args.ProcessStatusHandler = nil + args.AddressConverter = nil adb, err := state.NewAccountsDB(args) assert.True(t, check.IfNil(adb)) - assert.Equal(t, state.ErrNilProcessStatusHandler, err) + assert.Equal(t, state.ErrNilAddressConverter, err) }) - t.Run("nil app status handler should error", func(t *testing.T) { + t.Run("nil snapshots manager should error", func(t *testing.T) { t.Parallel() args := createMockAccountsDBArgs() - args.AppStatusHandler = nil + args.SnapshotsManager = nil adb, err := state.NewAccountsDB(args) assert.True(t, check.IfNil(adb)) - assert.Equal(t, state.ErrNilAppStatusHandler, err) + assert.Equal(t, state.ErrNilSnapshotsManager, err) }) t.Run("should work", func(t *testing.T) { t.Parallel() @@ -2425,7 +2448,17 @@ func TestAccountsDB_SetSyncerAndStartSnapshotIfNeeded(t *testing.T) { } args := createMockAccountsDBArgs() - args.ProcessingMode = common.ImportDb + args.SnapshotsManager, _ = state.NewSnapshotsManager(state.ArgsNewSnapshotsManager{ + ProcessingMode: common.ImportDb, + Marshaller: &marshallerMock.MarshalizerMock{}, + AddressConverter: &testscommon.PubkeyConverterMock{}, + ProcessStatusHandler: &testscommon.ProcessStatusHandlerStub{}, + StateMetrics: &stateMock.StateMetricsStub{}, + AccountFactory: args.AccountFactory, + ChannelsProvider: iteratorChannelsProvider.NewUserStateIteratorChannelsProvider(), + LastSnapshotMarker: lastSnapshotMarker.NewLastSnapshotMarker(), + StateStatsHandler: statistics.NewStateStatistics(), + }) args.Trie = trieStub adb, _ := state.NewAccountsDB(args) diff --git a/state/disabled/disabledSnapshotsManager.go b/state/disabled/disabledSnapshotsManager.go new file mode 100644 index 00000000000..ddfdfeafc95 --- /dev/null +++ b/state/disabled/disabledSnapshotsManager.go @@ -0,0 +1,38 @@ +package disabled + +import ( + "github.com/multiversx/mx-chain-go/common" + "github.com/multiversx/mx-chain-go/state" +) + +type disabledSnapshotsManger struct { +} + +// NewDisabledSnapshotsManager creates a new disabled snapshots manager +func NewDisabledSnapshotsManager() state.SnapshotsManager { + return &disabledSnapshotsManger{} +} + +// SnapshotState does nothing for this implementation +func (d *disabledSnapshotsManger) SnapshotState(_ []byte, _ uint32, _ common.StorageManager) { +} + +// StartSnapshotAfterRestartIfNeeded returns nil for this implementation +func (d *disabledSnapshotsManger) StartSnapshotAfterRestartIfNeeded(_ common.StorageManager) error { + return nil +} + +// IsSnapshotInProgress returns false for this implementation +func (d *disabledSnapshotsManger) IsSnapshotInProgress() bool { + return false +} + +// SetSyncer returns nil for this implementation +func (d *disabledSnapshotsManger) SetSyncer(_ state.AccountsDBSyncer) error { + return nil +} + +// IsInterfaceNil returns true if there is no value under the interface +func (d *disabledSnapshotsManger) IsInterfaceNil() bool { + return d == nil +} diff --git a/state/errors.go b/state/errors.go index bff1743308c..fd8c0057241 100644 --- a/state/errors.go +++ b/state/errors.go @@ -150,3 +150,6 @@ var ErrNilStatsHandler = errors.New("nil stats handler") // ErrNilLastSnapshotMarker signals that a nil last snapshot marker has been given var ErrNilLastSnapshotMarker = errors.New("nil last snapshot marker") + +// ErrNilSnapshotsManager signals that a nil snapshots manager has been given +var ErrNilSnapshotsManager = errors.New("nil snapshots manager") diff --git a/state/factory/accountsAdapterAPICreator_test.go b/state/factory/accountsAdapterAPICreator_test.go index c6c579985c1..99a4d4e41a3 100644 --- a/state/factory/accountsAdapterAPICreator_test.go +++ b/state/factory/accountsAdapterAPICreator_test.go @@ -10,7 +10,6 @@ import ( "github.com/multiversx/mx-chain-go/testscommon" "github.com/multiversx/mx-chain-go/testscommon/marshallerMock" mockState "github.com/multiversx/mx-chain-go/testscommon/state" - "github.com/multiversx/mx-chain-go/testscommon/statusHandler" "github.com/multiversx/mx-chain-go/testscommon/storageManager" mockTrie "github.com/multiversx/mx-chain-go/testscommon/trie" "github.com/stretchr/testify/assert" @@ -27,10 +26,8 @@ func createMockAccountsArgs() state.ArgsAccountsDB { Marshaller: &marshallerMock.MarshalizerMock{}, AccountFactory: &mockState.AccountsFactoryStub{}, StoragePruningManager: &mockState.StoragePruningManagerStub{}, - ProcessingMode: 0, - ProcessStatusHandler: &testscommon.ProcessStatusHandlerStub{}, - AppStatusHandler: &statusHandler.AppStatusHandlerStub{}, AddressConverter: &testscommon.PubkeyConverterMock{}, + SnapshotsManager: &mockState.SnapshotsManagerStub{}, } } diff --git a/state/peerAccountsDB.go b/state/peerAccountsDB.go index bad2d53c2aa..093e6d3b6e2 100644 --- a/state/peerAccountsDB.go +++ b/state/peerAccountsDB.go @@ -3,9 +3,6 @@ package state import ( "github.com/multiversx/mx-chain-core-go/core/check" "github.com/multiversx/mx-chain-go/common" - "github.com/multiversx/mx-chain-go/state/iteratorChannelsProvider" - "github.com/multiversx/mx-chain-go/state/lastSnapshotMarker" - "github.com/multiversx/mx-chain-go/state/stateMetrics" ) // PeerAccountsDB will save and synchronize data from peer processor, plus will synchronize with nodesCoordinator @@ -20,35 +17,8 @@ func NewPeerAccountsDB(args ArgsAccountsDB) (*PeerAccountsDB, error) { return nil, err } - argStateMetrics := stateMetrics.ArgsStateMetrics{ - SnapshotInProgressKey: common.MetricPeersSnapshotInProgress, - LastSnapshotDurationKey: common.MetricLastPeersSnapshotDurationSec, - SnapshotMessage: stateMetrics.PeerTrieSnapshotMsg, - } - sm, err := stateMetrics.NewStateMetrics(argStateMetrics, args.AppStatusHandler) - if err != nil { - return nil, err - } - - argsSnapshotsManager := ArgsNewSnapshotsManager{ - ShouldSerializeSnapshots: args.ShouldSerializeSnapshots, - ProcessingMode: args.ProcessingMode, - Marshaller: args.Marshaller, - AddressConverter: args.AddressConverter, - ProcessStatusHandler: args.ProcessStatusHandler, - StateMetrics: sm, - ChannelsProvider: iteratorChannelsProvider.NewPeerStateIteratorChannelsProvider(), - AccountFactory: args.AccountFactory, - StateStatsHandler: args.Trie.GetStorageManager().GetStateStatsHandler(), - LastSnapshotMarker: lastSnapshotMarker.NewLastSnapshotMarker(), - } - snapshotManager, err := NewSnapshotsManager(argsSnapshotsManager) - if err != nil { - return nil, err - } - adb := &PeerAccountsDB{ - AccountsDB: createAccountsDb(args, snapshotManager), + AccountsDB: createAccountsDb(args), } return adb, nil diff --git a/state/peerAccountsDB_test.go b/state/peerAccountsDB_test.go index 78e7904be10..2165357c7ec 100644 --- a/state/peerAccountsDB_test.go +++ b/state/peerAccountsDB_test.go @@ -10,9 +10,13 @@ import ( "github.com/multiversx/mx-chain-core-go/core/check" "github.com/multiversx/mx-chain-go/common" + "github.com/multiversx/mx-chain-go/common/statistics" "github.com/multiversx/mx-chain-go/process/mock" "github.com/multiversx/mx-chain-go/state" + "github.com/multiversx/mx-chain-go/state/iteratorChannelsProvider" "github.com/multiversx/mx-chain-go/state/lastSnapshotMarker" + "github.com/multiversx/mx-chain-go/testscommon" + "github.com/multiversx/mx-chain-go/testscommon/marshallerMock" testState "github.com/multiversx/mx-chain-go/testscommon/state" "github.com/multiversx/mx-chain-go/testscommon/storageManager" trieMock "github.com/multiversx/mx-chain-go/testscommon/trie" @@ -73,16 +77,6 @@ func TestNewPeerAccountsDB(t *testing.T) { assert.True(t, check.IfNil(adb)) assert.Equal(t, state.ErrNilStoragePruningManager, err) }) - t.Run("nil process status handler should error", func(t *testing.T) { - t.Parallel() - - args := createMockAccountsDBArgs() - args.ProcessStatusHandler = nil - - adb, err := state.NewPeerAccountsDB(args) - assert.True(t, check.IfNil(adb)) - assert.Equal(t, state.ErrNilProcessStatusHandler, err) - }) t.Run("should work", func(t *testing.T) { t.Parallel() @@ -109,6 +103,20 @@ func TestNewPeerAccountsDB_SnapshotState(t *testing.T) { } }, } + + snapshotsManager, _ := state.NewSnapshotsManager(state.ArgsNewSnapshotsManager{ + ProcessingMode: common.Normal, + Marshaller: &marshallerMock.MarshalizerMock{}, + AddressConverter: &testscommon.PubkeyConverterMock{}, + ProcessStatusHandler: &testscommon.ProcessStatusHandlerStub{}, + StateMetrics: &testState.StateMetricsStub{}, + AccountFactory: args.AccountFactory, + ChannelsProvider: iteratorChannelsProvider.NewPeerStateIteratorChannelsProvider(), + LastSnapshotMarker: lastSnapshotMarker.NewLastSnapshotMarker(), + StateStatsHandler: statistics.NewStateStatistics(), + }) + args.SnapshotsManager = snapshotsManager + adb, err := state.NewPeerAccountsDB(args) assert.Nil(t, err) @@ -365,7 +373,17 @@ func TestPeerAccountsDB_SetSyncerAndStartSnapshotIfNeededMarksActiveDB(t *testin } args := createMockAccountsDBArgs() - args.ProcessingMode = common.ImportDb + args.SnapshotsManager, _ = state.NewSnapshotsManager(state.ArgsNewSnapshotsManager{ + ProcessingMode: common.ImportDb, + Marshaller: &marshallerMock.MarshalizerMock{}, + AddressConverter: &testscommon.PubkeyConverterMock{}, + ProcessStatusHandler: &testscommon.ProcessStatusHandlerStub{}, + StateMetrics: &testState.StateMetricsStub{}, + AccountFactory: args.AccountFactory, + ChannelsProvider: iteratorChannelsProvider.NewUserStateIteratorChannelsProvider(), + LastSnapshotMarker: lastSnapshotMarker.NewLastSnapshotMarker(), + StateStatsHandler: statistics.NewStateStatistics(), + }) args.Trie = trieStub adb, _ := state.NewPeerAccountsDB(args) err := adb.SetSyncer(&mock.AccountsDBSyncerStub{}) diff --git a/state/storagePruningManager/storagePruningManager_test.go b/state/storagePruningManager/storagePruningManager_test.go index ab8f2578ff0..d195d4ef5c9 100644 --- a/state/storagePruningManager/storagePruningManager_test.go +++ b/state/storagePruningManager/storagePruningManager_test.go @@ -4,15 +4,18 @@ import ( "testing" "github.com/multiversx/mx-chain-go/common" + "github.com/multiversx/mx-chain-go/common/statistics" "github.com/multiversx/mx-chain-go/config" "github.com/multiversx/mx-chain-go/state" "github.com/multiversx/mx-chain-go/state/factory" + "github.com/multiversx/mx-chain-go/state/iteratorChannelsProvider" + "github.com/multiversx/mx-chain-go/state/lastSnapshotMarker" "github.com/multiversx/mx-chain-go/state/storagePruningManager/evictionWaitingList" "github.com/multiversx/mx-chain-go/testscommon" "github.com/multiversx/mx-chain-go/testscommon/enableEpochsHandlerMock" "github.com/multiversx/mx-chain-go/testscommon/hashingMocks" "github.com/multiversx/mx-chain-go/testscommon/marshallerMock" - "github.com/multiversx/mx-chain-go/testscommon/statusHandler" + testStorage "github.com/multiversx/mx-chain-go/testscommon/state" "github.com/multiversx/mx-chain-go/testscommon/storage" "github.com/multiversx/mx-chain-go/trie" "github.com/stretchr/testify/assert" @@ -42,16 +45,26 @@ func getDefaultTrieAndAccountsDbAndStoragePruningManager() (common.Trie, *state. } accCreator, _ := factory.NewAccountCreator(argsAccCreator) + snapshotsManager, _ := state.NewSnapshotsManager(state.ArgsNewSnapshotsManager{ + ProcessingMode: common.Normal, + Marshaller: marshaller, + AddressConverter: &testscommon.PubkeyConverterMock{}, + ProcessStatusHandler: &testscommon.ProcessStatusHandlerStub{}, + StateMetrics: &testStorage.StateMetricsStub{}, + AccountFactory: accCreator, + ChannelsProvider: iteratorChannelsProvider.NewUserStateIteratorChannelsProvider(), + LastSnapshotMarker: lastSnapshotMarker.NewLastSnapshotMarker(), + StateStatsHandler: statistics.NewStateStatistics(), + }) + argsAccountsDB := state.ArgsAccountsDB{ Trie: tr, Hasher: hasher, Marshaller: marshaller, AccountFactory: accCreator, StoragePruningManager: spm, - ProcessingMode: common.Normal, - ProcessStatusHandler: &testscommon.ProcessStatusHandlerStub{}, - AppStatusHandler: &statusHandler.AppStatusHandlerStub{}, AddressConverter: &testscommon.PubkeyConverterMock{}, + SnapshotsManager: snapshotsManager, } adb, _ := state.NewAccountsDB(argsAccountsDB) diff --git a/testscommon/integrationtests/factory.go b/testscommon/integrationtests/factory.go index 1d4662c6760..4d2f9ad02d8 100644 --- a/testscommon/integrationtests/factory.go +++ b/testscommon/integrationtests/factory.go @@ -4,9 +4,12 @@ import ( "github.com/multiversx/mx-chain-core-go/hashing/sha256" "github.com/multiversx/mx-chain-core-go/marshal" "github.com/multiversx/mx-chain-go/common" + "github.com/multiversx/mx-chain-go/common/statistics" "github.com/multiversx/mx-chain-go/config" "github.com/multiversx/mx-chain-go/state" accountFactory "github.com/multiversx/mx-chain-go/state/factory" + "github.com/multiversx/mx-chain-go/state/iteratorChannelsProvider" + "github.com/multiversx/mx-chain-go/state/lastSnapshotMarker" "github.com/multiversx/mx-chain-go/state/storagePruningManager" "github.com/multiversx/mx-chain-go/state/storagePruningManager/evictionWaitingList" "github.com/multiversx/mx-chain-go/storage" @@ -15,7 +18,7 @@ import ( "github.com/multiversx/mx-chain-go/storage/storageunit" "github.com/multiversx/mx-chain-go/testscommon" "github.com/multiversx/mx-chain-go/testscommon/enableEpochsHandlerMock" - "github.com/multiversx/mx-chain-go/testscommon/statusHandler" + testStorage "github.com/multiversx/mx-chain-go/testscommon/state" testcommonStorage "github.com/multiversx/mx-chain-go/testscommon/storage" "github.com/multiversx/mx-chain-go/trie" ) @@ -108,16 +111,26 @@ func CreateAccountsDB(db storage.Storer, enableEpochs common.EnableEpochsHandler } accCreator, _ := accountFactory.NewAccountCreator(argsAccCreator) + snapshotsManager, _ := state.NewSnapshotsManager(state.ArgsNewSnapshotsManager{ + ProcessingMode: common.Normal, + Marshaller: TestMarshalizer, + AddressConverter: &testscommon.PubkeyConverterMock{}, + ProcessStatusHandler: &testscommon.ProcessStatusHandlerStub{}, + StateMetrics: &testStorage.StateMetricsStub{}, + AccountFactory: accCreator, + ChannelsProvider: iteratorChannelsProvider.NewUserStateIteratorChannelsProvider(), + LastSnapshotMarker: lastSnapshotMarker.NewLastSnapshotMarker(), + StateStatsHandler: statistics.NewStateStatistics(), + }) + argsAccountsDB := state.ArgsAccountsDB{ Trie: tr, Hasher: TestHasher, Marshaller: TestMarshalizer, AccountFactory: accCreator, StoragePruningManager: spm, - ProcessingMode: common.Normal, - ProcessStatusHandler: &testscommon.ProcessStatusHandlerStub{}, - AppStatusHandler: &statusHandler.AppStatusHandlerStub{}, AddressConverter: &testscommon.PubkeyConverterMock{}, + SnapshotsManager: snapshotsManager, } adb, _ := state.NewAccountsDB(argsAccountsDB) diff --git a/testscommon/state/snapshotsManagerStub.go b/testscommon/state/snapshotsManagerStub.go new file mode 100644 index 00000000000..cb6211c8641 --- /dev/null +++ b/testscommon/state/snapshotsManagerStub.go @@ -0,0 +1,50 @@ +package state + +import ( + "github.com/multiversx/mx-chain-go/common" + "github.com/multiversx/mx-chain-go/state" +) + +// SnapshotsManagerStub - +type SnapshotsManagerStub struct { + SnapshotStateCalled func(rootHash []byte, epoch uint32, trieStorageManager common.StorageManager) + StartSnapshotAfterRestartIfNeededCalled func(trieStorageManager common.StorageManager) error + IsSnapshotInProgressCalled func() bool + SetSyncerCalled func(syncer state.AccountsDBSyncer) error +} + +// SnapshotState - +func (s *SnapshotsManagerStub) SnapshotState(rootHash []byte, epoch uint32, trieStorageManager common.StorageManager) { + if s.SnapshotStateCalled != nil { + s.SnapshotStateCalled(rootHash, epoch, trieStorageManager) + } +} + +// StartSnapshotAfterRestartIfNeeded - +func (s *SnapshotsManagerStub) StartSnapshotAfterRestartIfNeeded(trieStorageManager common.StorageManager) error { + if s.StartSnapshotAfterRestartIfNeededCalled != nil { + return s.StartSnapshotAfterRestartIfNeededCalled(trieStorageManager) + } + return nil +} + +// IsSnapshotInProgress - +func (s *SnapshotsManagerStub) IsSnapshotInProgress() bool { + if s.IsSnapshotInProgressCalled != nil { + return s.IsSnapshotInProgressCalled() + } + return false +} + +// SetSyncer - +func (s *SnapshotsManagerStub) SetSyncer(syncer state.AccountsDBSyncer) error { + if s.SetSyncerCalled != nil { + return s.SetSyncerCalled(syncer) + } + return nil +} + +// IsInterfaceNil returns true if there is no value under the interface +func (s *SnapshotsManagerStub) IsInterfaceNil() bool { + return s == nil +} diff --git a/update/genesis/import.go b/update/genesis/import.go index d0da6fac47c..6092a7ceaaa 100644 --- a/update/genesis/import.go +++ b/update/genesis/import.go @@ -14,11 +14,11 @@ import ( "github.com/multiversx/mx-chain-core-go/hashing" "github.com/multiversx/mx-chain-core-go/marshal" "github.com/multiversx/mx-chain-go/common" - commonDisabled "github.com/multiversx/mx-chain-go/common/disabled" "github.com/multiversx/mx-chain-go/config" "github.com/multiversx/mx-chain-go/dataRetriever" "github.com/multiversx/mx-chain-go/errors" "github.com/multiversx/mx-chain-go/state" + disabledState "github.com/multiversx/mx-chain-go/state/disabled" "github.com/multiversx/mx-chain-go/state/factory" "github.com/multiversx/mx-chain-go/state/storagePruningManager/disabled" "github.com/multiversx/mx-chain-go/trie" @@ -418,10 +418,8 @@ func (si *stateImport) getAccountsDB(accType Type, shardID uint32, accountFactor Marshaller: si.marshalizer, AccountFactory: accountFactory, StoragePruningManager: disabled.NewDisabledStoragePruningManager(), - ProcessingMode: common.Normal, - ProcessStatusHandler: commonDisabled.NewProcessStatusHandler(), - AppStatusHandler: commonDisabled.NewAppStatusHandler(), AddressConverter: si.addressConverter, + SnapshotsManager: disabledState.NewDisabledSnapshotsManager(), } accountsDB, errCreate := state.NewAccountsDB(argsAccountDB) if errCreate != nil { @@ -443,10 +441,8 @@ func (si *stateImport) getAccountsDB(accType Type, shardID uint32, accountFactor Marshaller: si.marshalizer, AccountFactory: accountFactory, StoragePruningManager: disabled.NewDisabledStoragePruningManager(), - ProcessingMode: common.Normal, - ProcessStatusHandler: commonDisabled.NewProcessStatusHandler(), - AppStatusHandler: commonDisabled.NewAppStatusHandler(), AddressConverter: si.addressConverter, + SnapshotsManager: disabledState.NewDisabledSnapshotsManager(), } accountsDB, err = state.NewAccountsDB(argsAccountDB) si.accountDBsMap[shardID] = accountsDB