diff --git a/epochStart/bootstrap/common.go b/epochStart/bootstrap/common.go index 7b1bcec3c88..4db54c14382 100644 --- a/epochStart/bootstrap/common.go +++ b/epochStart/bootstrap/common.go @@ -13,8 +13,11 @@ func checkArguments(args ArgsEpochStartBootstrap) error { if check.IfNil(args.GenesisShardCoordinator) { return fmt.Errorf("%s: %w", baseErrorMessage, epochStart.ErrNilShardCoordinator) } - if check.IfNil(args.Messenger) { - return fmt.Errorf("%s: %w", baseErrorMessage, epochStart.ErrNilMessenger) + if check.IfNil(args.MainMessenger) { + return fmt.Errorf("%s on main network: %w", baseErrorMessage, epochStart.ErrNilMessenger) + } + if check.IfNil(args.FullArchiveMessenger) { + return fmt.Errorf("%s on full archive network: %w", baseErrorMessage, epochStart.ErrNilMessenger) } if check.IfNil(args.EconomicsData) { return fmt.Errorf("%s: %w", baseErrorMessage, epochStart.ErrNilEconomicsData) diff --git a/epochStart/bootstrap/factory/epochStartInterceptorsContainerFactory.go b/epochStart/bootstrap/factory/epochStartInterceptorsContainerFactory.go index 5ab4c67d1bb..095f85e5c70 100644 --- a/epochStart/bootstrap/factory/epochStartInterceptorsContainerFactory.go +++ b/epochStart/bootstrap/factory/epochStartInterceptorsContainerFactory.go @@ -13,6 +13,7 @@ import ( "github.com/multiversx/mx-chain-go/epochStart/bootstrap/disabled" disabledFactory "github.com/multiversx/mx-chain-go/factory/disabled" disabledGenesis "github.com/multiversx/mx-chain-go/genesis/process/disabled" + "github.com/multiversx/mx-chain-go/p2p" "github.com/multiversx/mx-chain-go/process" "github.com/multiversx/mx-chain-go/process/factory/interceptorscontainer" "github.com/multiversx/mx-chain-go/sharding" @@ -29,7 +30,8 @@ type ArgsEpochStartInterceptorContainer struct { CryptoComponents process.CryptoComponentsHolder Config config.Config ShardCoordinator sharding.Coordinator - Messenger process.TopicHandler + MainMessenger process.TopicHandler + FullArchiveMessenger process.TopicHandler DataPool dataRetriever.PoolsHolder WhiteListHandler update.WhiteListHandler WhiteListerVerifiedTxs update.WhiteListHandler @@ -40,24 +42,25 @@ type ArgsEpochStartInterceptorContainer struct { HeaderIntegrityVerifier process.HeaderIntegrityVerifier RequestHandler process.RequestHandler SignaturesHandler process.SignaturesHandler + NodeOperationMode p2p.NodeOperation } // NewEpochStartInterceptorsContainer will return a real interceptors container factory, but with many disabled components -func NewEpochStartInterceptorsContainer(args ArgsEpochStartInterceptorContainer) (process.InterceptorsContainer, error) { +func NewEpochStartInterceptorsContainer(args ArgsEpochStartInterceptorContainer) (process.InterceptorsContainer, process.InterceptorsContainer, error) { if check.IfNil(args.CoreComponents) { - return nil, epochStart.ErrNilCoreComponentsHolder + return nil, nil, epochStart.ErrNilCoreComponentsHolder } if check.IfNil(args.CryptoComponents) { - return nil, epochStart.ErrNilCryptoComponentsHolder + return nil, nil, epochStart.ErrNilCryptoComponentsHolder } if check.IfNil(args.CoreComponents.AddressPubKeyConverter()) { - return nil, epochStart.ErrNilPubkeyConverter + return nil, nil, epochStart.ErrNilPubkeyConverter } cryptoComponents := args.CryptoComponents.Clone().(process.CryptoComponentsHolder) err := cryptoComponents.SetMultiSignerContainer(disabled.NewMultiSignerContainer()) if err != nil { - return nil, err + return nil, nil, err } nodesCoordinator := disabled.NewNodesCoordinator() @@ -72,6 +75,7 @@ func NewEpochStartInterceptorsContainer(args ArgsEpochStartInterceptorContainer) epochStartTrigger := disabled.NewEpochStartTrigger() // TODO: move the peerShardMapper creation before boostrapComponents peerShardMapper := disabled.NewPeerShardMapper() + fullArchivePeerShardMapper := disabled.NewPeerShardMapper() hardforkTrigger := disabledFactory.HardforkTrigger() containerFactoryArgs := interceptorscontainer.CommonInterceptorsContainerFactoryArgs{ @@ -80,7 +84,8 @@ func NewEpochStartInterceptorsContainer(args ArgsEpochStartInterceptorContainer) Accounts: accountsAdapter, ShardCoordinator: args.ShardCoordinator, NodesCoordinator: nodesCoordinator, - Messenger: args.Messenger, + MainMessenger: args.MainMessenger, + FullArchiveMessenger: args.FullArchiveMessenger, Store: storer, DataPool: args.DataPool, MaxTxNonceDeltaAllowed: common.MaxTxNonceDeltaAllowed, @@ -100,24 +105,33 @@ func NewEpochStartInterceptorsContainer(args ArgsEpochStartInterceptorContainer) PeerSignatureHandler: cryptoComponents.PeerSignatureHandler(), SignaturesHandler: args.SignaturesHandler, HeartbeatExpiryTimespanInSec: args.Config.HeartbeatV2.HeartbeatExpiryTimespanInSec, - PeerShardMapper: peerShardMapper, + MainPeerShardMapper: peerShardMapper, + FullArchivePeerShardMapper: fullArchivePeerShardMapper, HardforkTrigger: hardforkTrigger, + NodeOperationMode: args.NodeOperationMode, } interceptorsContainerFactory, err := interceptorscontainer.NewMetaInterceptorsContainerFactory(containerFactoryArgs) if err != nil { - return nil, err + return nil, nil, err } - container, err := interceptorsContainerFactory.Create() + mainContainer, fullArchiveContainer, err := interceptorsContainerFactory.Create() if err != nil { - return nil, err + return nil, nil, err } - err = interceptorsContainerFactory.AddShardTrieNodeInterceptors(container) + err = interceptorsContainerFactory.AddShardTrieNodeInterceptors(mainContainer) if err != nil { - return nil, err + return nil, nil, err } - return container, nil + if args.NodeOperationMode == p2p.FullArchiveMode { + err = interceptorsContainerFactory.AddShardTrieNodeInterceptors(fullArchiveContainer) + if err != nil { + return nil, nil, err + } + } + + return mainContainer, fullArchiveContainer, nil } diff --git a/epochStart/bootstrap/fromLocalStorage.go b/epochStart/bootstrap/fromLocalStorage.go index 6905812d935..0c3f2d6544d 100644 --- a/epochStart/bootstrap/fromLocalStorage.go +++ b/epochStart/bootstrap/fromLocalStorage.go @@ -138,9 +138,13 @@ func (e *epochStartBootstrap) prepareEpochFromStorage() (Parameters, error) { } defer func() { - errClose := e.interceptorContainer.Close() + errClose := e.mainInterceptorContainer.Close() if errClose != nil { - log.Warn("prepareEpochFromStorage interceptorContainer.Close()", "error", errClose) + log.Warn("prepareEpochFromStorage mainInterceptorContainer.Close()", "error", errClose) + } + errClose = e.fullArchiveInterceptorContainer.Close() + if errClose != nil { + log.Warn("prepareEpochFromStorage fullArchiveInterceptorContainer.Close()", "error", errClose) } }() @@ -161,7 +165,8 @@ func (e *epochStartBootstrap) prepareEpochFromStorage() (Parameters, error) { return Parameters{}, err } - err = e.messenger.CreateTopic(common.ConsensusTopic+e.shardCoordinator.CommunicationIdentifier(e.shardCoordinator.SelfId()), true) + consensusTopic := common.ConsensusTopic + e.shardCoordinator.CommunicationIdentifier(e.shardCoordinator.SelfId()) + err = e.mainMessenger.CreateTopic(consensusTopic, true) if err != nil { return Parameters{}, err } diff --git a/epochStart/bootstrap/process.go b/epochStart/bootstrap/process.go index 199f2a41935..6040ca4c6a6 100644 --- a/epochStart/bootstrap/process.go +++ b/epochStart/bootstrap/process.go @@ -30,7 +30,7 @@ import ( "github.com/multiversx/mx-chain-go/epochStart/bootstrap/types" factoryDisabled "github.com/multiversx/mx-chain-go/factory/disabled" "github.com/multiversx/mx-chain-go/heartbeat/sender" - disabledP2P "github.com/multiversx/mx-chain-go/p2p/disabled" + "github.com/multiversx/mx-chain-go/p2p" "github.com/multiversx/mx-chain-go/process" "github.com/multiversx/mx-chain-go/process/block/preprocess" "github.com/multiversx/mx-chain-go/process/heartbeat/validator" @@ -93,7 +93,8 @@ type epochStartBootstrap struct { destinationShardAsObserver uint32 coreComponentsHolder process.CoreComponentsHolder cryptoComponentsHolder process.CryptoComponentsHolder - messenger Messenger + mainMessenger Messenger + fullArchiveMessenger Messenger generalConfig config.Config prefsConfig config.PreferencesConfig flagsConfig config.ContextFlagsConfig @@ -117,24 +118,25 @@ type epochStartBootstrap struct { bootstrapHeartbeatSender update.Closer trieSyncStatisticsProvider common.SizeSyncStatisticsHandler nodeProcessingMode common.NodeProcessingMode - + nodeOperationMode p2p.NodeOperation // created components - requestHandler process.RequestHandler - interceptorContainer process.InterceptorsContainer - dataPool dataRetriever.PoolsHolder - miniBlocksSyncer epochStart.PendingMiniBlocksSyncHandler - headersSyncer epochStart.HeadersByHashSyncer - txSyncerForScheduled update.TransactionsSyncHandler - epochStartMetaBlockSyncer epochStart.StartOfEpochMetaSyncer - nodesConfigHandler StartOfEpochNodesConfigHandler - whiteListHandler update.WhiteListHandler - whiteListerVerifiedTxs update.WhiteListHandler - storageOpenerHandler storage.UnitOpenerHandler - latestStorageDataProvider storage.LatestStorageDataProviderHandler - argumentsParser process.ArgumentsParser - dataSyncerFactory types.ScheduledDataSyncerCreator - dataSyncerWithScheduled types.ScheduledDataSyncer - storageService dataRetriever.StorageService + requestHandler process.RequestHandler + mainInterceptorContainer process.InterceptorsContainer + fullArchiveInterceptorContainer process.InterceptorsContainer + dataPool dataRetriever.PoolsHolder + miniBlocksSyncer epochStart.PendingMiniBlocksSyncHandler + headersSyncer epochStart.HeadersByHashSyncer + txSyncerForScheduled update.TransactionsSyncHandler + epochStartMetaBlockSyncer epochStart.StartOfEpochMetaSyncer + nodesConfigHandler StartOfEpochNodesConfigHandler + whiteListHandler update.WhiteListHandler + whiteListerVerifiedTxs update.WhiteListHandler + storageOpenerHandler storage.UnitOpenerHandler + latestStorageDataProvider storage.LatestStorageDataProviderHandler + argumentsParser process.ArgumentsParser + dataSyncerFactory types.ScheduledDataSyncerCreator + dataSyncerWithScheduled types.ScheduledDataSyncer + storageService dataRetriever.StorageService // gathered data epochStartMeta data.MetaHeaderHandler @@ -162,7 +164,8 @@ type ArgsEpochStartBootstrap struct { CoreComponentsHolder process.CoreComponentsHolder CryptoComponentsHolder process.CryptoComponentsHolder DestinationShardAsObserver uint32 - Messenger Messenger + MainMessenger Messenger + FullArchiveMessenger Messenger GeneralConfig config.Config PrefsConfig config.PreferencesConfig FlagsConfig config.ContextFlagsConfig @@ -201,7 +204,8 @@ func NewEpochStartBootstrap(args ArgsEpochStartBootstrap) (*epochStartBootstrap, epochStartProvider := &epochStartBootstrap{ coreComponentsHolder: args.CoreComponentsHolder, cryptoComponentsHolder: args.CryptoComponentsHolder, - messenger: args.Messenger, + mainMessenger: args.MainMessenger, + fullArchiveMessenger: args.FullArchiveMessenger, generalConfig: args.GeneralConfig, prefsConfig: args.PrefsConfig, flagsConfig: args.FlagsConfig, @@ -228,6 +232,11 @@ func NewEpochStartBootstrap(args ArgsEpochStartBootstrap) (*epochStartBootstrap, shardCoordinator: args.GenesisShardCoordinator, trieSyncStatisticsProvider: args.TrieSyncStatisticsProvider, nodeProcessingMode: args.NodeProcessingMode, + nodeOperationMode: p2p.NormalOperation, + } + + if epochStartProvider.prefsConfig.FullArchive { + epochStartProvider.nodeOperationMode = p2p.FullArchiveMode } whiteListCache, err := storageunit.NewCache(storageFactory.GetCacherFromConfig(epochStartProvider.generalConfig.WhiteListPool)) @@ -371,9 +380,14 @@ func (e *epochStartBootstrap) Bootstrap() (Parameters, error) { } defer func() { - errClose := e.interceptorContainer.Close() + errClose := e.mainInterceptorContainer.Close() + if errClose != nil { + log.Warn("prepareEpochFromStorage mainInterceptorContainer.Close()", "error", errClose) + } + + errClose = e.fullArchiveInterceptorContainer.Close() if errClose != nil { - log.Warn("prepareEpochFromStorage interceptorContainer.Close()", "error", errClose) + log.Warn("prepareEpochFromStorage fullArchiveInterceptorContainer.Close()", "error", errClose) } }() @@ -418,10 +432,16 @@ func (e *epochStartBootstrap) bootstrapFromLocalStorage() (Parameters, error) { func (e *epochStartBootstrap) cleanupOnBootstrapFinish() { log.Debug("unregistering all message processor and un-joining all topics") - errMessenger := e.messenger.UnregisterAllMessageProcessors() + errMessenger := e.mainMessenger.UnregisterAllMessageProcessors() + log.LogIfError(errMessenger) + + errMessenger = e.mainMessenger.UnJoinAllTopics() log.LogIfError(errMessenger) - errMessenger = e.messenger.UnJoinAllTopics() + errMessenger = e.fullArchiveMessenger.UnregisterAllMessageProcessors() + log.LogIfError(errMessenger) + + errMessenger = e.fullArchiveMessenger.UnJoinAllTopics() log.LogIfError(errMessenger) e.closeTrieNodes() @@ -511,7 +531,7 @@ func (e *epochStartBootstrap) prepareComponentsToSyncFromNetwork() error { epochStartConfig := e.generalConfig.EpochStartConfig metaBlockProcessor, err := NewEpochStartMetaBlockProcessor( - e.messenger, + e.mainMessenger, e.requestHandler, e.coreComponentsHolder.InternalMarshalizer(), e.coreComponentsHolder.Hasher(), @@ -527,7 +547,7 @@ func (e *epochStartBootstrap) prepareComponentsToSyncFromNetwork() error { CoreComponentsHolder: e.coreComponentsHolder, CryptoComponentsHolder: e.cryptoComponentsHolder, RequestHandler: e.requestHandler, - Messenger: e.messenger, + Messenger: e.mainMessenger, ShardCoordinator: e.shardCoordinator, EconomicsData: e.economicsData, WhitelistHandler: e.whiteListHandler, @@ -550,17 +570,19 @@ func (e *epochStartBootstrap) createSyncers() error { CryptoComponents: e.cryptoComponentsHolder, Config: e.generalConfig, ShardCoordinator: e.shardCoordinator, - Messenger: e.messenger, + MainMessenger: e.mainMessenger, + FullArchiveMessenger: e.fullArchiveMessenger, DataPool: e.dataPool, WhiteListHandler: e.whiteListHandler, WhiteListerVerifiedTxs: e.whiteListerVerifiedTxs, ArgumentsParser: e.argumentsParser, HeaderIntegrityVerifier: e.headerIntegrityVerifier, RequestHandler: e.requestHandler, - SignaturesHandler: e.messenger, + SignaturesHandler: e.mainMessenger, + NodeOperationMode: e.nodeOperationMode, } - e.interceptorContainer, err = factoryInterceptors.NewEpochStartInterceptorsContainer(args) + e.mainInterceptorContainer, e.fullArchiveInterceptorContainer, err = factoryInterceptors.NewEpochStartInterceptorsContainer(args) if err != nil { return err } @@ -672,7 +694,8 @@ func (e *epochStartBootstrap) requestAndProcessing() (Parameters, error) { } log.Debug("start in epoch bootstrap: shardCoordinator", "numOfShards", e.baseData.numberOfShards, "shardId", e.baseData.shardId) - err = e.messenger.CreateTopic(common.ConsensusTopic+e.shardCoordinator.CommunicationIdentifier(e.shardCoordinator.SelfId()), true) + consensusTopic := common.ConsensusTopic + e.shardCoordinator.CommunicationIdentifier(e.shardCoordinator.SelfId()) + err = e.mainMessenger.CreateTopic(consensusTopic, true) if err != nil { return Parameters{}, err } @@ -1191,7 +1214,7 @@ func (e *epochStartBootstrap) createResolversContainer() error { log.Debug("epochStartBootstrap.createRequestHandler", "shard", e.shardCoordinator.SelfId()) resolversContainerArgs := resolverscontainer.FactoryArgs{ ShardCoordinator: e.shardCoordinator, - Messenger: e.messenger, + Messenger: e.mainMessenger, Store: storageService, Marshalizer: e.coreComponentsHolder.InternalMarshalizer(), DataPools: e.dataPool, @@ -1222,7 +1245,7 @@ func (e *epochStartBootstrap) createRequestHandler() error { requestersContainerArgs := requesterscontainer.FactoryArgs{ RequesterConfig: e.generalConfig.Requesters, ShardCoordinator: e.shardCoordinator, - Messenger: e.messenger, + Messenger: e.mainMessenger, Marshaller: e.coreComponentsHolder.InternalMarshalizer(), Uint64ByteSliceConverter: uint64ByteSlice.NewBigEndianConverter(), OutputAntifloodHandler: disabled.NewAntiFloodHandler(), @@ -1293,8 +1316,15 @@ func (e *epochStartBootstrap) createHeartbeatSender() error { } heartbeatTopic := common.HeartbeatV2Topic + e.shardCoordinator.CommunicationIdentifier(e.shardCoordinator.SelfId()) - if !e.messenger.HasTopic(heartbeatTopic) { - err = e.messenger.CreateTopic(heartbeatTopic, true) + if !e.mainMessenger.HasTopic(heartbeatTopic) { + err = e.mainMessenger.CreateTopic(heartbeatTopic, true) + if err != nil { + return err + } + } + + if !e.fullArchiveMessenger.HasTopic(heartbeatTopic) { + err = e.fullArchiveMessenger.CreateTopic(heartbeatTopic, true) if err != nil { return err } @@ -1306,8 +1336,8 @@ func (e *epochStartBootstrap) createHeartbeatSender() error { } heartbeatCfg := e.generalConfig.HeartbeatV2 argsHeartbeatSender := sender.ArgBootstrapSender{ - MainMessenger: e.messenger, - FullArchiveMessenger: disabledP2P.NewNetworkMessenger(), // TODO[Sorin]: pass full archive messenger + MainMessenger: e.mainMessenger, + FullArchiveMessenger: e.fullArchiveMessenger, Marshaller: e.coreComponentsHolder.InternalMarshalizer(), HeartbeatTopic: heartbeatTopic, HeartbeatTimeBetweenSends: time.Second * time.Duration(heartbeatCfg.HeartbeatTimeBetweenSendsDuringBootstrapInSec), diff --git a/epochStart/bootstrap/process_test.go b/epochStart/bootstrap/process_test.go index 159f069874a..952ee59da51 100644 --- a/epochStart/bootstrap/process_test.go +++ b/epochStart/bootstrap/process_test.go @@ -102,11 +102,12 @@ func createMockEpochStartBootstrapArgs( ScheduledSCRsStorer: genericMocks.NewStorerMock(), CoreComponentsHolder: coreMock, CryptoComponentsHolder: cryptoMock, - Messenger: &p2pmocks.MessengerStub{ + MainMessenger: &p2pmocks.MessengerStub{ ConnectedPeersCalled: func() []core.PeerID { return []core.PeerID{"peer0", "peer1", "peer2", "peer3", "peer4", "peer5"} }, }, + FullArchiveMessenger: &p2pmocks.MessengerStub{}, GeneralConfig: config.Config{ MiniBlocksStorage: generalCfg.MiniBlocksStorage, PeerBlockBodyStorage: generalCfg.PeerBlockBodyStorage, @@ -243,11 +244,21 @@ func TestNewEpochStartBootstrap_NilArgsChecks(t *testing.T) { require.Nil(t, epochStartProvider) require.True(t, errors.Is(err, epochStart.ErrNilShardCoordinator)) }) - t.Run("nil messenger", func(t *testing.T) { + t.Run("nil main messenger", func(t *testing.T) { t.Parallel() args := createMockEpochStartBootstrapArgs(createComponentsForEpochStart()) - args.Messenger = nil + args.MainMessenger = nil + + epochStartProvider, err := NewEpochStartBootstrap(args) + require.Nil(t, epochStartProvider) + require.True(t, errors.Is(err, epochStart.ErrNilMessenger)) + }) + t.Run("nil full archive messenger", func(t *testing.T) { + t.Parallel() + + args := createMockEpochStartBootstrapArgs(createComponentsForEpochStart()) + args.FullArchiveMessenger = nil epochStartProvider, err := NewEpochStartBootstrap(args) require.Nil(t, epochStartProvider) @@ -1672,14 +1683,14 @@ func TestRequestAndProcessing(t *testing.T) { assert.Error(t, err) assert.True(t, strings.Contains(err.Error(), nodesCoordinator.ErrInvalidNumberOfShards.Error())) }) - t.Run("failed to create messenger topic", func(t *testing.T) { + t.Run("failed to create main messenger topic", func(t *testing.T) { t.Parallel() args := createMockEpochStartBootstrapArgs(createComponentsForEpochStart()) args.GenesisNodesConfig = getNodesConfigMock(1) expectedErr := errors.New("expected error") - args.Messenger = &p2pmocks.MessengerStub{ + args.MainMessenger = &p2pmocks.MessengerStub{ CreateTopicCalled: func(topic string, identifier bool) error { return expectedErr }, diff --git a/epochStart/bootstrap/storageProcess.go b/epochStart/bootstrap/storageProcess.go index ac902d0c1f3..6560549f2e3 100644 --- a/epochStart/bootstrap/storageProcess.go +++ b/epochStart/bootstrap/storageProcess.go @@ -167,7 +167,7 @@ func (sesb *storageEpochStartBootstrap) prepareComponentsToSync() error { } metablockProcessor, err := NewStorageEpochStartMetaBlockProcessor( - sesb.messenger, + sesb.mainMessenger, sesb.requestHandler, sesb.coreComponentsHolder.InternalMarshalizer(), sesb.coreComponentsHolder.Hasher(), @@ -180,7 +180,7 @@ func (sesb *storageEpochStartBootstrap) prepareComponentsToSync() error { CoreComponentsHolder: sesb.coreComponentsHolder, CryptoComponentsHolder: sesb.cryptoComponentsHolder, RequestHandler: sesb.requestHandler, - Messenger: sesb.messenger, + Messenger: sesb.mainMessenger, ShardCoordinator: sesb.shardCoordinator, EconomicsData: sesb.economicsData, WhitelistHandler: sesb.whiteListHandler, @@ -245,7 +245,7 @@ func (sesb *storageEpochStartBootstrap) createStorageRequesters() error { WorkingDirectory: sesb.importDbConfig.ImportDBWorkingDir, Hasher: sesb.coreComponentsHolder.Hasher(), ShardCoordinator: shardCoordinator, - Messenger: sesb.messenger, + Messenger: sesb.mainMessenger, Store: sesb.store, Marshalizer: sesb.coreComponentsHolder.InternalMarshalizer(), Uint64ByteSliceConverter: sesb.coreComponentsHolder.Uint64ByteSliceConverter(), @@ -329,7 +329,8 @@ func (sesb *storageEpochStartBootstrap) requestAndProcessFromStorage() (Paramete } log.Debug("start in epoch bootstrap: shardCoordinator", "numOfShards", sesb.baseData.numberOfShards, "shardId", sesb.baseData.shardId) - err = sesb.messenger.CreateTopic(common.ConsensusTopic+sesb.shardCoordinator.CommunicationIdentifier(sesb.shardCoordinator.SelfId()), true) + consensusTopic := common.ConsensusTopic + sesb.shardCoordinator.CommunicationIdentifier(sesb.shardCoordinator.SelfId()) + err = sesb.mainMessenger.CreateTopic(consensusTopic, true) if err != nil { return Parameters{}, err } diff --git a/factory/bootstrap/bootstrapComponents.go b/factory/bootstrap/bootstrapComponents.go index 9f580416853..1c3e834a16f 100644 --- a/factory/bootstrap/bootstrapComponents.go +++ b/factory/bootstrap/bootstrapComponents.go @@ -188,7 +188,8 @@ func (bcf *bootstrapComponentsFactory) Create() (*bootstrapComponents, error) { epochStartBootstrapArgs := bootstrap.ArgsEpochStartBootstrap{ CoreComponentsHolder: bcf.coreComponents, CryptoComponentsHolder: bcf.cryptoComponents, - Messenger: bcf.networkComponents.NetworkMessenger(), + MainMessenger: bcf.networkComponents.NetworkMessenger(), + FullArchiveMessenger: bcf.networkComponents.FullArchiveNetworkMessenger(), GeneralConfig: bcf.config, PrefsConfig: bcf.prefConfig.Preferences, FlagsConfig: bcf.flagsConfig, diff --git a/factory/consensus/consensusComponents_test.go b/factory/consensus/consensusComponents_test.go index 54f6a4cf4de..67f551acf1d 100644 --- a/factory/consensus/consensusComponents_test.go +++ b/factory/consensus/consensusComponents_test.go @@ -117,7 +117,8 @@ func createMockConsensusComponentsFactoryArgs() consensusComp.ConsensusComponent NodeRedundancyHandlerInternal: &testsMocks.RedundancyHandlerStub{}, HardforkTriggerField: &testscommon.HardforkTriggerStub{}, ReqHandler: &testscommon.RequestHandlerStub{}, - PeerMapper: &testsMocks.PeerShardMapperStub{}, + MainPeerMapper: &testsMocks.PeerShardMapperStub{}, + FullArchivePeerMapper: &testsMocks.PeerShardMapperStub{}, ShardCoord: testscommon.NewMultiShardsCoordinatorMock(2), RoundHandlerField: &testscommon.RoundHandlerMock{ TimeDurationCalled: func() time.Duration { diff --git a/factory/heartbeat/heartbeatV2Components.go b/factory/heartbeat/heartbeatV2Components.go index 4356b03a70f..a551f22e869 100644 --- a/factory/heartbeat/heartbeatV2Components.go +++ b/factory/heartbeat/heartbeatV2Components.go @@ -251,7 +251,7 @@ func (hcf *heartbeatV2ComponentsFactory) Create() (*heartbeatV2Components, error Messenger: hcf.networkComponents.NetworkMessenger(), PeerShardMapper: hcf.processComponents.PeerShardMapper(), ShardCoordinator: hcf.processComponents.ShardCoordinator(), - BaseIntraShardTopic: common.ConsensusTopic, + BaseIntraShardTopic: common.HeartbeatV2Topic, BaseCrossShardTopic: processFactory.MiniBlocksTopic, } mainDirectConnectionProcessor, err := processor.NewDirectConnectionProcessor(argsMainDirectConnectionProcessor) @@ -262,9 +262,9 @@ func (hcf *heartbeatV2ComponentsFactory) Create() (*heartbeatV2Components, error argsFullArchiveDirectConnectionProcessor := processor.ArgsDirectConnectionProcessor{ TimeToReadDirectConnections: time.Second * time.Duration(cfg.TimeToReadDirectConnectionsInSec), Messenger: hcf.networkComponents.FullArchiveNetworkMessenger(), - PeerShardMapper: hcf.processComponents.PeerShardMapper(), // TODO[Sorin]: replace this with the full archive psm + PeerShardMapper: hcf.processComponents.FullArchivePeerShardMapper(), ShardCoordinator: hcf.processComponents.ShardCoordinator(), - BaseIntraShardTopic: common.ConsensusTopic, + BaseIntraShardTopic: common.HeartbeatV2Topic, BaseCrossShardTopic: processFactory.MiniBlocksTopic, } fullArchiveDirectConnectionProcessor, err := processor.NewDirectConnectionProcessor(argsFullArchiveDirectConnectionProcessor) @@ -287,7 +287,7 @@ func (hcf *heartbeatV2ComponentsFactory) Create() (*heartbeatV2Components, error argsFullArchiveCrossShardPeerTopicNotifier := monitor.ArgsCrossShardPeerTopicNotifier{ ShardCoordinator: hcf.processComponents.ShardCoordinator(), - PeerShardMapper: hcf.processComponents.PeerShardMapper(), // TODO[Sorin]: replace this with the full archive psm + PeerShardMapper: hcf.processComponents.FullArchivePeerShardMapper(), } fullArchiveCrossShardPeerTopicNotifier, err := monitor.NewCrossShardPeerTopicNotifier(argsFullArchiveCrossShardPeerTopicNotifier) if err != nil { diff --git a/factory/heartbeat/heartbeatV2Components_test.go b/factory/heartbeat/heartbeatV2Components_test.go index d350e29cb91..f013294a7d1 100644 --- a/factory/heartbeat/heartbeatV2Components_test.go +++ b/factory/heartbeat/heartbeatV2Components_test.go @@ -80,7 +80,8 @@ func createMockHeartbeatV2ComponentsFactoryArgs() heartbeatComp.ArgHeartbeatV2Co NodeRedundancyHandlerInternal: &testsMocks.RedundancyHandlerStub{}, HardforkTriggerField: &testscommon.HardforkTriggerStub{}, ReqHandler: &testscommon.RequestHandlerStub{}, - PeerMapper: &testsMocks.PeerShardMapperStub{}, + MainPeerMapper: &testsMocks.PeerShardMapperStub{}, + FullArchivePeerMapper: &testsMocks.PeerShardMapperStub{}, ShardCoord: &testscommon.ShardsCoordinatorMock{}, }, StatusCoreComponents: &factory.StatusCoreComponentsStub{ @@ -485,7 +486,8 @@ func TestHeartbeatV2Components_Create(t *testing.T) { EpochNotifier: processComp.EpochStartNotifier(), NodeRedundancyHandlerInternal: processComp.NodeRedundancyHandler(), HardforkTriggerField: processComp.HardforkTrigger(), - PeerMapper: processComp.PeerShardMapper(), + MainPeerMapper: processComp.PeerShardMapper(), + FullArchivePeerMapper: processComp.FullArchivePeerShardMapper(), ShardCoordinatorCalled: func() sharding.Coordinator { cnt++ if cnt > 3 { diff --git a/factory/interface.go b/factory/interface.go index 3038d28806c..466b3637384 100644 --- a/factory/interface.go +++ b/factory/interface.go @@ -270,6 +270,7 @@ type ProcessComponentsHolder interface { NodesCoordinator() nodesCoordinator.NodesCoordinator ShardCoordinator() sharding.Coordinator InterceptorsContainer() process.InterceptorsContainer + FullArchiveInterceptorsContainer() process.InterceptorsContainer ResolversContainer() dataRetriever.ResolversContainer RequestersFinder() dataRetriever.RequestersFinder RoundHandler() consensus.RoundHandler @@ -289,6 +290,7 @@ type ProcessComponentsHolder interface { TxLogsProcessor() process.TransactionLogProcessorDatabase HeaderConstructionValidator() process.HeaderConstructionValidator PeerShardMapper() process.NetworkShardingCollector + FullArchivePeerShardMapper() process.NetworkShardingCollector FallbackHeaderValidator() process.FallbackHeaderValidator TransactionSimulatorProcessor() TransactionSimulatorProcessor WhiteListHandler() process.WhiteListHandler diff --git a/factory/mock/processComponentsStub.go b/factory/mock/processComponentsStub.go index a756b44f8c6..b12e7cc083b 100644 --- a/factory/mock/processComponentsStub.go +++ b/factory/mock/processComponentsStub.go @@ -19,6 +19,7 @@ type ProcessComponentsMock struct { NodesCoord nodesCoordinator.NodesCoordinator ShardCoord sharding.Coordinator IntContainer process.InterceptorsContainer + FullArchiveIntContainer process.InterceptorsContainer ResContainer dataRetriever.ResolversContainer ReqFinder dataRetriever.RequestersFinder RoundHandlerField consensus.RoundHandler @@ -37,7 +38,8 @@ type ProcessComponentsMock struct { ReqHandler process.RequestHandler TxLogsProcess process.TransactionLogProcessorDatabase HeaderConstructValidator process.HeaderConstructionValidator - PeerMapper process.NetworkShardingCollector + MainPeerMapper process.NetworkShardingCollector + FullArchivePeerMapper process.NetworkShardingCollector TxSimulatorProcessor factory.TransactionSimulatorProcessor FallbackHdrValidator process.FallbackHeaderValidator WhiteListHandlerInternal process.WhiteListHandler @@ -86,6 +88,11 @@ func (pcm *ProcessComponentsMock) InterceptorsContainer() process.InterceptorsCo return pcm.IntContainer } +// FullArchiveInterceptorsContainer - +func (pcm *ProcessComponentsMock) FullArchiveInterceptorsContainer() process.InterceptorsContainer { + return pcm.FullArchiveIntContainer +} + // ResolversContainer - func (pcm *ProcessComponentsMock) ResolversContainer() dataRetriever.ResolversContainer { return pcm.ResContainer @@ -178,7 +185,12 @@ func (pcm *ProcessComponentsMock) HeaderConstructionValidator() process.HeaderCo // PeerShardMapper - func (pcm *ProcessComponentsMock) PeerShardMapper() process.NetworkShardingCollector { - return pcm.PeerMapper + return pcm.MainPeerMapper +} + +// FullArchivePeerShardMapper - +func (pcm *ProcessComponentsMock) FullArchivePeerShardMapper() process.NetworkShardingCollector { + return pcm.FullArchivePeerMapper } // FallbackHeaderValidator - diff --git a/factory/network/networkComponents.go b/factory/network/networkComponents.go index e34993b5ac7..a3cfc467c88 100644 --- a/factory/network/networkComponents.go +++ b/factory/network/networkComponents.go @@ -10,7 +10,6 @@ import ( "github.com/multiversx/mx-chain-core-go/marshal" "github.com/multiversx/mx-chain-go/config" "github.com/multiversx/mx-chain-go/consensus" - "github.com/multiversx/mx-chain-go/debug/antiflood" "github.com/multiversx/mx-chain-go/errors" "github.com/multiversx/mx-chain-go/factory" "github.com/multiversx/mx-chain-go/factory/disabled" @@ -144,42 +143,65 @@ func (ncf *networkComponentsFactory) Create() (*networkComponents, error) { } }() - var antiFloodComponents *antifloodFactory.AntiFloodComponents - antiFloodComponents, err = antifloodFactory.NewP2PAntiFloodComponents(ctx, ncf.mainConfig, ncf.statusHandler, mainNetworkComp.netMessenger.ID()) + antiFloodComponents, inputAntifloodHandler, outputAntifloodHandler, peerHonestyHandler, err := ncf.createAntifloodComponents(ctx, mainNetworkComp.netMessenger.ID()) if err != nil { return nil, err } - // TODO: move to NewP2PAntiFloodComponents.initP2PAntiFloodComponents - if ncf.mainConfig.Debug.Antiflood.Enabled { - var debugger process.AntifloodDebugger - debugger, err = antiflood.NewAntifloodDebugger(ncf.mainConfig.Debug.Antiflood) - if err != nil { - return nil, err - } + err = mainNetworkComp.netMessenger.Bootstrap() + if err != nil { + return nil, err + } - err = antiFloodComponents.AntiFloodHandler.SetDebugger(debugger) - if err != nil { - return nil, err - } + mainNetworkComp.netMessenger.WaitForConnections(ncf.bootstrapWaitTime, ncf.mainP2PConfig.Node.MinNumPeersToWaitForOnBootstrap) + + err = fullArchiveNetworkComp.netMessenger.Bootstrap() + if err != nil { + return nil, err + } + + return &networkComponents{ + mainNetworkHolder: mainNetworkComp, + fullArchiveNetworkHolder: fullArchiveNetworkComp, + inputAntifloodHandler: inputAntifloodHandler, + outputAntifloodHandler: outputAntifloodHandler, + pubKeyTimeCacher: antiFloodComponents.PubKeysCacher, + topicFloodPreventer: antiFloodComponents.TopicPreventer, + floodPreventers: antiFloodComponents.FloodPreventers, + peerBlackListHandler: antiFloodComponents.BlacklistHandler, + antifloodConfig: ncf.mainConfig.Antiflood, + peerHonestyHandler: peerHonestyHandler, + peersHolder: peersHolder, + closeFunc: cancelFunc, + }, nil +} + +func (ncf *networkComponentsFactory) createAntifloodComponents( + ctx context.Context, + currentPid core.PeerID, +) (*antifloodFactory.AntiFloodComponents, factory.P2PAntifloodHandler, factory.P2PAntifloodHandler, consensus.PeerHonestyHandler, error) { + var antiFloodComponents *antifloodFactory.AntiFloodComponents + antiFloodComponents, err := antifloodFactory.NewP2PAntiFloodComponents(ctx, ncf.mainConfig, ncf.statusHandler, currentPid) + if err != nil { + return nil, nil, nil, nil, err } inputAntifloodHandler, ok := antiFloodComponents.AntiFloodHandler.(factory.P2PAntifloodHandler) if !ok { err = errors.ErrWrongTypeAssertion - return nil, fmt.Errorf("%w when casting input antiflood handler to P2PAntifloodHandler", err) + return nil, nil, nil, nil, fmt.Errorf("%w when casting input antiflood handler to P2PAntifloodHandler", err) } var outAntifloodHandler process.P2PAntifloodHandler outAntifloodHandler, err = antifloodFactory.NewP2POutputAntiFlood(ctx, ncf.mainConfig) if err != nil { - return nil, err + return nil, nil, nil, nil, err } outputAntifloodHandler, ok := outAntifloodHandler.(factory.P2PAntifloodHandler) if !ok { err = errors.ErrWrongTypeAssertion - return nil, fmt.Errorf("%w when casting output antiflood handler to P2PAntifloodHandler", err) + return nil, nil, nil, nil, fmt.Errorf("%w when casting output antiflood handler to P2PAntifloodHandler", err) } var peerHonestyHandler consensus.PeerHonestyHandler @@ -189,35 +211,10 @@ func (ncf *networkComponentsFactory) Create() (*networkComponents, error) { antiFloodComponents.PubKeysCacher, ) if err != nil { - return nil, err - } - - err = mainNetworkComp.netMessenger.Bootstrap() - if err != nil { - return nil, err - } - - mainNetworkComp.netMessenger.WaitForConnections(ncf.bootstrapWaitTime, ncf.mainP2PConfig.Node.MinNumPeersToWaitForOnBootstrap) - - err = fullArchiveNetworkComp.netMessenger.Bootstrap() - if err != nil { - return nil, err + return nil, nil, nil, nil, err } - return &networkComponents{ - mainNetworkHolder: mainNetworkComp, - fullArchiveNetworkHolder: fullArchiveNetworkComp, - inputAntifloodHandler: inputAntifloodHandler, - outputAntifloodHandler: outputAntifloodHandler, - pubKeyTimeCacher: antiFloodComponents.PubKeysCacher, - topicFloodPreventer: antiFloodComponents.TopicPreventer, - floodPreventers: antiFloodComponents.FloodPreventers, - peerBlackListHandler: antiFloodComponents.BlacklistHandler, - antifloodConfig: ncf.mainConfig.Antiflood, - peerHonestyHandler: peerHonestyHandler, - peersHolder: peersHolder, - closeFunc: cancelFunc, - }, nil + return antiFloodComponents, inputAntifloodHandler, outputAntifloodHandler, peerHonestyHandler, nil } func (ncf *networkComponentsFactory) createPeerHonestyHandler( @@ -324,9 +321,6 @@ func (nc *networkComponents) Close() error { if !check.IfNil(nc.outputAntifloodHandler) { log.LogIfError(nc.outputAntifloodHandler.Close()) } - if !check.IfNil(nc.topicFloodPreventer) { - log.LogIfError(nc.outputAntifloodHandler.Close()) - } if !check.IfNil(nc.peerHonestyHandler) { log.LogIfError(nc.peerHonestyHandler.Close()) } diff --git a/factory/network/networkComponentsHandler.go b/factory/network/networkComponentsHandler.go index 2afd33f6ede..ce018c5d057 100644 --- a/factory/network/networkComponentsHandler.go +++ b/factory/network/networkComponentsHandler.go @@ -15,6 +15,11 @@ var _ factory.ComponentHandler = (*managedNetworkComponents)(nil) var _ factory.NetworkComponentsHolder = (*managedNetworkComponents)(nil) var _ factory.NetworkComponentsHandler = (*managedNetworkComponents)(nil) +const ( + errorOnMainNetworkString = "on main network" + errorOnFullArchiveNetworkString = "on full archive network" +) + // managedNetworkComponents creates the data components handler that can create, close and access the data components type managedNetworkComponents struct { *networkComponents @@ -75,23 +80,25 @@ func (mnc *managedNetworkComponents) CheckSubcomponents() error { return errors.ErrNilNetworkComponents } if check.IfNil(mnc.mainNetworkHolder.netMessenger) { - return fmt.Errorf("%w for main", errors.ErrNilMessenger) + return fmt.Errorf("%w %s", errors.ErrNilMessenger, errorOnMainNetworkString) } if check.IfNil(mnc.mainNetworkHolder.peersRatingHandler) { - return fmt.Errorf("%w for main", errors.ErrNilPeersRatingHandler) + return fmt.Errorf("%w %s", errors.ErrNilPeersRatingHandler, errorOnMainNetworkString) } if check.IfNil(mnc.mainNetworkHolder.peersRatingMonitor) { - return fmt.Errorf("%w for main", errors.ErrNilPeersRatingMonitor) + return fmt.Errorf("%w %s", errors.ErrNilPeersRatingMonitor, errorOnMainNetworkString) } + if check.IfNil(mnc.fullArchiveNetworkHolder.netMessenger) { - return fmt.Errorf("%w for full archive", errors.ErrNilMessenger) + return fmt.Errorf("%w %s", errors.ErrNilMessenger, errorOnFullArchiveNetworkString) } if check.IfNil(mnc.fullArchiveNetworkHolder.peersRatingHandler) { - return fmt.Errorf("%w for full archive", errors.ErrNilPeersRatingHandler) + return fmt.Errorf("%w %s", errors.ErrNilPeersRatingHandler, errorOnFullArchiveNetworkString) } if check.IfNil(mnc.fullArchiveNetworkHolder.peersRatingMonitor) { - return fmt.Errorf("%w for full archive", errors.ErrNilPeersRatingMonitor) + return fmt.Errorf("%w %s", errors.ErrNilPeersRatingMonitor, errorOnFullArchiveNetworkString) } + if check.IfNil(mnc.inputAntifloodHandler) { return errors.ErrNilInputAntiFloodHandler } diff --git a/factory/processing/processComponents.go b/factory/processing/processComponents.go index a93d3802045..db89edbe3f5 100644 --- a/factory/processing/processComponents.go +++ b/factory/processing/processComponents.go @@ -42,6 +42,7 @@ import ( "github.com/multiversx/mx-chain-go/genesis" "github.com/multiversx/mx-chain-go/genesis/checking" processGenesis "github.com/multiversx/mx-chain-go/genesis/process" + "github.com/multiversx/mx-chain-go/p2p" "github.com/multiversx/mx-chain-go/process" "github.com/multiversx/mx-chain-go/process/block" "github.com/multiversx/mx-chain-go/process/block/bootstrapStorage" @@ -83,49 +84,51 @@ var timeSpanForBadHeaders = time.Minute * 2 // processComponents struct holds the process components type processComponents struct { - nodesCoordinator nodesCoordinator.NodesCoordinator - shardCoordinator sharding.Coordinator - interceptorsContainer process.InterceptorsContainer - resolversContainer dataRetriever.ResolversContainer - requestersFinder dataRetriever.RequestersFinder - roundHandler consensus.RoundHandler - epochStartTrigger epochStart.TriggerHandler - epochStartNotifier factory.EpochStartNotifier - forkDetector process.ForkDetector - blockProcessor process.BlockProcessor - blackListHandler process.TimeCacher - bootStorer process.BootStorer - headerSigVerifier process.InterceptedHeaderSigVerifier - headerIntegrityVerifier nodeFactory.HeaderIntegrityVerifierHandler - validatorsStatistics process.ValidatorStatisticsProcessor - validatorsProvider process.ValidatorsProvider - blockTracker process.BlockTracker - pendingMiniBlocksHandler process.PendingMiniBlocksHandler - requestHandler process.RequestHandler - txLogsProcessor process.TransactionLogProcessorDatabase - headerConstructionValidator process.HeaderConstructionValidator - peerShardMapper process.NetworkShardingCollector - txSimulatorProcessor factory.TransactionSimulatorProcessor - miniBlocksPoolCleaner process.PoolsCleaner - txsPoolCleaner process.PoolsCleaner - fallbackHeaderValidator process.FallbackHeaderValidator - whiteListHandler process.WhiteListHandler - whiteListerVerifiedTxs process.WhiteListHandler - historyRepository dblookupext.HistoryRepository - importStartHandler update.ImportStartHandler - requestedItemsHandler dataRetriever.RequestedItemsHandler - importHandler update.ImportHandler - nodeRedundancyHandler consensus.NodeRedundancyHandler - currentEpochProvider dataRetriever.CurrentNetworkEpochProviderHandler - vmFactoryForTxSimulator process.VirtualMachinesContainerFactory - vmFactoryForProcessing process.VirtualMachinesContainerFactory - scheduledTxsExecutionHandler process.ScheduledTxsExecutionHandler - txsSender process.TxsSenderHandler - hardforkTrigger factory.HardforkTrigger - processedMiniBlocksTracker process.ProcessedMiniBlocksTracker - esdtDataStorageForApi vmcommon.ESDTNFTStorageHandler - accountsParser genesis.AccountsParser - receiptsRepository mainFactory.ReceiptsRepository + nodesCoordinator nodesCoordinator.NodesCoordinator + shardCoordinator sharding.Coordinator + mainInterceptorsContainer process.InterceptorsContainer + fullArchiveInterceptorsContainer process.InterceptorsContainer + resolversContainer dataRetriever.ResolversContainer + requestersFinder dataRetriever.RequestersFinder + roundHandler consensus.RoundHandler + epochStartTrigger epochStart.TriggerHandler + epochStartNotifier factory.EpochStartNotifier + forkDetector process.ForkDetector + blockProcessor process.BlockProcessor + blackListHandler process.TimeCacher + bootStorer process.BootStorer + headerSigVerifier process.InterceptedHeaderSigVerifier + headerIntegrityVerifier nodeFactory.HeaderIntegrityVerifierHandler + validatorsStatistics process.ValidatorStatisticsProcessor + validatorsProvider process.ValidatorsProvider + blockTracker process.BlockTracker + pendingMiniBlocksHandler process.PendingMiniBlocksHandler + requestHandler process.RequestHandler + txLogsProcessor process.TransactionLogProcessorDatabase + headerConstructionValidator process.HeaderConstructionValidator + mainPeerShardMapper process.NetworkShardingCollector + fullArchivePeerShardMapper process.NetworkShardingCollector + txSimulatorProcessor factory.TransactionSimulatorProcessor + miniBlocksPoolCleaner process.PoolsCleaner + txsPoolCleaner process.PoolsCleaner + fallbackHeaderValidator process.FallbackHeaderValidator + whiteListHandler process.WhiteListHandler + whiteListerVerifiedTxs process.WhiteListHandler + historyRepository dblookupext.HistoryRepository + importStartHandler update.ImportStartHandler + requestedItemsHandler dataRetriever.RequestedItemsHandler + importHandler update.ImportHandler + nodeRedundancyHandler consensus.NodeRedundancyHandler + currentEpochProvider dataRetriever.CurrentNetworkEpochProviderHandler + vmFactoryForTxSimulator process.VirtualMachinesContainerFactory + vmFactoryForProcessing process.VirtualMachinesContainerFactory + scheduledTxsExecutionHandler process.ScheduledTxsExecutionHandler + txsSender process.TxsSenderHandler + hardforkTrigger factory.HardforkTrigger + processedMiniBlocksTracker process.ProcessedMiniBlocksTracker + esdtDataStorageForApi vmcommon.ESDTNFTStorageHandler + accountsParser genesis.AccountsParser + receiptsRepository mainFactory.ReceiptsRepository } // ProcessComponentsFactoryArgs holds the arguments needed to create a process components factory @@ -264,8 +267,16 @@ func (pcf *processComponentsFactory) Create() (*processComponents, error) { return nil, err } - // TODO: maybe move PeerShardMapper to network components - peerShardMapper, err := pcf.prepareNetworkShardingCollector() + mainPeerShardMapper, err := pcf.prepareNetworkShardingCollectorForMessenger(pcf.network.NetworkMessenger()) + if err != nil { + return nil, err + } + fullArchivePeerShardMapper, err := pcf.prepareNetworkShardingCollectorForMessenger(pcf.network.FullArchiveNetworkMessenger()) + if err != nil { + return nil, err + } + + err = pcf.network.InputAntiFloodHandler().SetPeerValidatorMapper(mainPeerShardMapper) if err != nil { return nil, err } @@ -493,7 +504,8 @@ func (pcf *processComponentsFactory) Create() (*processComponents, error) { blockTracker, epochStartTrigger, requestHandler, - peerShardMapper, + mainPeerShardMapper, + fullArchivePeerShardMapper, hardforkTrigger, ) if err != nil { @@ -501,7 +513,7 @@ func (pcf *processComponentsFactory) Create() (*processComponents, error) { } // TODO refactor all these factory calls - interceptorsContainer, err := interceptorContainerFactory.Create() + mainInterceptorsContainer, fullArchiveInterceptorsContainer, err := interceptorContainerFactory.Create() if err != nil { return nil, err } @@ -511,7 +523,8 @@ func (pcf *processComponentsFactory) Create() (*processComponents, error) { requestHandler, resolversContainer, requestersContainer, - interceptorsContainer, + mainInterceptorsContainer, + fullArchiveInterceptorsContainer, headerSigVerifier, blockTracker, ) @@ -668,49 +681,51 @@ func (pcf *processComponentsFactory) Create() (*processComponents, error) { } return &processComponents{ - nodesCoordinator: pcf.nodesCoordinator, - shardCoordinator: pcf.bootstrapComponents.ShardCoordinator(), - interceptorsContainer: interceptorsContainer, - resolversContainer: resolversContainer, - requestersFinder: requestersFinder, - roundHandler: pcf.coreData.RoundHandler(), - forkDetector: forkDetector, - blockProcessor: blockProcessorComponents.blockProcessor, - epochStartTrigger: epochStartTrigger, - epochStartNotifier: pcf.coreData.EpochStartNotifierWithConfirm(), - blackListHandler: blackListHandler, - bootStorer: bootStorer, - headerSigVerifier: headerSigVerifier, - validatorsStatistics: validatorStatisticsProcessor, - validatorsProvider: validatorsProvider, - blockTracker: blockTracker, - pendingMiniBlocksHandler: pendingMiniBlocksHandler, - requestHandler: requestHandler, - txLogsProcessor: txLogsProcessor, - headerConstructionValidator: headerValidator, - headerIntegrityVerifier: pcf.bootstrapComponents.HeaderIntegrityVerifier(), - peerShardMapper: peerShardMapper, - txSimulatorProcessor: txSimulatorProcessor, - miniBlocksPoolCleaner: mbsPoolsCleaner, - txsPoolCleaner: txsPoolsCleaner, - fallbackHeaderValidator: fallbackHeaderValidator, - whiteListHandler: pcf.whiteListHandler, - whiteListerVerifiedTxs: pcf.whiteListerVerifiedTxs, - historyRepository: pcf.historyRepo, - importStartHandler: pcf.importStartHandler, - requestedItemsHandler: pcf.requestedItemsHandler, - importHandler: pcf.importHandler, - nodeRedundancyHandler: nodeRedundancyHandler, - currentEpochProvider: currentEpochProvider, - vmFactoryForTxSimulator: vmFactoryForTxSimulate, - vmFactoryForProcessing: blockProcessorComponents.vmFactoryForProcessing, - scheduledTxsExecutionHandler: scheduledTxsExecutionHandler, - txsSender: txsSenderWithAccumulator, - hardforkTrigger: hardforkTrigger, - processedMiniBlocksTracker: processedMiniBlocksTracker, - esdtDataStorageForApi: pcf.esdtNftStorage, - accountsParser: pcf.accountsParser, - receiptsRepository: receiptsRepository, + nodesCoordinator: pcf.nodesCoordinator, + shardCoordinator: pcf.bootstrapComponents.ShardCoordinator(), + mainInterceptorsContainer: mainInterceptorsContainer, + fullArchiveInterceptorsContainer: fullArchiveInterceptorsContainer, + resolversContainer: resolversContainer, + requestersFinder: requestersFinder, + roundHandler: pcf.coreData.RoundHandler(), + forkDetector: forkDetector, + blockProcessor: blockProcessorComponents.blockProcessor, + epochStartTrigger: epochStartTrigger, + epochStartNotifier: pcf.coreData.EpochStartNotifierWithConfirm(), + blackListHandler: blackListHandler, + bootStorer: bootStorer, + headerSigVerifier: headerSigVerifier, + validatorsStatistics: validatorStatisticsProcessor, + validatorsProvider: validatorsProvider, + blockTracker: blockTracker, + pendingMiniBlocksHandler: pendingMiniBlocksHandler, + requestHandler: requestHandler, + txLogsProcessor: txLogsProcessor, + headerConstructionValidator: headerValidator, + headerIntegrityVerifier: pcf.bootstrapComponents.HeaderIntegrityVerifier(), + mainPeerShardMapper: mainPeerShardMapper, + fullArchivePeerShardMapper: fullArchivePeerShardMapper, + txSimulatorProcessor: txSimulatorProcessor, + miniBlocksPoolCleaner: mbsPoolsCleaner, + txsPoolCleaner: txsPoolsCleaner, + fallbackHeaderValidator: fallbackHeaderValidator, + whiteListHandler: pcf.whiteListHandler, + whiteListerVerifiedTxs: pcf.whiteListerVerifiedTxs, + historyRepository: pcf.historyRepo, + importStartHandler: pcf.importStartHandler, + requestedItemsHandler: pcf.requestedItemsHandler, + importHandler: pcf.importHandler, + nodeRedundancyHandler: nodeRedundancyHandler, + currentEpochProvider: currentEpochProvider, + vmFactoryForTxSimulator: vmFactoryForTxSimulate, + vmFactoryForProcessing: blockProcessorComponents.vmFactoryForProcessing, + scheduledTxsExecutionHandler: scheduledTxsExecutionHandler, + txsSender: txsSenderWithAccumulator, + hardforkTrigger: hardforkTrigger, + processedMiniBlocksTracker: processedMiniBlocksTracker, + esdtDataStorageForApi: pcf.esdtNftStorage, + accountsParser: pcf.accountsParser, + receiptsRepository: receiptsRepository, }, nil } @@ -1431,9 +1446,15 @@ func (pcf *processComponentsFactory) newInterceptorContainerFactory( validityAttester process.ValidityAttester, epochStartTrigger process.EpochStartTriggerHandler, requestHandler process.RequestHandler, - peerShardMapper *networksharding.PeerShardMapper, + mainPeerShardMapper *networksharding.PeerShardMapper, + fullArchivePeerShardMapper *networksharding.PeerShardMapper, hardforkTrigger factory.HardforkTrigger, ) (process.InterceptorsContainerFactory, process.TimeCacher, error) { + nodeOperationMode := p2p.NormalOperation + if pcf.prefConfigs.Preferences.FullArchive { + nodeOperationMode = p2p.FullArchiveMode + } + shardCoordinator := pcf.bootstrapComponents.ShardCoordinator() if shardCoordinator.SelfId() < shardCoordinator.NumberOfShards() { return pcf.newShardInterceptorContainerFactory( @@ -1442,8 +1463,10 @@ func (pcf *processComponentsFactory) newInterceptorContainerFactory( validityAttester, epochStartTrigger, requestHandler, - peerShardMapper, + mainPeerShardMapper, + fullArchivePeerShardMapper, hardforkTrigger, + nodeOperationMode, ) } if shardCoordinator.SelfId() == core.MetachainShardId { @@ -1453,8 +1476,10 @@ func (pcf *processComponentsFactory) newInterceptorContainerFactory( validityAttester, epochStartTrigger, requestHandler, - peerShardMapper, + mainPeerShardMapper, + fullArchivePeerShardMapper, hardforkTrigger, + nodeOperationMode, ) } @@ -1590,8 +1615,10 @@ func (pcf *processComponentsFactory) newShardInterceptorContainerFactory( validityAttester process.ValidityAttester, epochStartTrigger process.EpochStartTriggerHandler, requestHandler process.RequestHandler, - peerShardMapper *networksharding.PeerShardMapper, + mainPeerShardMapper *networksharding.PeerShardMapper, + fullArchivePeerShardMapper *networksharding.PeerShardMapper, hardforkTrigger factory.HardforkTrigger, + nodeOperationMode p2p.NodeOperation, ) (process.InterceptorsContainerFactory, process.TimeCacher, error) { headerBlackList := cache.NewTimeCache(timeSpanForBadHeaders) shardInterceptorsContainerFactoryArgs := interceptorscontainer.CommonInterceptorsContainerFactoryArgs{ @@ -1600,7 +1627,8 @@ func (pcf *processComponentsFactory) newShardInterceptorContainerFactory( Accounts: pcf.state.AccountsAdapter(), ShardCoordinator: pcf.bootstrapComponents.ShardCoordinator(), NodesCoordinator: pcf.nodesCoordinator, - Messenger: pcf.network.NetworkMessenger(), + MainMessenger: pcf.network.NetworkMessenger(), + FullArchiveMessenger: pcf.network.FullArchiveNetworkMessenger(), Store: pcf.data.StorageService(), DataPool: pcf.data.Datapool(), MaxTxNonceDeltaAllowed: common.MaxTxNonceDeltaAllowed, @@ -1620,8 +1648,10 @@ func (pcf *processComponentsFactory) newShardInterceptorContainerFactory( PeerSignatureHandler: pcf.crypto.PeerSignatureHandler(), SignaturesHandler: pcf.network.NetworkMessenger(), HeartbeatExpiryTimespanInSec: pcf.config.HeartbeatV2.HeartbeatExpiryTimespanInSec, - PeerShardMapper: peerShardMapper, + MainPeerShardMapper: mainPeerShardMapper, + FullArchivePeerShardMapper: fullArchivePeerShardMapper, HardforkTrigger: hardforkTrigger, + NodeOperationMode: nodeOperationMode, } interceptorContainerFactory, err := interceptorscontainer.NewShardInterceptorsContainerFactory(shardInterceptorsContainerFactoryArgs) @@ -1638,8 +1668,10 @@ func (pcf *processComponentsFactory) newMetaInterceptorContainerFactory( validityAttester process.ValidityAttester, epochStartTrigger process.EpochStartTriggerHandler, requestHandler process.RequestHandler, - peerShardMapper *networksharding.PeerShardMapper, + mainPeerShardMapper *networksharding.PeerShardMapper, + fullArchivePeerShardMapper *networksharding.PeerShardMapper, hardforkTrigger factory.HardforkTrigger, + nodeOperationMode p2p.NodeOperation, ) (process.InterceptorsContainerFactory, process.TimeCacher, error) { headerBlackList := cache.NewTimeCache(timeSpanForBadHeaders) metaInterceptorsContainerFactoryArgs := interceptorscontainer.CommonInterceptorsContainerFactoryArgs{ @@ -1647,7 +1679,8 @@ func (pcf *processComponentsFactory) newMetaInterceptorContainerFactory( CryptoComponents: pcf.crypto, ShardCoordinator: pcf.bootstrapComponents.ShardCoordinator(), NodesCoordinator: pcf.nodesCoordinator, - Messenger: pcf.network.NetworkMessenger(), + MainMessenger: pcf.network.NetworkMessenger(), + FullArchiveMessenger: pcf.network.FullArchiveNetworkMessenger(), Store: pcf.data.StorageService(), DataPool: pcf.data.Datapool(), Accounts: pcf.state.AccountsAdapter(), @@ -1668,8 +1701,10 @@ func (pcf *processComponentsFactory) newMetaInterceptorContainerFactory( PeerSignatureHandler: pcf.crypto.PeerSignatureHandler(), SignaturesHandler: pcf.network.NetworkMessenger(), HeartbeatExpiryTimespanInSec: pcf.config.HeartbeatV2.HeartbeatExpiryTimespanInSec, - PeerShardMapper: peerShardMapper, + MainPeerShardMapper: mainPeerShardMapper, + FullArchivePeerShardMapper: fullArchivePeerShardMapper, HardforkTrigger: hardforkTrigger, + NodeOperationMode: nodeOperationMode, } interceptorContainerFactory, err := interceptorscontainer.NewMetaInterceptorsContainerFactory(metaInterceptorsContainerFactoryArgs) @@ -1695,8 +1730,8 @@ func (pcf *processComponentsFactory) newForkDetector( return nil, errors.New("could not create fork detector") } -// PrepareNetworkShardingCollector will create the network sharding collector and apply it to the network messenger -func (pcf *processComponentsFactory) prepareNetworkShardingCollector() (*networksharding.PeerShardMapper, error) { +// prepareNetworkShardingCollectorForMessenger will create the network sharding collector and apply it to the provided network messenger +func (pcf *processComponentsFactory) prepareNetworkShardingCollectorForMessenger(messenger p2p.Messenger) (*networksharding.PeerShardMapper, error) { networkShardingCollector, err := createNetworkShardingCollector( &pcf.config, pcf.nodesCoordinator, @@ -1709,12 +1744,7 @@ func (pcf *processComponentsFactory) prepareNetworkShardingCollector() (*network localID := pcf.network.NetworkMessenger().ID() networkShardingCollector.UpdatePeerIDInfo(localID, pcf.crypto.PublicKeyBytes(), pcf.bootstrapComponents.ShardCoordinator().SelfId()) - err = pcf.network.NetworkMessenger().SetPeerShardResolver(networkShardingCollector) - if err != nil { - return nil, err - } - - err = pcf.network.InputAntiFloodHandler().SetPeerValidatorMapper(networkShardingCollector) + err = messenger.SetPeerShardResolver(networkShardingCollector) if err != nil { return nil, err } @@ -1727,7 +1757,8 @@ func (pcf *processComponentsFactory) createExportFactoryHandler( requestHandler process.RequestHandler, resolversContainer dataRetriever.ResolversContainer, requestersContainer dataRetriever.RequestersContainer, - interceptorsContainer process.InterceptorsContainer, + mainInterceptorsContainer process.InterceptorsContainer, + fullArchiveInterceptorsContainer process.InterceptorsContainer, headerSigVerifier process.InterceptedHeaderSigVerifier, blockTracker process.ValidityAttester, ) (update.ExportFactoryHandler, error) { @@ -1737,39 +1768,46 @@ func (pcf *processComponentsFactory) createExportFactoryHandler( accountsDBs[state.UserAccountsState] = pcf.state.AccountsAdapter() accountsDBs[state.PeerAccountsState] = pcf.state.PeerAccounts() exportFolder := filepath.Join(pcf.flagsConfig.WorkingDir, hardforkConfig.ImportFolder) + nodeOperationMode := p2p.NormalOperation + if pcf.prefConfigs.Preferences.FullArchive { + nodeOperationMode = p2p.FullArchiveMode + } argsExporter := updateFactory.ArgsExporter{ - CoreComponents: pcf.coreData, - CryptoComponents: pcf.crypto, - StatusCoreComponents: pcf.statusCoreComponents, - HeaderValidator: headerValidator, - DataPool: pcf.data.Datapool(), - StorageService: pcf.data.StorageService(), - RequestHandler: requestHandler, - ShardCoordinator: pcf.bootstrapComponents.ShardCoordinator(), - Messenger: pcf.network.NetworkMessenger(), - ActiveAccountsDBs: accountsDBs, - ExistingResolvers: resolversContainer, - ExistingRequesters: requestersContainer, - ExportFolder: exportFolder, - ExportTriesStorageConfig: hardforkConfig.ExportTriesStorageConfig, - ExportStateStorageConfig: hardforkConfig.ExportStateStorageConfig, - ExportStateKeysConfig: hardforkConfig.ExportKeysStorageConfig, - MaxTrieLevelInMemory: pcf.config.StateTriesConfig.MaxStateTrieLevelInMemory, - WhiteListHandler: pcf.whiteListHandler, - WhiteListerVerifiedTxs: pcf.whiteListerVerifiedTxs, - InterceptorsContainer: interceptorsContainer, - NodesCoordinator: pcf.nodesCoordinator, - HeaderSigVerifier: headerSigVerifier, - HeaderIntegrityVerifier: pcf.bootstrapComponents.HeaderIntegrityVerifier(), - ValidityAttester: blockTracker, - InputAntifloodHandler: pcf.network.InputAntiFloodHandler(), - OutputAntifloodHandler: pcf.network.OutputAntiFloodHandler(), - RoundHandler: pcf.coreData.RoundHandler(), - InterceptorDebugConfig: pcf.config.Debug.InterceptorResolver, - MaxHardCapForMissingNodes: pcf.config.TrieSync.MaxHardCapForMissingNodes, - NumConcurrentTrieSyncers: pcf.config.TrieSync.NumConcurrentTrieSyncers, - TrieSyncerVersion: pcf.config.TrieSync.TrieSyncerVersion, - PeersRatingHandler: pcf.network.PeersRatingHandler(), + CoreComponents: pcf.coreData, + CryptoComponents: pcf.crypto, + StatusCoreComponents: pcf.statusCoreComponents, + HeaderValidator: headerValidator, + DataPool: pcf.data.Datapool(), + StorageService: pcf.data.StorageService(), + RequestHandler: requestHandler, + ShardCoordinator: pcf.bootstrapComponents.ShardCoordinator(), + MainMessenger: pcf.network.NetworkMessenger(), + FullArchiveMessenger: pcf.network.FullArchiveNetworkMessenger(), + ActiveAccountsDBs: accountsDBs, + ExistingResolvers: resolversContainer, + ExistingRequesters: requestersContainer, + ExportFolder: exportFolder, + ExportTriesStorageConfig: hardforkConfig.ExportTriesStorageConfig, + ExportStateStorageConfig: hardforkConfig.ExportStateStorageConfig, + ExportStateKeysConfig: hardforkConfig.ExportKeysStorageConfig, + MaxTrieLevelInMemory: pcf.config.StateTriesConfig.MaxStateTrieLevelInMemory, + WhiteListHandler: pcf.whiteListHandler, + WhiteListerVerifiedTxs: pcf.whiteListerVerifiedTxs, + MainInterceptorsContainer: mainInterceptorsContainer, + FullArchiveInterceptorsContainer: fullArchiveInterceptorsContainer, + NodesCoordinator: pcf.nodesCoordinator, + HeaderSigVerifier: headerSigVerifier, + HeaderIntegrityVerifier: pcf.bootstrapComponents.HeaderIntegrityVerifier(), + ValidityAttester: blockTracker, + InputAntifloodHandler: pcf.network.InputAntiFloodHandler(), + OutputAntifloodHandler: pcf.network.OutputAntiFloodHandler(), + RoundHandler: pcf.coreData.RoundHandler(), + InterceptorDebugConfig: pcf.config.Debug.InterceptorResolver, + MaxHardCapForMissingNodes: pcf.config.TrieSync.MaxHardCapForMissingNodes, + NumConcurrentTrieSyncers: pcf.config.TrieSync.NumConcurrentTrieSyncers, + TrieSyncerVersion: pcf.config.TrieSync.TrieSyncerVersion, + PeersRatingHandler: pcf.network.PeersRatingHandler(), + NodeOperationMode: nodeOperationMode, } return updateFactory.NewExportHandlerFactory(argsExporter) } @@ -1951,8 +1989,9 @@ func (pc *processComponents) Close() error { if !check.IfNil(pc.importHandler) { log.LogIfError(pc.importHandler.Close()) } - if !check.IfNil(pc.interceptorsContainer) { - log.LogIfError(pc.interceptorsContainer.Close()) + // only calling close on the mainInterceptorsContainer as it should be the same interceptors on full archive + if !check.IfNil(pc.mainInterceptorsContainer) { + log.LogIfError(pc.mainInterceptorsContainer.Close()) } if !check.IfNil(pc.vmFactoryForTxSimulator) { log.LogIfError(pc.vmFactoryForTxSimulator.Close()) diff --git a/factory/processing/processComponentsHandler.go b/factory/processing/processComponentsHandler.go index 098ea22e71e..c29985caa29 100644 --- a/factory/processing/processComponentsHandler.go +++ b/factory/processing/processComponentsHandler.go @@ -1,6 +1,7 @@ package processing import ( + "fmt" "sync" "github.com/multiversx/mx-chain-core-go/core/check" @@ -86,8 +87,11 @@ func (m *managedProcessComponents) CheckSubcomponents() error { if check.IfNil(m.processComponents.shardCoordinator) { return errors.ErrNilShardCoordinator } - if check.IfNil(m.processComponents.interceptorsContainer) { - return errors.ErrNilInterceptorsContainer + if check.IfNil(m.processComponents.mainInterceptorsContainer) { + return fmt.Errorf("%w on main network", errors.ErrNilInterceptorsContainer) + } + if check.IfNil(m.processComponents.fullArchiveInterceptorsContainer) { + return fmt.Errorf("%w on full archive network", errors.ErrNilInterceptorsContainer) } if check.IfNil(m.processComponents.resolversContainer) { return errors.ErrNilResolversContainer @@ -143,8 +147,11 @@ func (m *managedProcessComponents) CheckSubcomponents() error { if check.IfNil(m.processComponents.headerConstructionValidator) { return errors.ErrNilHeaderConstructionValidator } - if check.IfNil(m.processComponents.peerShardMapper) { - return errors.ErrNilPeerShardMapper + if check.IfNil(m.processComponents.mainPeerShardMapper) { + return fmt.Errorf("%w for main", errors.ErrNilPeerShardMapper) + } + if check.IfNil(m.processComponents.fullArchivePeerShardMapper) { + return fmt.Errorf("%w for full archive", errors.ErrNilPeerShardMapper) } if check.IfNil(m.processComponents.fallbackHeaderValidator) { return errors.ErrNilFallbackHeaderValidator @@ -195,7 +202,7 @@ func (m *managedProcessComponents) ShardCoordinator() sharding.Coordinator { return m.processComponents.shardCoordinator } -// InterceptorsContainer returns the interceptors container +// InterceptorsContainer returns the interceptors container on the main network func (m *managedProcessComponents) InterceptorsContainer() process.InterceptorsContainer { m.mutProcessComponents.RLock() defer m.mutProcessComponents.RUnlock() @@ -204,7 +211,19 @@ func (m *managedProcessComponents) InterceptorsContainer() process.InterceptorsC return nil } - return m.processComponents.interceptorsContainer + return m.processComponents.mainInterceptorsContainer +} + +// FullArchiveInterceptorsContainer returns the interceptors container on the full archive network +func (m *managedProcessComponents) FullArchiveInterceptorsContainer() process.InterceptorsContainer { + m.mutProcessComponents.RLock() + defer m.mutProcessComponents.RUnlock() + + if m.processComponents == nil { + return nil + } + + return m.processComponents.fullArchiveInterceptorsContainer } // ResolversContainer returns the resolvers container @@ -423,7 +442,7 @@ func (m *managedProcessComponents) HeaderConstructionValidator() process.HeaderC return m.processComponents.headerConstructionValidator } -// PeerShardMapper returns the peer to shard mapper +// PeerShardMapper returns the peer to shard mapper of the main network func (m *managedProcessComponents) PeerShardMapper() process.NetworkShardingCollector { m.mutProcessComponents.RLock() defer m.mutProcessComponents.RUnlock() @@ -432,7 +451,19 @@ func (m *managedProcessComponents) PeerShardMapper() process.NetworkShardingColl return nil } - return m.processComponents.peerShardMapper + return m.processComponents.mainPeerShardMapper +} + +// FullArchivePeerShardMapper returns the peer to shard mapper of the full archive network +func (m *managedProcessComponents) FullArchivePeerShardMapper() process.NetworkShardingCollector { + m.mutProcessComponents.RLock() + defer m.mutProcessComponents.RUnlock() + + if m.processComponents == nil { + return nil + } + + return m.processComponents.fullArchivePeerShardMapper } // FallbackHeaderValidator returns the fallback header validator diff --git a/factory/processing/processComponentsHandler_test.go b/factory/processing/processComponentsHandler_test.go index 534fef02ec8..d2081e48b6f 100644 --- a/factory/processing/processComponentsHandler_test.go +++ b/factory/processing/processComponentsHandler_test.go @@ -90,6 +90,8 @@ func TestManagedProcessComponents_Create(t *testing.T) { require.True(t, check.IfNil(managedProcessComponents.ScheduledTxsExecutionHandler())) require.True(t, check.IfNil(managedProcessComponents.ESDTDataStorageHandlerForAPI())) require.True(t, check.IfNil(managedProcessComponents.ReceiptsRepository())) + require.True(t, check.IfNil(managedProcessComponents.FullArchivePeerShardMapper())) + require.True(t, check.IfNil(managedProcessComponents.FullArchiveInterceptorsContainer())) err := managedProcessComponents.Create() require.NoError(t, err) @@ -131,6 +133,8 @@ func TestManagedProcessComponents_Create(t *testing.T) { require.False(t, check.IfNil(managedProcessComponents.ScheduledTxsExecutionHandler())) require.False(t, check.IfNil(managedProcessComponents.ESDTDataStorageHandlerForAPI())) require.False(t, check.IfNil(managedProcessComponents.ReceiptsRepository())) + require.False(t, check.IfNil(managedProcessComponents.FullArchivePeerShardMapper())) + require.False(t, check.IfNil(managedProcessComponents.FullArchiveInterceptorsContainer())) require.Equal(t, factory.ProcessComponentsName, managedProcessComponents.String()) }) diff --git a/factory/processing/processComponents_test.go b/factory/processing/processComponents_test.go index 4957aa60b50..af3cea67084 100644 --- a/factory/processing/processComponents_test.go +++ b/factory/processing/processComponents_test.go @@ -215,11 +215,12 @@ func createMockProcessComponentsFactoryArgs() processComp.ProcessComponentsFacto ManagedPeersHolderField: &testscommon.ManagedPeersHolderStub{}, }, Network: &testsMocks.NetworkComponentsStub{ - Messenger: &p2pmocks.MessengerStub{}, - InputAntiFlood: &testsMocks.P2PAntifloodHandlerStub{}, - OutputAntiFlood: &testsMocks.P2PAntifloodHandlerStub{}, - PreferredPeersHolder: &p2pmocks.PeersHolderStub{}, - PeersRatingHandlerField: &p2pmocks.PeersRatingHandlerStub{}, + Messenger: &p2pmocks.MessengerStub{}, + FullArchiveNetworkMessengerField: &p2pmocks.MessengerStub{}, + InputAntiFlood: &testsMocks.P2PAntifloodHandlerStub{}, + OutputAntiFlood: &testsMocks.P2PAntifloodHandlerStub{}, + PreferredPeersHolder: &p2pmocks.PeersHolderStub{}, + PeersRatingHandlerField: &p2pmocks.PeersRatingHandlerStub{}, }, BootstrapComponents: &mainFactoryMocks.BootstrapComponentsStub{ ShCoordinator: mock.NewMultiShardsCoordinatorMock(2), diff --git a/go.sum b/go.sum index 6c8a9c3057f..187cf8b78ce 100644 --- a/go.sum +++ b/go.sum @@ -37,10 +37,8 @@ dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7 dmitri.shuralyov.com/html/belt v0.0.0-20180602232347-f7d459c86be0/go.mod h1:JLBrvjyP0v+ecvNYvCpyZgu5/xkfAUhi6wJj28eUfSU= dmitri.shuralyov.com/service/change v0.0.0-20181023043359-a85b471d5412/go.mod h1:a1inKt/atXimZ4Mv927x+r7UpyzRUf4emIoiiSC2TN4= dmitri.shuralyov.com/state v0.0.0-20180228185332-28bcc343414c/go.mod h1:0PRwlb0D6DFvNNtx+9ybjezNCa8XF0xaYcETyp6rHWU= -filippo.io/edwards25519 v1.0.0/go.mod h1:N1IkdkCkiLB6tki+MYJoSx2JTY9NUlxZE7eHn5EwJns= git.apache.org/thrift.git v0.0.0-20180902110319-2566ecd5d999/go.mod h1:fPE2ZNJGynbRyZ4dJvy6G277gSllfV2HJqblrnkyeyg= github.com/AndreasBriese/bbloom v0.0.0-20190306092124-e2d15f34fcf9/go.mod h1:bOvUY6CB00SOBii9/FifXqc0awNKxLFCL/+pkDPuyl8= -github.com/AndreasBriese/bbloom v0.0.0-20190825152654-46b345b51c96/go.mod h1:bOvUY6CB00SOBii9/FifXqc0awNKxLFCL/+pkDPuyl8= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= @@ -63,15 +61,11 @@ github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+Ce github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= github.com/bradfitz/go-smtpd v0.0.0-20170404230938-deb6d6237625/go.mod h1:HYsPBTaaSFSlLx/70C2HPIMNZpVV8+vt/A+FMnYP11g= -github.com/btcsuite/btcd v0.0.0-20190824003749-130ea5bddde3/go.mod h1:3J08xEfcugPacsc34/LKRU2yO7YmuT8yt28J8k2+rrI= github.com/btcsuite/btcd v0.20.1-beta/go.mod h1:wVuoA8VJLEcwgqHBwHmzLRazpKxTv13Px/pDuV7OomQ= github.com/btcsuite/btcd v0.22.0-beta.0.20220111032746-97732e52810c/go.mod h1:tjmYdS6MLJ5/s0Fj4DbLgSbDHbEqLJrtnHecBFkdz5M= -github.com/btcsuite/btcd v0.22.1/go.mod h1:wqgTSL29+50LRkmOVknEdmt8ZojIzhuWvgu/iptuN7Y= -github.com/btcsuite/btcd v0.23.0 h1:V2/ZgjfDFIygAX3ZapeigkVBoVUtOJKSwrhZdlpSvaA= github.com/btcsuite/btcd v0.23.0/go.mod h1:0QJIIN1wwIXF/3G/m87gIwGniDMDQqjVn4SZgnFpsYY= github.com/btcsuite/btcd/btcec/v2 v2.1.0/go.mod h1:2VzYrv4Gm4apmbVVsSq5bqf1Ec8v56E48Vt0Y/umPgA= github.com/btcsuite/btcd/btcec/v2 v2.1.3/go.mod h1:ctjw4H1kknNJmRN4iP1R7bTQ+v3GJkZBd6mui8ZsAZE= -github.com/btcsuite/btcd/btcec/v2 v2.2.0/go.mod h1:U7MHm051Al6XmscBQ0BoNydpOTsFAn707034b5nY8zU= github.com/btcsuite/btcd/btcec/v2 v2.3.2 h1:5n0X6hX0Zk+6omWcihdYvdAlGf2DfasC0GMf7DClJ3U= github.com/btcsuite/btcd/btcec/v2 v2.3.2/go.mod h1:zYzJ8etWJQIv1Ogk7OzpWjowwOdXY1W/17j2MW85J04= github.com/btcsuite/btcd/btcutil v1.0.0/go.mod h1:Uoxwv0pqYWhD//tfTiipkxNfdhG9UrLwaeswfjfdF0A= @@ -83,7 +77,6 @@ github.com/btcsuite/btcd/chaincfg/chainhash v1.0.1 h1:q0rUy8C/TYNBQS1+CGKw68tLOF github.com/btcsuite/btcd/chaincfg/chainhash v1.0.1/go.mod h1:7SFka0XMvUgj3hfZtydOrQY2mwhPclbT2snogU7SQQc= github.com/btcsuite/btclog v0.0.0-20170628155309-84c8d2346e9f/go.mod h1:TdznJufoqS23FtqVCzL0ZqgP5MqXbb4fg/WgDys70nA= github.com/btcsuite/btcutil v0.0.0-20190425235716-9e5f4b9a998d/go.mod h1:+5NJ2+qvTyV9exUAL/rxXi3DcLg2Ts+ymUAY5y4NvMg= -github.com/btcsuite/btcutil v1.0.3-0.20201208143702-a53e38424cce/go.mod h1:0DVlHczLPewLcPGEIeUEzfOJhqGPQ0mJJRDBtD307+o= github.com/btcsuite/go-socks v0.0.0-20170105172521-4720035b7bfd/go.mod h1:HHNXQzUsZCxOoE+CPiyCTO6x34Zs86zZUiwtpXoGdtg= github.com/btcsuite/goleveldb v0.0.0-20160330041536-7834afc9e8cd/go.mod h1:F+uVaaLLH7j4eDXPRvw78tMflu7Ie2bzYOH4Y8rRKBY= github.com/btcsuite/goleveldb v1.0.0/go.mod h1:QiK9vBlgftBg6rWQIj6wFzbPfRjiykIEhBH4obrXJ/I= @@ -96,7 +89,6 @@ github.com/bytedance/sonic v1.5.0/go.mod h1:ED5hyg4y6t3/9Ku1R6dU/4KyJ48DZ4jPhfY1 github.com/bytedance/sonic v1.8.0 h1:ea0Xadu+sHlu7x5O3gKhRpQ1IKiMrSiHttPF0ybECuA= github.com/bytedance/sonic v1.8.0/go.mod h1:i736AoUSYt75HyZLoJW9ERYxcy6eaN6h4BZXU064P/U= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= -github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko= github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/cespare/xxhash/v2 v2.1.2 h1:YRXhKfTDauu4ajMg1TPgFO5jnlC2HCbmLXMcTG5cbYE= @@ -110,7 +102,6 @@ github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWR github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= github.com/cilium/ebpf v0.2.0/go.mod h1:To2CFviqOWL/M0gIMsvSMlqe7em/l1ALkX1PyjrX2Qs= -github.com/cilium/ebpf v0.4.0/go.mod h1:4tRaxcgiL706VnOzHOdBlY8IEAIdxINsQBcU4xJJXRs= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= github.com/containerd/cgroups v0.0.0-20201119153540-4cbc285b3327/go.mod h1:ZJeTFisyysqgcCdecO57Dj79RfL0LNeGiFUqLYQRYLE= @@ -120,12 +111,10 @@ github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc github.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8NzMklzPG4d5KIOhIy30Tk= github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= -github.com/coreos/go-systemd v0.0.0-20181012123002-c6f51f82210d h1:t5Wuyh53qYyg9eqn4BbnlIT+vmhyww0TatL+zT3uWgI= github.com/coreos/go-systemd v0.0.0-20181012123002-c6f51f82210d/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= github.com/coreos/go-systemd/v22 v22.1.0/go.mod h1:xO0FLkIi5MaZafQlIrOotqXZ90ih+1atmu1JpKERPPk= github.com/coreos/go-systemd/v22 v22.3.2 h1:D9/bQk5vlXQFZ6Kwuu6zaiXJ9oTPe68++AzAJc1DzSI= github.com/coreos/go-systemd/v22 v22.3.2/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= -github.com/cpuguy83/go-md2man v1.0.10 h1:BSKMNlYxDvnunlTymqtgONjNnaRV1sTpcovwwjF22jk= github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE= github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= github.com/cpuguy83/go-md2man/v2 v2.0.0 h1:EoUDS0afbrsXAZ9YQ9jdu/mZ2sXgT1/2yyNng4PGlyM= @@ -145,9 +134,7 @@ github.com/decred/dcrd/dcrec/secp256k1/v4 v4.1.0/go.mod h1:DZGJHZMqrU4JJqFAWUS2U github.com/decred/dcrd/lru v1.0.0/go.mod h1:mxKOwFd7lFjN2GZYsiz/ecgqR6kkYAl+0pz0tEMk218= github.com/denisbrodbeck/machineid v1.0.1 h1:geKr9qtkB876mXguW2X6TU4ZynleN6ezuMSRhl4D7AQ= github.com/denisbrodbeck/machineid v1.0.1/go.mod h1:dJUwb7PTidGDeYyUBmXZ2GphQBbjJCrnectwCyxcUSI= -github.com/dgraph-io/badger v1.6.0/go.mod h1:zwt7syl517jmP8s94KqSxTlM6IMsdhYy6psNgSztDR4= github.com/dgraph-io/badger v1.6.1/go.mod h1:FRmFw3uxvcpa8zG3Rxs0th+hCLIuaQg8HlNV5bjgnuU= -github.com/dgraph-io/badger v1.6.2/go.mod h1:JW2yswe3V058sS0kZ2h/AXeDSqFjxnZcRrVH//y2UQE= github.com/dgraph-io/ristretto v0.0.2/go.mod h1:KPxhHT9ZxKefz+PCeOGsrHpl1qZ7i70dGTu2u+Ahh6E= github.com/dgryski/go-farm v0.0.0-20190423205320-6a90982ecee2/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= github.com/docker/go-units v0.4.0 h1:3uh0PgVws3nIA0Q+MwDC8yjEPf9zjRfZZWXZYDct3Tw= @@ -167,9 +154,7 @@ github.com/flynn/noise v1.0.0 h1:DlTHqmzmvcEiKj+4RYo/imoswx/4r6iBlCMfVtrMXpQ= github.com/flynn/noise v1.0.0/go.mod h1:xbMo+0i6+IGbYdJhF31t2eR1BIU0CYc12+BNAKwUTag= github.com/francoispqt/gojay v1.2.13 h1:d2m3sFjloqoIUQU3TsHBgj6qg/BVGlTBeHDUmyJnXKk= github.com/francoispqt/gojay v1.2.13/go.mod h1:ehT5mTG4ua4581f1++1WLG0vPdaA9HaiDsoyrBGkyDY= -github.com/frankban/quicktest v1.11.3/go.mod h1:wRf/ReqHper53s+kmmSZizM8NamnL3IM0I9ntUbOk+k= github.com/frankban/quicktest v1.14.3 h1:FJKSZTDHjyhriyC81FLQ0LY93eSai0ZyR/ZIkd3ZUKE= -github.com/frankban/quicktest v1.14.3/go.mod h1:mgiwOwqx65TmIk1wJ6Q7wvnVMocbUorkibMOrVTHZps= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= github.com/fsnotify/fsnotify v1.5.4 h1:jRbGcIw6P2Meqdwuo0H1p6JVLbL5DHKAKlYndzMwVZI= @@ -187,7 +172,6 @@ github.com/gin-gonic/gin v1.9.0/go.mod h1:W1Me9+hsUSyj3CePGrd1/QrKJMSJ1Tu/0hFEH8 github.com/gizak/termui/v3 v3.1.0 h1:ZZmVDgwHl7gR7elfKf1xc4IudXZ5qqfDh4wExk4Iajc= github.com/gizak/termui/v3 v3.1.0/go.mod h1:bXQEBkJpzxUAKf0+xq9MSWAvWZlE7c+aidmyFlkYTrY= github.com/gliderlabs/ssh v0.1.1/go.mod h1:U7qILu1NlMHj9FlMhZLlkCdDnU1DBEAqr0aevW3Awn0= -github.com/go-check/check v0.0.0-20180628173108-788fd7840127/go.mod h1:9ES+weclKsC9YodN5RgxqK/VD9HM9JsCSh7rNhMZE98= github.com/go-errors/errors v1.0.1/go.mod h1:f4zRHt4oKfwPJE5k8C9vpYG+aDHdBFUsgrm6/TyX73Q= github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= @@ -200,15 +184,11 @@ github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9 github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= github.com/go-logfmt/logfmt v0.5.1/go.mod h1:WYhtIu8zTZfxdn5+rREduYbwxfcBr/Vr6KEVveWlfTs= -github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= -github.com/go-logr/logr v1.2.3/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= -github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= github.com/go-ole/go-ole v1.2.4/go.mod h1:XCwSNxSkXRo4vlyPy93sltvi/qJq0jqQhjqQNIwKuxM= github.com/go-ole/go-ole v1.2.6 h1:/Fpf6oFPoeFik9ty7siob0G6Ke8QvQEuVcuChpwXzpY= github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= github.com/go-playground/assert/v2 v2.2.0 h1:JvknZsQTYeFEAhQwI4qEt9cyV5ONwRHC+lYKSsYSR8s= -github.com/go-playground/assert/v2 v2.2.0/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= github.com/go-playground/locales v0.14.0/go.mod h1:sawfccIbzZTqEDETgFXqTho0QybSa7l++s0DH+LDiLs= github.com/go-playground/locales v0.14.1 h1:EWaQ/wswjilfKLTECiXz7Rh+3BjFhfDFKv/oXslEjJA= github.com/go-playground/locales v0.14.1/go.mod h1:hxrqLVvrK65+Rwrd5Fc6F2O76J/NuW9t0sjnWqG1slY= @@ -276,10 +256,7 @@ github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/ github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.7/go.mod h1:n+brtR0CgQNWTVd5ZUFpTBC8YFBDLK/h/bpaJ8/DtOE= -github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= -github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-github v17.0.0+incompatible/go.mod h1:zLgOLi98H3fifZn+44m+umXrS52loVEgC2AApnigrVQ= github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= @@ -310,16 +287,12 @@ github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1 h1:EGx4pi6eqNxGa github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= github.com/gorilla/mux v1.8.0 h1:i40aqfkR1h2SlN9hojwV5ZA91wcXFOvkdNIeFDP5koI= github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= -github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/gorilla/websocket v1.5.0 h1:PPwGk2jz7EePpoHN/+ClbZu8SPxiqlu12wZP/3sWmnc= github.com/gorilla/websocket v1.5.0/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= github.com/grpc-ecosystem/grpc-gateway v1.5.0/go.mod h1:RSKVYQBd5MCa4OVpNdGskqpgL2+G+NZTnrVHpWWfpdw= -github.com/gxed/hashland/keccakpg v0.0.1/go.mod h1:kRzw3HkwxFU1mpmPP8v1WyQzwdGfmKFJ6tItnhQ67kU= -github.com/gxed/hashland/murmur3 v0.0.1/go.mod h1:KjXop02n4/ckmZSnY2+HKcLud/tcmvhST0bie/0lS48= github.com/hashicorp/errwrap v1.0.0 h1:hLrqtEDnRye3+sgx6z4qVLNuviH3MR5aQ0ykNJa/UYA= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= -github.com/hashicorp/go-multierror v1.1.0/go.mod h1:spPvp8C1qA32ftKqdAHm4hHTbPw+vmowP0z+KUhOZdA= github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo= github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM= github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= @@ -337,30 +310,19 @@ github.com/huin/goupnp v1.0.3/go.mod h1:ZxNlw5WqJj6wSsRK5+YfflQGXYfccj5VgQsMNixH github.com/huin/goutil v0.0.0-20170803182201-1ca381bf3150/go.mod h1:PpLOETDnJ0o3iZrZfqZzyLl6l7F3c6L1oWn7OICBi6o= github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= -github.com/ipfs/go-cid v0.0.3/go.mod h1:GHWU/WuQdMPmIosc4Yn1bcCT7dSeX4lBafM7iqUPQvM= -github.com/ipfs/go-cid v0.0.4/go.mod h1:4LLaPOQwmk5z9LBgQnpkivrx8BJjUyGwTXCd5Xfj6+M= github.com/ipfs/go-cid v0.0.5/go.mod h1:plgt+Y5MnOey4vO4UlUazGqdbEXuFYitED67FexhXog= github.com/ipfs/go-cid v0.0.7/go.mod h1:6Ux9z5e+HpkQdckYoX1PG/6xqKspzlEIR5SDmgqgC/I= -github.com/ipfs/go-cid v0.2.0/go.mod h1:P+HXFDF4CVhaVayiEb4wkAy7zBHxBwsJyt0Y5U6MLro= github.com/ipfs/go-cid v0.3.2 h1:OGgOd+JCFM+y1DjWPmVH+2/4POtpDzwcr7VgnB7mZXc= github.com/ipfs/go-cid v0.3.2/go.mod h1:gQ8pKqT/sUxGY+tIwy1RPpAojYu7jAyCp5Tz1svoupw= -github.com/ipfs/go-datastore v0.1.0/go.mod h1:d4KVXhMt913cLBEI/PXAy6ko+W7e9AhyAKBGh803qeE= -github.com/ipfs/go-datastore v0.1.1/go.mod h1:w38XXW9kVFNp57Zj5knbKWM2T+KOZCGDRVNdgPHtbHw= github.com/ipfs/go-datastore v0.4.1/go.mod h1:SX/xMIKoCszPqp+z9JhPYCmoOoXTvaa13XEbGtsFUhA= github.com/ipfs/go-datastore v0.4.4/go.mod h1:SX/xMIKoCszPqp+z9JhPYCmoOoXTvaa13XEbGtsFUhA= -github.com/ipfs/go-datastore v0.5.0/go.mod h1:9zhEApYMTl17C8YDp7JmU7sQZi2/wqiYh73hakZ90Bk= github.com/ipfs/go-datastore v0.5.1 h1:WkRhLuISI+XPD0uk3OskB0fYFSyqK8Ob5ZYew9Qa1nQ= github.com/ipfs/go-datastore v0.5.1/go.mod h1:9zhEApYMTl17C8YDp7JmU7sQZi2/wqiYh73hakZ90Bk= github.com/ipfs/go-detect-race v0.0.1 h1:qX/xay2W3E4Q1U7d9lNs1sU9nvguX0a7319XbyQ6cOk= github.com/ipfs/go-detect-race v0.0.1/go.mod h1:8BNT7shDZPo99Q74BpGMK+4D8Mn4j46UU0LZ723meps= -github.com/ipfs/go-ds-badger v0.0.7/go.mod h1:qt0/fWzZDoPW6jpQeqUjR5kBfhDNB65jd9YlmAvpQBk= github.com/ipfs/go-ds-badger v0.2.3/go.mod h1:pEYw0rgg3FIrywKKnL+Snr+w/LjJZVMTBRn4FS6UHUk= -github.com/ipfs/go-ds-badger v0.3.0/go.mod h1:1ke6mXNqeV8K3y5Ak2bAA0osoTfmxUdupVCGm4QUIek= -github.com/ipfs/go-ds-leveldb v0.1.0/go.mod h1:hqAW8y4bwX5LWcCtku2rFNX3vjDZCy5LZCg+cSZvYb8= github.com/ipfs/go-ds-leveldb v0.4.2/go.mod h1:jpbku/YqBSsBc1qgME8BkWS4AxzF2cEu1Ii2r79Hh9s= -github.com/ipfs/go-ds-leveldb v0.5.0/go.mod h1:d3XG9RUDzQ6V4SHi8+Xgj9j1XuEk1z82lquxrVbml/Q= github.com/ipfs/go-ipfs-delay v0.0.0-20181109222059-70721b86a9a8/go.mod h1:8SP1YXK1M1kXuc4KJZINY3TQQ03J2rwBG9QfXmbRPrw= -github.com/ipfs/go-ipfs-util v0.0.1/go.mod h1:spsl5z8KUnrve+73pOhSVZND1SIxPW5RyBCNzQxlJBc= github.com/ipfs/go-ipfs-util v0.0.2 h1:59Sswnk1MFaiq+VcaknX7aYEyGyGDAA73ilhEK2POp8= github.com/ipfs/go-ipfs-util v0.0.2/go.mod h1:CbPtkWJzjLdEcezDns2XYaehFVNXG9zrdrtMecczcsQ= github.com/ipfs/go-ipns v0.2.0 h1:BgmNtQhqOw5XEZ8RAfWEpK4DhqaYiuP6h71MhIp7xXU= @@ -373,10 +335,8 @@ github.com/ipfs/go-log v1.0.5/go.mod h1:j0b8ZoR+7+R99LD9jZ6+AJsrzkPbSXbZfGakb5JP github.com/ipfs/go-log/v2 v2.0.3/go.mod h1:O7P1lJt27vWHhOwQmcFEvlmo49ry2VY2+JfBWFaa9+0= github.com/ipfs/go-log/v2 v2.0.5/go.mod h1:eZs4Xt4ZUJQFM3DlanGhy7TkwwawCZcSByscwkWG+dw= github.com/ipfs/go-log/v2 v2.1.3/go.mod h1:/8d0SH3Su5Ooc31QlL1WysJhvyOTDCjcCZ9Axpmri6g= -github.com/ipfs/go-log/v2 v2.5.0/go.mod h1:prSpmC1Gpllc9UYWxDiZDreBYw7zp4Iqp1kOLU9U5UI= github.com/ipfs/go-log/v2 v2.5.1 h1:1XdUzF7048prq4aBjDQQ4SL5RxftpRGdXhNRwKSAlcY= github.com/ipfs/go-log/v2 v2.5.1/go.mod h1:prSpmC1Gpllc9UYWxDiZDreBYw7zp4Iqp1kOLU9U5UI= -github.com/ipld/go-ipld-prime v0.9.0/go.mod h1:KvBLMr4PX1gWptgkzRjVZCrLmSGcZCb/jioOQwCqZN8= github.com/ipld/go-ipld-prime v0.19.0 h1:5axC7rJmPc17Emw6TelxGwnzALk0PdupZ2oj2roDj04= github.com/ipld/go-ipld-prime v0.19.0/go.mod h1:Q9j3BaVXwaA3o5JUDNvptDDr/x8+F7FG6XJ8WI3ILg4= github.com/jackpal/go-nat-pmp v1.0.2 h1:KzKSgb7qkJvOUTqYl9/Hg/me3pWgBmERKrTGD7BdWus= @@ -385,7 +345,6 @@ github.com/jbenet/go-cienv v0.1.0/go.mod h1:TqNnHUmJgXau0nCzC7kXWeotg3J9W34CUv5D github.com/jbenet/go-temp-err-catcher v0.1.0 h1:zpb3ZH6wIE8Shj2sKS+khgRvf7T7RABoLk/+KKHggpk= github.com/jbenet/go-temp-err-catcher v0.1.0/go.mod h1:0kJRvmDZXNMIiJirNPEYfhpPwbGVtZVWC34vc5WLsDk= github.com/jbenet/goprocess v0.0.0-20160826012719-b497e2f366b8/go.mod h1:Ly/wlsjFq/qrU3Rar62tu1gASgGw6chQbSh/XgIIXCY= -github.com/jbenet/goprocess v0.1.3/go.mod h1:5yspPrukOVuOLORacaBi858NqyClJPQxYZlqdZVfqY4= github.com/jbenet/goprocess v0.1.4 h1:DRGOFReOMqqDNXwW70QkacFW0YN9QnwLV0Vqk+3oU0o= github.com/jbenet/goprocess v0.1.4/go.mod h1:5yspPrukOVuOLORacaBi858NqyClJPQxYZlqdZVfqY4= github.com/jellevandenhooff/dkim v0.0.0-20150330215556-f50fe3d243e1/go.mod h1:E0B/fFc00Y+Rasa88328GlI/XbtyysCtTHZS8h7IrBU= @@ -404,7 +363,6 @@ github.com/jtolds/gls v4.20.0+incompatible h1:xdiiI2gbIgH/gLH7ADydsJ1uDOEzR8yvV7 github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= -github.com/kami-zh/go-capturer v0.0.0-20171211120116-e492ea43421d/go.mod h1:P2viExyCEfeWGU259JnaQ34Inuec4R38JCyBx2edgD0= github.com/keybase/go-ps v0.0.0-20190827175125-91aafc93ba19/go.mod h1:hY+WOq6m2FpbvyrI93sMaypsttvaIL5nhVR92dTMUcQ= github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= @@ -439,8 +397,6 @@ github.com/libp2p/go-buffer-pool v0.1.0 h1:oK4mSFcQz7cTQIfqbe4MIj9gLW+mnanjyFtc6 github.com/libp2p/go-buffer-pool v0.1.0/go.mod h1:N+vh8gMqimBzdKkSMVuydVDq+UV5QTWy5HSiZacSbPg= github.com/libp2p/go-cidranger v1.1.0 h1:ewPN8EZ0dd1LSnrtuwd4709PXVcITVeuwbag38yPW7c= github.com/libp2p/go-cidranger v1.1.0/go.mod h1:KWZTfSr+r9qEo9OkI9/SIEeAtw+NNoU0dXIXt15Okic= -github.com/libp2p/go-flow-metrics v0.0.1/go.mod h1:Iv1GH0sG8DtYN3SVJ2eG221wMiNpZxBdp967ls1g+k8= -github.com/libp2p/go-flow-metrics v0.0.2/go.mod h1:HeoSNUrOJVK1jEpDqVEiUOIXqhbnS27omG0uWU5slZs= github.com/libp2p/go-flow-metrics v0.0.3/go.mod h1:HeoSNUrOJVK1jEpDqVEiUOIXqhbnS27omG0uWU5slZs= github.com/libp2p/go-flow-metrics v0.1.0 h1:0iPhMI8PskQwzh57jB9WxIuIOQ0r+15PChFGkx3Q3WM= github.com/libp2p/go-flow-metrics v0.1.0/go.mod h1:4Xi8MX8wj5aWNDAZttg6UPmc0ZrnFNsMtpsYUClFtro= @@ -449,36 +405,22 @@ github.com/libp2p/go-libp2p v0.22.0/go.mod h1:UDolmweypBSjQb2f7xutPnwZ/fxioLbMBx github.com/libp2p/go-libp2p-asn-util v0.0.0-20200825225859-85005c6cf052/go.mod h1:nRMRTab+kZuk0LnKZpxhOVH/ndsdr2Nr//Zltc/vwgo= github.com/libp2p/go-libp2p-asn-util v0.2.0 h1:rg3+Os8jbnO5DxkC7K/Utdi+DkY3q/d1/1q+8WeNAsw= github.com/libp2p/go-libp2p-asn-util v0.2.0/go.mod h1:WoaWxbHKBymSN41hWSq/lGKJEca7TNm58+gGJi2WsLI= -github.com/libp2p/go-libp2p-core v0.2.4/go.mod h1:STh4fdfa5vDYr0/SzYYeqnt+E6KfEV5VxfIrm0bcI0g= -github.com/libp2p/go-libp2p-core v0.2.5/go.mod h1:6+5zJmKhsf7yHn1RbmYDu08qDUpIUxGdqHuEZckmZOA= -github.com/libp2p/go-libp2p-core v0.3.0/go.mod h1:ACp3DmS3/N64c2jDzcV429ukDpicbL6+TrrxANBjPGw= -github.com/libp2p/go-libp2p-core v0.5.3/go.mod h1:uN7L2D4EvPCvzSH5SrhR72UWbnSGpt5/a35Sm4upn4Y= github.com/libp2p/go-libp2p-core v0.5.4/go.mod h1:uN7L2D4EvPCvzSH5SrhR72UWbnSGpt5/a35Sm4upn4Y= github.com/libp2p/go-libp2p-core v0.6.1/go.mod h1:FfewUH/YpvWbEB+ZY9AQRQ4TAD8sJBt/G1rVvhz5XT8= -github.com/libp2p/go-libp2p-core v0.19.0/go.mod h1:AkA+FUKQfYt1FLNef5fOPlo/naAWjKy/RCjkcPjqzYg= github.com/libp2p/go-libp2p-core v0.20.0 h1:PGKM74+T+O/FaZNARNW32i90RMBHCcgd/hkum2UQ5eY= github.com/libp2p/go-libp2p-core v0.20.0/go.mod h1:6zR8H7CvQWgYLsbG4on6oLNSGcyKaYFSEYyDt51+bIY= github.com/libp2p/go-libp2p-kad-dht v0.18.0 h1:akqO3gPMwixR7qFSFq70ezRun97g5hrA/lBW9jrjUYM= github.com/libp2p/go-libp2p-kad-dht v0.18.0/go.mod h1:Gb92MYIPm3K2pJLGn8wl0m8wiKDvHrYpg+rOd0GzzPA= -github.com/libp2p/go-libp2p-kbucket v0.3.1/go.mod h1:oyjT5O7tS9CQurok++ERgc46YLwEpuGoFq9ubvoUOio= github.com/libp2p/go-libp2p-kbucket v0.4.7 h1:spZAcgxifvFZHBD8tErvppbnNiKA5uokDu3CV7axu70= github.com/libp2p/go-libp2p-kbucket v0.4.7/go.mod h1:XyVo99AfQH0foSf176k4jY1xUJ2+jUJIZCSDm7r2YKk= -github.com/libp2p/go-libp2p-peerstore v0.1.4/go.mod h1:+4BDbDiiKf4PzpANZDAT+knVdLxvqh7hXOujessqdzs= github.com/libp2p/go-libp2p-peerstore v0.2.6/go.mod h1:ss/TWTgHZTMpsU/oKVVPQCGuDHItOpf2W8RxAi50P2s= github.com/libp2p/go-libp2p-peerstore v0.8.0 h1:bzTG693TA1Ju/zKmUCQzDLSqiJnyRFVwPpuloZ/OZtI= -github.com/libp2p/go-libp2p-peerstore v0.8.0/go.mod h1:9geHWmNA3YDlQBjL/uPEJD6vpDK12aDNlUNHJ6kio/s= github.com/libp2p/go-libp2p-pubsub v0.8.1 h1:hSw09NauFUaA0FLgQPBJp6QOy0a2n+HSkb8IeOx8OnY= github.com/libp2p/go-libp2p-pubsub v0.8.1/go.mod h1:e4kT+DYjzPUYGZeWk4I+oxCSYTXizzXii5LDRRhjKSw= -github.com/libp2p/go-libp2p-record v0.1.2/go.mod h1:pal0eNcT5nqZaTV7UGhqeGqxFgGdsU/9W//C8dqjQDk= github.com/libp2p/go-libp2p-record v0.2.0 h1:oiNUOCWno2BFuxt3my4i1frNrt7PerzB3queqa1NkQ0= github.com/libp2p/go-libp2p-record v0.2.0/go.mod h1:I+3zMkvvg5m2OcSdoL0KPljyJyvNDFGKX7QdlpYUcwk= -github.com/libp2p/go-libp2p-routing-helpers v0.2.3/go.mod h1:795bh+9YeoFl99rMASoiVgHdi5bjack0N1+AFAdbvBw= -github.com/libp2p/go-libp2p-testing v0.11.0/go.mod h1:qG4sF27dfKFoK9KlVzK2y52LQKhp0VEmLjV5aDqr1Hg= github.com/libp2p/go-libp2p-testing v0.12.0 h1:EPvBb4kKMWO29qP4mZGyhVzUyR25dvfUIK5WDu6iPUA= -github.com/libp2p/go-libp2p-testing v0.12.0/go.mod h1:KcGDRXyN7sQCllucn1cOOS+Dmm7ujhfEyXQL5lvkcPg= -github.com/libp2p/go-libp2p-xor v0.1.0/go.mod h1:LSTM5yRnjGZbWNTA/hRwq2gGFrvRIbQJscoIL/u6InY= github.com/libp2p/go-maddr-filter v0.1.0/go.mod h1:VzZhTXkMucEGGEOSKddrwGiOv0tUhgnKqNEmIAz/bPU= -github.com/libp2p/go-mplex v0.7.0/go.mod h1:rW8ThnRcYWft/Jb2jeORBmPd6xuG3dGxWN/W168L9EU= github.com/libp2p/go-msgio v0.0.4/go.mod h1:63lBBgOTDKQL6EWazRMCwXsEeEeK9O2Cd+0+6OOuipQ= github.com/libp2p/go-msgio v0.0.6/go.mod h1:4ecVB6d9f4BDSL5fqvPiC4A3KivjWn+Venn/1ALLMWA= github.com/libp2p/go-msgio v0.2.0 h1:W6shmB+FeynDrUVl2dgFQvzfBZcXiyqY4VmpQLu9FqU= @@ -488,7 +430,6 @@ github.com/libp2p/go-nat v0.1.0/go.mod h1:X7teVkwRHNInVNWQiO/tAiAVRwSr5zoRz4YSTC github.com/libp2p/go-netroute v0.1.2/go.mod h1:jZLDV+1PE8y5XxBySEBgbuVAXbhtuHSdmLPL2n9MKbk= github.com/libp2p/go-netroute v0.2.0 h1:0FpsbsvuSnAhXFnCY0VLFbJOzaK0VnP0r1QT/o4nWRE= github.com/libp2p/go-netroute v0.2.0/go.mod h1:Vio7LTzZ+6hoT4CMZi5/6CpY3Snzh2vgZhWgxMNwlQI= -github.com/libp2p/go-openssl v0.0.3/go.mod h1:unDrJpgy3oFr+rqXsarWifmJuNnJR4chtO1HmaZjggc= github.com/libp2p/go-openssl v0.0.4/go.mod h1:unDrJpgy3oFr+rqXsarWifmJuNnJR4chtO1HmaZjggc= github.com/libp2p/go-openssl v0.0.7/go.mod h1:unDrJpgy3oFr+rqXsarWifmJuNnJR4chtO1HmaZjggc= github.com/libp2p/go-openssl v0.1.0 h1:LBkKEcUv6vtZIQLVTegAil8jbNpJErQ9AnT+bWV+Ooo= @@ -498,12 +439,10 @@ github.com/libp2p/go-reuseport v0.2.0/go.mod h1:bvVho6eLMm6Bz5hmU0LYN3ixd3nPPvtI github.com/libp2p/go-sockaddr v0.0.2/go.mod h1:syPvOmNs24S3dFVGJA1/mrqdeijPxLV2Le3BRLKd68k= github.com/libp2p/go-yamux/v3 v3.1.2 h1:lNEy28MBk1HavUAlzKgShp+F6mn/ea1nDYWftZhFW9Q= github.com/libp2p/go-yamux/v3 v3.1.2/go.mod h1:jeLEQgLXqE2YqX1ilAClIfCMDY+0uXQUKmmb/qp0gT4= -github.com/libp2p/zeroconf/v2 v2.2.0/go.mod h1:fuJqLnUwZTshS3U/bMRJ3+ow/v9oid1n0DmyYyNO1Xs= github.com/lucas-clemente/quic-go v0.28.1 h1:Uo0lvVxWg5la9gflIF9lwa39ONq85Xq2D91YNEIslzU= github.com/lucas-clemente/quic-go v0.28.1/go.mod h1:oGz5DKK41cJt5+773+BSO9BXDsREY4HLf7+0odGAPO0= github.com/lunixbochs/vtclean v1.0.0/go.mod h1:pHhQNgMf3btfWnGBVipUOjRYhoOsdGqdm/+2c2E2WMI= github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= -github.com/mailru/easyjson v0.0.0-20180823135443-60711f1a8329/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= github.com/mailru/easyjson v0.0.0-20190312143242-1de009706dbe/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= github.com/marten-seemann/qpack v0.2.1/go.mod h1:F7Gl5L1jIgN1D11ucXefiuJS9UMVP2opoCp2jDKb7wc= github.com/marten-seemann/qtls-go1-16 v0.1.5 h1:o9JrYPPco/Nukd/HpOHMHZoBDXQqoNtUCmny98/1uqQ= @@ -517,12 +456,9 @@ github.com/marten-seemann/qtls-go1-19 v0.1.0 h1:rLFKD/9mp/uq1SYGYuVZhm83wkmU95pK github.com/marten-seemann/qtls-go1-19 v0.1.0/go.mod h1:5HTDWtVudo/WFsHKRNuOhWlbdjrfs5JHrYb0wIJqGpI= github.com/marten-seemann/tcp v0.0.0-20210406111302-dfbc87cc63fd h1:br0buuQ854V8u83wA0rVZ8ttrq5CpaPZdvrK0LP2lOk= github.com/marten-seemann/tcp v0.0.0-20210406111302-dfbc87cc63fd/go.mod h1:QuCEs1Nt24+FYQEqAAncTDPJIuGs+LxK1MCiFL25pMU= -github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= github.com/mattn/go-colorable v0.1.1/go.mod h1:FuOcm+DKB9mbwrcAfNl7/TZVBZ6rcnceauSikq3lYCQ= -github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= github.com/mattn/go-isatty v0.0.5/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= -github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= github.com/mattn/go-isatty v0.0.17 h1:BTarxUcIeDqL27Mc+vyvdWYSL28zpIhv3RoTdsLMPng= github.com/mattn/go-isatty v0.0.17/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= github.com/mattn/go-pointer v0.0.1 h1:n+XhsuGeVO6MEAp7xyEukFINEa+Quek5psIR/ylA6o0= @@ -531,10 +467,8 @@ github.com/mattn/go-runewidth v0.0.2 h1:UnlwIPBGaTZfPQ6T1IGzPI0EkYAQmT9fAEJ/poFC github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= github.com/matttproud/golang_protobuf_extensions v1.0.1 h1:4hp9jkHxhMHkqkrB3Ix0jegS5sx/RkqARlsWZ6pIwiU= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= -github.com/mgutz/ansi v0.0.0-20170206155736-9520e82c474b/go.mod h1:01TrycV0kFyexm33Z7vhZRXopbI8J3TDReVlkTgMUxE= github.com/microcosm-cc/bluemonday v1.0.1/go.mod h1:hsXNsILzKxV+sX77C5b8FSuKF00vh2OMYv+xgHpAMF4= github.com/miekg/dns v1.1.41/go.mod h1:p6aan82bvRIyn+zDIv9xYNUpwa73JcSh9BKwknJysuI= -github.com/miekg/dns v1.1.43/go.mod h1:+evo5L0630/F6ca/Z9+GAqzhjGyn8/c+TBaOyfEl0V4= github.com/miekg/dns v1.1.50 h1:DQUfb9uc6smULcREF09Uc+/Gd46YWqJd5DbpPE9xkcA= github.com/miekg/dns v1.1.50/go.mod h1:e3IlAVfNqAllflbibAZEWOXOQ+Ynzk/dDozDxY7XnME= github.com/mikioh/tcp v0.0.0-20190314235350-803a9b46060c h1:bzE/A84HN25pxAuk9Eej1Kz9OUelF97nAc82bDquQI8= @@ -544,7 +478,6 @@ github.com/mikioh/tcpinfo v0.0.0-20190314235526-30a79bb1804b/go.mod h1:lxPUiZwKo github.com/mikioh/tcpopt v0.0.0-20190314235656-172688c1accc h1:PTfri+PuQmWDqERdnNMiD9ZejrlswWrCpBEZgWOiTrc= github.com/mikioh/tcpopt v0.0.0-20190314235656-172688c1accc/go.mod h1:cGKTAVKx4SxOuR/czcZ/E2RSJ3sfHs8FpHhQ5CWMf9s= github.com/minio/blake2b-simd v0.0.0-20160723061019-3f5f724cb5b1/go.mod h1:pD8RvIylQ358TN4wwqatJ8rNavkEINozVn9DtGI3dfQ= -github.com/minio/sha256-simd v0.0.0-20190131020904-2d45a736cd16/go.mod h1:2FMWW+8GMoPweT6+pI63m9YE3Lmw4J71hV56Chs1E/U= github.com/minio/sha256-simd v0.1.1-0.20190913151208-6de447530771/go.mod h1:B5e1o+1/KgNmWrSQK08Y6Z1Vb5pwIktudl0J58iy0KM= github.com/minio/sha256-simd v0.1.1/go.mod h1:B5e1o+1/KgNmWrSQK08Y6Z1Vb5pwIktudl0J58iy0KM= github.com/minio/sha256-simd v1.0.0 h1:v1ta+49hkWZyvaKwrQB8elexRqm6Y0aMLjCNsrYxo6g= @@ -553,7 +486,6 @@ github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrk github.com/mitchellh/go-wordwrap v0.0.0-20150314170334-ad45545899c7 h1:DpOJ2HYzCv8LZP15IdmG+YdwD2luVPHITV96TkirNBM= github.com/mitchellh/go-wordwrap v0.0.0-20150314170334-ad45545899c7/go.mod h1:ZXFpozHsX6DPmq2I0TCekCxypsnAUbP2oI0UX1GXzOo= github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= -github.com/mitchellh/mapstructure v1.4.1/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= @@ -573,38 +505,29 @@ github.com/multiformats/go-base32 v0.0.4 h1:+qMh4a2f37b4xTNs6mqitDinryCI+tfO2dRV github.com/multiformats/go-base32 v0.0.4/go.mod h1:jNLFzjPZtp3aIARHbJRZIaPuspdH0J6q39uUM5pnABM= github.com/multiformats/go-base36 v0.1.0 h1:JR6TyF7JjGd3m6FbLU2cOxhC0Li8z8dLNGQ89tUg4F4= github.com/multiformats/go-base36 v0.1.0/go.mod h1:kFGE83c6s80PklsHO9sRn2NCoffoRdUUOENyW/Vv6sM= -github.com/multiformats/go-multiaddr v0.1.0/go.mod h1:xKVEak1K9cS1VdmPZW3LSIb6lgmoS58qz/pzqmAxV44= github.com/multiformats/go-multiaddr v0.1.1/go.mod h1:aMKBKNEYmzmDmxfX88/vz+J5IU55txyt0p4aiWVohjo= github.com/multiformats/go-multiaddr v0.2.0/go.mod h1:0nO36NvPpyV4QzvTLi/lafl2y95ncPj0vFwVF6k6wJ4= github.com/multiformats/go-multiaddr v0.2.1/go.mod h1:s/Apk6IyxfvMjDafnhJgJ3/46z7tZ04iMk5wP4QMGGE= github.com/multiformats/go-multiaddr v0.2.2/go.mod h1:NtfXiOtHvghW9KojvtySjH5y0u0xW5UouOmQQrn6a3Y= github.com/multiformats/go-multiaddr v0.3.0/go.mod h1:dF9kph9wfJ+3VLAaeBqo9Of8x4fJxp6ggJGteB8HQTI= github.com/multiformats/go-multiaddr v0.3.1/go.mod h1:uPbspcUPd5AfaP6ql3ujFY+QWzmBD8uLLL4bXW0XfGc= -github.com/multiformats/go-multiaddr v0.4.1/go.mod h1:3afI9HfVW8csiF8UZqtpYRiDyew8pRX7qLIGHu9FLuM= github.com/multiformats/go-multiaddr v0.6.0 h1:qMnoOPj2s8xxPU5kZ57Cqdr0hHhARz7mFsPMIiYNqzg= github.com/multiformats/go-multiaddr v0.6.0/go.mod h1:F4IpaKZuPP360tOMn2Tpyu0At8w23aRyVqeK0DbFeGM= github.com/multiformats/go-multiaddr-dns v0.3.1 h1:QgQgR+LQVt3NPTjbrLLpsaT2ufAA2y0Mkk+QRVJbW3A= github.com/multiformats/go-multiaddr-dns v0.3.1/go.mod h1:G/245BRQ6FJGmryJCrOuTdB37AMA5AMOVuO6NY3JwTk= github.com/multiformats/go-multiaddr-fmt v0.1.0 h1:WLEFClPycPkp4fnIzoFoV9FVd49/eQsuaL3/CWe167E= github.com/multiformats/go-multiaddr-fmt v0.1.0/go.mod h1:hGtDIW4PU4BqJ50gW2quDuPVjyWNZxToGUh/HwTZYJo= -github.com/multiformats/go-multiaddr-net v0.1.1/go.mod h1:5JNbcfBOP4dnhoZOv10JJVkJO0pCCEf8mTnipAo2UZQ= github.com/multiformats/go-multiaddr-net v0.1.4/go.mod h1:ilNnaM9HbmVFqsb/qcNysjCu4PVONlrBZpHIrw/qQuA= github.com/multiformats/go-multiaddr-net v0.2.0/go.mod h1:gGdH3UXny6U3cKKYCvpXI5rnK7YaOIEOPVDI9tsJbEA= github.com/multiformats/go-multibase v0.0.1/go.mod h1:bja2MqRZ3ggyXtZSEDKpl0uO/gviWFaSteVbWT51qgs= github.com/multiformats/go-multibase v0.0.3/go.mod h1:5+1R4eQrT3PkYZ24C3W2Ue2tPwIdYQD509ZjSb5y9Oc= github.com/multiformats/go-multibase v0.1.1 h1:3ASCDsuLX8+j4kx58qnJ4YFq/JWTJpCyDW27ztsVTOI= github.com/multiformats/go-multibase v0.1.1/go.mod h1:ZEjHE+IsUrgp5mhlEAYjMtZwK1k4haNkcaPg9aoe1a8= -github.com/multiformats/go-multicodec v0.4.1/go.mod h1:1Hj/eHRaVWSXiSNNfcEPcwZleTmdNP81xlxDLnWU9GQ= -github.com/multiformats/go-multicodec v0.5.0/go.mod h1:DiY2HFaEp5EhEXb/iYzVAunmyX/aSFMxq2KMKfWEues= github.com/multiformats/go-multicodec v0.6.0 h1:KhH2kSuCARyuJraYMFxrNO3DqIaYhOdS039kbhgVwpE= github.com/multiformats/go-multicodec v0.6.0/go.mod h1:GUC8upxSBE4oG+q3kWZRw/+6yC1BqO550bjhWsJbZlw= -github.com/multiformats/go-multihash v0.0.1/go.mod h1:w/5tugSrLEbWqlcgJabL3oHFKTwfvkofsjW2Qa1ct4U= github.com/multiformats/go-multihash v0.0.8/go.mod h1:YSLudS+Pi8NHE7o6tb3D8vrpKa63epEDmG8nTduyAew= -github.com/multiformats/go-multihash v0.0.9/go.mod h1:YSLudS+Pi8NHE7o6tb3D8vrpKa63epEDmG8nTduyAew= -github.com/multiformats/go-multihash v0.0.10/go.mod h1:YSLudS+Pi8NHE7o6tb3D8vrpKa63epEDmG8nTduyAew= github.com/multiformats/go-multihash v0.0.13/go.mod h1:VdAWLKTwram9oKAatUcLxBNUjdtcVwxObEQBtRfuyjc= github.com/multiformats/go-multihash v0.0.14/go.mod h1:VdAWLKTwram9oKAatUcLxBNUjdtcVwxObEQBtRfuyjc= -github.com/multiformats/go-multihash v0.0.15/go.mod h1:D6aZrWNLFTV/ynMpKsNtB40mJzmCl4jb1alC0OvHiHg= github.com/multiformats/go-multihash v0.2.1 h1:aem8ZT0VA2nCHHk7bPJ1BjUbHNciqZC/d16Vve9l108= github.com/multiformats/go-multihash v0.2.1/go.mod h1:WxoMcYG85AZVQUyRyo9s4wULvW5qrI9vb2Lt6evduFc= github.com/multiformats/go-multistream v0.3.3 h1:d5PZpjwRgVlbwfdTDjife7XszfZd8KYWfROYFlGcR8o= @@ -616,14 +539,8 @@ github.com/multiformats/go-varint v0.0.6 h1:gk85QWKxh3TazbLxED/NlDVv8+q+ReFJk7Y2 github.com/multiformats/go-varint v0.0.6/go.mod h1:3Ls8CIEsrijN6+B7PbrXRPxHRPuXSrVKRY101jdMZYE= github.com/multiversx/concurrent-map v0.1.4 h1:hdnbM8VE4b0KYJaGY5yJS2aNIW9TFFsUYwbO0993uPI= github.com/multiversx/concurrent-map v0.1.4/go.mod h1:8cWFRJDOrWHOTNSqgYCUvwT7c7eFQ4U2vKMOp4A/9+o= -github.com/multiversx/mx-chain-communication-go v1.0.2/go.mod h1:OnnSUjnSP87H5MtQtxn33FGnTVRVgo2Huo3ijmCgN2M= github.com/multiversx/mx-chain-communication-go v1.0.3-0.20230608110322-586e89326c74 h1:jf3bWYdUku19843q7KwBKBjIOQNi/OTLyjbsE1Yfra8= github.com/multiversx/mx-chain-communication-go v1.0.3-0.20230608110322-586e89326c74/go.mod h1:OnnSUjnSP87H5MtQtxn33FGnTVRVgo2Huo3ijmCgN2M= -github.com/multiversx/mx-chain-core-go v1.1.30/go.mod h1:8gGEQv6BWuuJwhd25qqhCOZbBSv9mk+hLeKvinSaSMk= -github.com/multiversx/mx-chain-core-go v1.2.1-0.20230510143029-ab37792342df/go.mod h1:jzYFSiYBuO0dGpGFXnZWSwcwcKP7Flyn/X41y4zIQrQ= -github.com/multiversx/mx-chain-core-go v1.2.1/go.mod h1:8gGEQv6BWuuJwhd25qqhCOZbBSv9mk+hLeKvinSaSMk= -github.com/multiversx/mx-chain-core-go v1.2.4/go.mod h1:jzYFSiYBuO0dGpGFXnZWSwcwcKP7Flyn/X41y4zIQrQ= -github.com/multiversx/mx-chain-core-go v1.2.5/go.mod h1:jzYFSiYBuO0dGpGFXnZWSwcwcKP7Flyn/X41y4zIQrQ= github.com/multiversx/mx-chain-core-go v1.2.6 h1:fD5cMsByM1kgvNI+uGCQGlhvr+TrV7FPvJlXT4ubYdg= github.com/multiversx/mx-chain-core-go v1.2.6/go.mod h1:jzYFSiYBuO0dGpGFXnZWSwcwcKP7Flyn/X41y4zIQrQ= github.com/multiversx/mx-chain-crypto-go v1.2.6 h1:yxsjAQGh62los+iYmORMfh3w9qen0xbYlmwU0juNSeg= @@ -632,10 +549,8 @@ github.com/multiversx/mx-chain-es-indexer-go v1.4.4 h1:3k8pB1AEILlNXL2ggSnP43uqV github.com/multiversx/mx-chain-es-indexer-go v1.4.4/go.mod h1:IAFuU3LhjVfs3+Sf4T3BlNjY1TmZHWovHRhV7tfR8cw= github.com/multiversx/mx-chain-logger-go v1.0.11 h1:DFsHa+sc5fKwhDR50I8uBM99RTDTEW68ESyr5ALRDwE= github.com/multiversx/mx-chain-logger-go v1.0.11/go.mod h1:1srDkP0DQucWQ+rYfaq0BX2qLnULsUdRPADpYUTM6dA= -github.com/multiversx/mx-chain-storage-go v1.0.8/go.mod h1:lEkFYFe6taKYxqO1einNgT1esY3K9Pj6vPnoCwV9C3U= github.com/multiversx/mx-chain-storage-go v1.0.11 h1:u4ZsfIXEU3nJWRUxyAswhBn2pT6tJkKRwf9pra4CpzA= github.com/multiversx/mx-chain-storage-go v1.0.11/go.mod h1:VP9fwyFBmbmDzahUuu0IeGX/dKG3iBWjN6FSQ6YtVaI= -github.com/multiversx/mx-chain-vm-common-go v1.4.1/go.mod h1:K6yCdro8VohzYI6GwjGzTO+fJiPgO5coo2sgQb+zA24= github.com/multiversx/mx-chain-vm-common-go v1.4.7 h1:7I1FQ2W1c9CMT2kOiroPD0je5RpiiaUO/G2HkajXMnU= github.com/multiversx/mx-chain-vm-common-go v1.4.7/go.mod h1:cnMvZN8+4oDkjloTZVExlf8ShkMGWbbDb5/D//wLT/k= github.com/multiversx/mx-chain-vm-v1_2-go v1.2.57 h1:7jzLRq/IcKpb/qWT3YglXY4RIM4oG6aSNnAUBdItjvk= @@ -693,7 +608,6 @@ github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/polydawn/refmt v0.0.0-20190807091052-3d65705ee9f1/go.mod h1:uIp+gprXxxrWSjjklXD+mN4wed/tMfjMMmN/9+JsA9o= github.com/polydawn/refmt v0.0.0-20201211092308-30ac6d18308e h1:ZOcivgkkFRnjfoTcGsDq3UQYiBmekwLA+qg0OjyB/ls= github.com/polydawn/refmt v0.0.0-20201211092308-30ac6d18308e/go.mod h1:uIp+gprXxxrWSjjklXD+mN4wed/tMfjMMmN/9+JsA9o= github.com/prometheus/client_golang v0.8.0/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= @@ -729,7 +643,6 @@ github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFR github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= github.com/rogpeppe/go-internal v1.8.0 h1:FCbCCtXNOY3UtUuHUYaghJg4y7Fd14rXifAYUAtL9R8= github.com/rogpeppe/go-internal v1.8.0/go.mod h1:WmiCO8CzOY8rg0OYDC4/i/2WRWAB6poM+XZ2dLUbcbE= -github.com/russross/blackfriday v1.5.2 h1:HyvC0ARfnZBqnXwABFeSZHpKvJHJJfPz81GNueLj0oo= github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= github.com/russross/blackfriday/v2 v2.0.1 h1:lPqVAte+HuHNfhJ/0LC98ESWRz8afy9tM/0RK8m9o+Q= github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= @@ -765,13 +678,9 @@ github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPx github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88= github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= -github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= -github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= github.com/smartystreets/assertions v1.13.1 h1:Ef7KhSmjZcK6AVf9YbJdvPYG9avaF0ZxudX+ThRdWfU= github.com/smartystreets/assertions v1.13.1/go.mod h1:cXr/IwVfSo/RbCSPhoAPv73p3hlSdrBH/b3SdnW/LMY= github.com/smartystreets/goconvey v1.6.4 h1:fv0U8FUIMPNf1L9lnHLvLhgicrIVChEkdzIKYqbNC9s= -github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= -github.com/smola/gocompat v0.2.0/go.mod h1:1B0MlxbmoZNo3h8guHp8HztB3BSYR5itql9qtVc0ypY= github.com/sourcegraph/annotate v0.0.0-20160123013949-f4cad6c6324d/go.mod h1:UdhH50NIW0fCiwBSr0co2m7BnFLdv4fQTgdqdJTHFeE= github.com/sourcegraph/syntaxhighlight v0.0.0-20170531221838-bd320f5d308e/go.mod h1:HuIsMU8RRBOtsCgI77wP899iHVBQpCmg4ErYMZB+2IA= github.com/spacemonkeygo/spacelog v0.0.0-20180420211403-2296661a0572 h1:RC6RW7j+1+HkWaX/Yh71Ee5ZHaHYt7ZP4sQgUrm6cDU= @@ -785,7 +694,6 @@ github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tL github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s= -github.com/src-d/envconfig v1.0.0/go.mod h1:Q9YQZ7BKITldTBnoxsE5gOeB5y66RyPXeue/R4aaNBc= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= @@ -817,28 +725,22 @@ github.com/tklauser/numcpus v0.2.1 h1:ct88eFm+Q7m2ZfXJdan1xYoXKlmwsfP+k88q05KvlZ github.com/tklauser/numcpus v0.2.1/go.mod h1:9aU+wOc6WjUIZEwWMP62PL/41d65P+iks1gBkr4QyP8= github.com/twitchyliquid64/golang-asm v0.15.1 h1:SU5vSMR7hnwNxj24w34ZyCi/FmDZTkS4MhqMhdFk5YI= github.com/twitchyliquid64/golang-asm v0.15.1/go.mod h1:a1lVb/DtPvCB8fslRZhAngC2+aY1QWCk3Cedj/Gdt08= -github.com/ugorji/go v1.2.7 h1:qYhyWUUd6WbiM+C6JZAUkIJt/1WrjzNHY9+KCIjVqTo= github.com/ugorji/go v1.2.7/go.mod h1:nF9osbDWLy6bDVv/Rtoh6QgnvNDpmCalQV5urGCCS6M= github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= github.com/ugorji/go/codec v1.2.7/go.mod h1:WGN1fab3R1fzQlVQTkfxVtIBhWDRqOviHU95kRgeqEY= github.com/ugorji/go/codec v1.2.9 h1:rmenucSohSTiyL09Y+l2OCk+FrMxGMzho2+tjr5ticU= github.com/ugorji/go/codec v1.2.9/go.mod h1:UNopzCgEMSXjBc6AOMqYvWC1ktqTAfzJZUZgYf6w6lg= github.com/urfave/cli v1.22.2/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= -github.com/urfave/cli v1.22.5/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= github.com/urfave/cli v1.22.10 h1:p8Fspmz3iTctJstry1PYS3HVdllxnEzTEsgIgtxTrCk= github.com/urfave/cli v1.22.10/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= github.com/viant/assertly v0.4.8/go.mod h1:aGifi++jvCrUaklKEKT0BU95igDNaqkvz+49uaYMPRU= github.com/viant/toolbox v0.24.0/go.mod h1:OxMCG57V0PXuIP2HNQrtJf2CjqdmbrOx5EkMILuUhzM= -github.com/wangjia184/sortedset v0.0.0-20160527075905-f5d03557ba30/go.mod h1:YkocrP2K2tcw938x9gCOmT5G5eCD6jsTz0SZuyAqwIE= -github.com/warpfork/go-testmark v0.10.0/go.mod h1:jhEf8FVxd+F17juRubpmut64NEG6I2rgkUhlcqqXwE0= github.com/warpfork/go-wish v0.0.0-20200122115046-b9ea61034e4a h1:G++j5e0OC488te356JvdhaM8YS6nMsjLAYF7JxCv07w= -github.com/warpfork/go-wish v0.0.0-20200122115046-b9ea61034e4a/go.mod h1:x6AKhvSSexNrVSrViXSHUEbICjmGXhtgABaHIySUSGw= github.com/whyrusleeping/go-keyspace v0.0.0-20160322163242-5b898ac5add1 h1:EKhdznlJHPMoKr0XTrX+IlJs1LH3lyx2nfr1dOlZ79k= github.com/whyrusleeping/go-keyspace v0.0.0-20160322163242-5b898ac5add1/go.mod h1:8UvriyWtv5Q5EOgjHaSseUEdkQfvwFv1I/In/O2M9gc= github.com/whyrusleeping/go-logging v0.0.0-20170515211332-0457bb6b88fc/go.mod h1:bopw91TMyo8J3tvftk8xmU2kPmlrt4nScJQZU2hE5EM= github.com/whyrusleeping/timecache v0.0.0-20160911033111-cfcb2f1abfee h1:lYbXeSvJi5zk5GLKVuid9TVjS9a0OmLIDKTfoZBL6Ow= github.com/whyrusleeping/timecache v0.0.0-20160911033111-cfcb2f1abfee/go.mod h1:m2aV4LZI4Aez7dP5PMyVKEHhUyEJ/RjmPEDOpDvudHg= -github.com/x-cray/logrus-prefixed-formatter v0.5.2/go.mod h1:2duySbKsL6M18s5GU7VPsoEPHyzalCE06qoARUCeBBE= github.com/xlab/treeprint v1.0.0/go.mod h1:IoImgRak9i3zJyuxOKUP1v4UZd1tMoKkq/Cimt1uhCg= github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= @@ -846,21 +748,16 @@ github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9de github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= -github.com/yuin/goldmark v1.4.1/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= -github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= github.com/yusufpapurcu/wmi v1.2.2 h1:KBNDSne4vP5mbSWnJbO+51IMOXJB67QiYCSBrubbPRg= github.com/yusufpapurcu/wmi v1.2.2/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= go.opencensus.io v0.18.0/go.mod h1:vKdFvxhtzZ9onBp9VKHK8z/sRpBMnKAsufL7wlDrCOA= go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= -go.opencensus.io v0.22.1/go.mod h1:Ap50jQcDJrx6rB6VgeeFPtuPIf3wMRvRfrfYDO6+BmA= go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.23.0 h1:gqCw0LfLxScz8irSi8exQc7fyQ0fKQU/qnC/X8+V/1M= go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= -go.opentelemetry.io/otel v1.7.0/go.mod h1:5BdUoMIz5WEs0vt0CUEMtSSaTSHBBVwrhnz7+nrD5xk= -go.opentelemetry.io/otel/trace v1.7.0/go.mod h1:fzLSB9nqR2eXzxPXb2JW9IKE+ScyXA48yyE4TNvoHqU= go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.6.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= @@ -868,9 +765,7 @@ go.uber.org/atomic v1.10.0 h1:9qC72Qh0+3MqyJbAn8YU5xVq1frD8bn3JtD2oXtafVQ= go.uber.org/atomic v1.10.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0= go.uber.org/goleak v1.0.0/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A= go.uber.org/goleak v1.1.11-0.20210813005559-691160354723/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ= -go.uber.org/goleak v1.1.11/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ= go.uber.org/goleak v1.1.12 h1:gZAh5/EyT/HQwlpkCy6wTpqfH9H8Lz8zbm3dZh+OyzA= -go.uber.org/goleak v1.1.12/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ= go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= go.uber.org/multierr v1.5.0/go.mod h1:FeouvMocqHpRaaGuG9EjoKcStLC43Zu/fmqdUMPcKYU= go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= @@ -891,26 +786,17 @@ golang.org/x/crypto v0.0.0-20170930174604-9419663f5a44/go.mod h1:6SG95UA2DQfeDnf golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181030102418-4d3f4d9ffa16/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20190211182817-74369b46fc67/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190313024323-a1f597ede03a/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190611184440-5c40567a22f8/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20200115085410-6d4e4cb37c7d/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200221231518-2aa609cf4a9d/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20200510223506-06a226fb4e37/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200602180216-279210d13fed/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20210220033148-5ea612d1eb83/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= -golang.org/x/crypto v0.0.0-20210506145944-38f3c27a63bf/go.mod h1:P+XmwS30IXTQdn5tA2iutPOUgjI07+tq3H3K9MVA1s8= golang.org/x/crypto v0.0.0-20210711020723-a769d52b0f97/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.0.0-20220525230936-793ad666bf5e/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= -golang.org/x/crypto v0.3.0/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4= -golang.org/x/crypto v0.5.0/go.mod h1:NK/OQwhpMQP3MwtdjgLlYHnH9ebylxKWv3e0fK+mkQU= golang.org/x/crypto v0.7.0 h1:AvwMYaRytfdeVt3u6mLaxYtErKYjxA2OXjJ1HHq6t3A= golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= @@ -923,7 +809,6 @@ golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u0 golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= -golang.org/x/exp v0.0.0-20220426173459-3bcf042a4bf5/go.mod h1:lgLbSvA5ygNOMpwM/9anMpWVlVJ7Z+cHWq/eFuinpGE= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= golang.org/x/lint v0.0.0-20180702182130-06c8688daad7/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= @@ -946,9 +831,6 @@ golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzB golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.5.1/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro= -golang.org/x/mod v0.6.0-dev.0.20211013180041-c96bc1413d57/go.mod h1:3p9vT2HGsQu2K1YbXdKPJLVgG5VJdoTa1poYQBtP1AY= -golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= golang.org/x/mod v0.8.0 h1:LUYupSeNrTNCGzR/hVBk2NHZO4hXcVaW1k4Qx7rjPx8= golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/net v0.0.0-20180719180050-a680a1efc54d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -997,18 +879,9 @@ golang.org/x/net v0.0.0-20210423184538-5f58ad60dda6/go.mod h1:OJAsFXCWl8Ukc7SiCT golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk= golang.org/x/net v0.0.0-20210525063256-abc453219eb5/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20210726213435-c6fcb2dbf985/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= -golang.org/x/net v0.0.0-20220425223048-2871e0cb64e4/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220624214902-1bab6f366d9e/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.0.0-20220812174116-3211cb980234/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= -golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY= -golang.org/x/net v0.5.0/go.mod h1:DivGGAXEgPSlEBzxGzZI+ZLohi+xUj054jfeKui00ws= -golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= -golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.8.0 h1:Zrh2ngAOFYneWTAIAPethzeaQLuHwhuBkuV6ZiRnUaQ= golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= @@ -1032,8 +905,6 @@ golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20220601150217-0de741cfad7f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.1.0 h1:wsuoTGHzEhffawBOhz5CYhcrV4IdKZbEyZjBMuTp12o= golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20180810173357-98c5dad5d1a0/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -1044,7 +915,6 @@ golang.org/x/sys v0.0.0-20181029174526-d69651ed3497/go.mod h1:STP8DvDyc/dI5b8T5h golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181205085412-a5c9d58dba9a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190219092855-153ac476189d/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190228124157-a34e9553db1e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -1092,7 +962,6 @@ golang.org/x/sys v0.0.0-20210112080510-489259a85091/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210217105451-b926d437f341/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210303074136-134d130e1a04/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210309074719-68d13333faf2/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210426080607-c94f62235c83/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -1101,28 +970,16 @@ golang.org/x/sys v0.0.0-20210603081109-ebe580a85c40/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211019181941-9d821ace8654/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220114195835-da31bd327af9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220422013727-9388b58f7150/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220704084225-05e143d24a9e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.4.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0 h1:MVltZSvRTcU2ljQOhs94SXPftV6DCNnZViHeQps87pQ= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= -golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= -golang.org/x/term v0.4.0/go.mod h1:9P2UbLfCdcvo3p/nzKvsmas4TnlujnuoV9hGgYzW1lQ= -golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= -golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -1130,10 +987,6 @@ golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= -golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ= -golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= -golang.org/x/text v0.6.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= -golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.8.0 h1:57P1ETyNKtuIjB4SRd15iJxuhj8Gc416Y78H3qgMh68= golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= @@ -1144,13 +997,11 @@ golang.org/x/tools v0.0.0-20180828015842-6cd1fcedba52/go.mod h1:n7NCudcB/nEzxVGm golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20181030000716-a0a13e073c7b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20181130052023-1c3d964395ce/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= @@ -1192,8 +1043,6 @@ golang.org/x/tools v0.0.0-20201224043029-2b0845dc783e/go.mod h1:emZCQorbCU4vsT4f golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.6-0.20210726203631-07bc1bf47fb2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.8-0.20211029000441-d6a9af8af023/go.mod h1:nABZi5QlRsZVlzPpHl034qft6wpY4eDcsTt5AaioBiU= -golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= golang.org/x/tools v0.6.0 h1:BOw41kyTf3PuCW1pVQf8+Cyg8pMlkYB1oo9iJ6D/lKM= golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -1304,8 +1153,6 @@ gopkg.in/go-playground/assert.v1 v1.2.1/go.mod h1:9RXL0bg/zibRAgZUYszZSwO/z8Y/a8 gopkg.in/go-playground/validator.v8 v8.18.2 h1:lFB4DoMU6B626w8ny76MV7VX6W2VHct2GVOI3xgiMrQ= gopkg.in/go-playground/validator.v8 v8.18.2/go.mod h1:RX2a/7Ha8BgOhfk7j780h4/u/RRjR0eouCJSH80/M2Y= gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= -gopkg.in/src-d/go-cli.v0 v0.0.0-20181105080154-d492247bbc0d/go.mod h1:z+K8VcOYVYcSwSjGebuDL6176A1XskgbtNl64NSg+n8= -gopkg.in/src-d/go-log.v1 v1.0.1/go.mod h1:GN34hKP0g305ysm2/hctJ0Y8nWP3zxXXJ8GFabTyABE= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= @@ -1329,7 +1176,6 @@ honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWh honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= -lukechampine.com/blake3 v1.1.6/go.mod h1:tkKEOtDkNtklkXtLNEOGNq5tcV90tJiA1vAA12R78LA= lukechampine.com/blake3 v1.1.7 h1:GgRMhmdsuK8+ii6UZFDL8Nb+VyMwadAgcJyfYHxG6n0= lukechampine.com/blake3 v1.1.7/go.mod h1:tkKEOtDkNtklkXtLNEOGNq5tcV90tJiA1vAA12R78LA= rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= diff --git a/integrationTests/mock/processComponentsStub.go b/integrationTests/mock/processComponentsStub.go index 07da0ca9d87..40d296129ed 100644 --- a/integrationTests/mock/processComponentsStub.go +++ b/integrationTests/mock/processComponentsStub.go @@ -21,6 +21,7 @@ type ProcessComponentsStub struct { ShardCoord sharding.Coordinator ShardCoordinatorCalled func() sharding.Coordinator IntContainer process.InterceptorsContainer + FullArchiveIntContainer process.InterceptorsContainer ResContainer dataRetriever.ResolversContainer ReqFinder dataRetriever.RequestersFinder RoundHandlerField consensus.RoundHandler @@ -40,7 +41,8 @@ type ProcessComponentsStub struct { ReqHandler process.RequestHandler TxLogsProcess process.TransactionLogProcessorDatabase HeaderConstructValidator process.HeaderConstructionValidator - PeerMapper process.NetworkShardingCollector + MainPeerMapper process.NetworkShardingCollector + FullArchivePeerMapper process.NetworkShardingCollector TxSimulatorProcessor factory.TransactionSimulatorProcessor FallbackHdrValidator process.FallbackHeaderValidator WhiteListHandlerInternal process.WhiteListHandler @@ -95,6 +97,11 @@ func (pcs *ProcessComponentsStub) InterceptorsContainer() process.InterceptorsCo return pcs.IntContainer } +// FullArchiveInterceptorsContainer - +func (pcs *ProcessComponentsStub) FullArchiveInterceptorsContainer() process.InterceptorsContainer { + return pcs.FullArchiveIntContainer +} + // ResolversContainer - func (pcs *ProcessComponentsStub) ResolversContainer() dataRetriever.ResolversContainer { return pcs.ResContainer @@ -190,7 +197,12 @@ func (pcs *ProcessComponentsStub) HeaderConstructionValidator() process.HeaderCo // PeerShardMapper - func (pcs *ProcessComponentsStub) PeerShardMapper() process.NetworkShardingCollector { - return pcs.PeerMapper + return pcs.MainPeerMapper +} + +// FullArchivePeerShardMapper - +func (pcs *ProcessComponentsStub) FullArchivePeerShardMapper() process.NetworkShardingCollector { + return pcs.FullArchivePeerMapper } // FallbackHeaderValidator - diff --git a/integrationTests/multiShard/endOfEpoch/startInEpoch/startInEpoch_test.go b/integrationTests/multiShard/endOfEpoch/startInEpoch/startInEpoch_test.go index 95622859072..538a52018a9 100644 --- a/integrationTests/multiShard/endOfEpoch/startInEpoch/startInEpoch_test.go +++ b/integrationTests/multiShard/endOfEpoch/startInEpoch/startInEpoch_test.go @@ -33,6 +33,7 @@ import ( epochNotifierMock "github.com/multiversx/mx-chain-go/testscommon/epochNotifier" "github.com/multiversx/mx-chain-go/testscommon/genericMocks" "github.com/multiversx/mx-chain-go/testscommon/nodeTypeProviderMock" + "github.com/multiversx/mx-chain-go/testscommon/p2pmocks" "github.com/multiversx/mx-chain-go/testscommon/scheduledDataSyncer" "github.com/multiversx/mx-chain-go/testscommon/shardingMocks" statusHandlerMock "github.com/multiversx/mx-chain-go/testscommon/statusHandler" @@ -199,7 +200,9 @@ func testNodeStartsInEpoch(t *testing.T, shardID uint32, expectedHighestRound ui }) messenger := integrationTests.CreateMessengerWithNoDiscovery() time.Sleep(integrationTests.P2pBootstrapDelay) - nodeToJoinLate.Messenger = messenger + nodeToJoinLate.MainMessenger = messenger + + nodeToJoinLate.FullArchiveMessenger = &p2pmocks.MessengerStub{} for _, n := range nodes { _ = n.ConnectTo(nodeToJoinLate) @@ -230,7 +233,8 @@ func testNodeStartsInEpoch(t *testing.T, shardID uint32, expectedHighestRound ui argsBootstrapHandler := bootstrap.ArgsEpochStartBootstrap{ CryptoComponentsHolder: cryptoComponents, CoreComponentsHolder: coreComponents, - Messenger: nodeToJoinLate.Messenger, + MainMessenger: nodeToJoinLate.MainMessenger, + FullArchiveMessenger: nodeToJoinLate.FullArchiveMessenger, GeneralConfig: generalConfig, PrefsConfig: config.PreferencesConfig{ FullArchive: false, diff --git a/integrationTests/multiShard/hardFork/hardFork_test.go b/integrationTests/multiShard/hardFork/hardFork_test.go index 24d927caa40..4971bcc084e 100644 --- a/integrationTests/multiShard/hardFork/hardFork_test.go +++ b/integrationTests/multiShard/hardFork/hardFork_test.go @@ -73,7 +73,7 @@ func TestHardForkWithoutTransactionInMultiShardedEnvironment(t *testing.T) { n.Close() } - _ = hardforkTriggerNode.Messenger.Close() + hardforkTriggerNode.Close() }() round := uint64(0) @@ -144,7 +144,7 @@ func TestHardForkWithContinuousTransactionsInMultiShardedEnvironment(t *testing. n.Close() } - _ = hardforkTriggerNode.Messenger.Close() + hardforkTriggerNode.Close() }() initialVal := big.NewInt(1000000000) @@ -585,7 +585,8 @@ func createHardForkExporter( StorageService: node.Storage, RequestHandler: node.RequestHandler, ShardCoordinator: node.ShardCoordinator, - Messenger: node.Messenger, + MainMessenger: node.MainMessenger, + FullArchiveMessenger: node.FullArchiveMessenger, ActiveAccountsDBs: accountsDBs, ExportFolder: node.ExportFolder, ExportTriesStorageConfig: config.StorageConfig{ @@ -602,21 +603,22 @@ func createHardForkExporter( MaxOpenFiles: 10, }, }, - ExportStateStorageConfig: exportConfig, - ExportStateKeysConfig: keysConfig, - MaxTrieLevelInMemory: uint(5), - WhiteListHandler: node.WhiteListHandler, - WhiteListerVerifiedTxs: node.WhiteListerVerifiedTxs, - InterceptorsContainer: node.InterceptorsContainer, - ExistingResolvers: node.ResolversContainer, - ExistingRequesters: node.RequestersContainer, - NodesCoordinator: node.NodesCoordinator, - HeaderSigVerifier: node.HeaderSigVerifier, - HeaderIntegrityVerifier: node.HeaderIntegrityVerifier, - ValidityAttester: node.BlockTracker, - OutputAntifloodHandler: &mock.NilAntifloodHandler{}, - InputAntifloodHandler: &mock.NilAntifloodHandler{}, - RoundHandler: &mock.RoundHandlerMock{}, + ExportStateStorageConfig: exportConfig, + ExportStateKeysConfig: keysConfig, + MaxTrieLevelInMemory: uint(5), + WhiteListHandler: node.WhiteListHandler, + WhiteListerVerifiedTxs: node.WhiteListerVerifiedTxs, + MainInterceptorsContainer: node.MainInterceptorsContainer, + FullArchiveInterceptorsContainer: node.FullArchiveInterceptorsContainer, + ExistingResolvers: node.ResolversContainer, + ExistingRequesters: node.RequestersContainer, + NodesCoordinator: node.NodesCoordinator, + HeaderSigVerifier: node.HeaderSigVerifier, + HeaderIntegrityVerifier: node.HeaderIntegrityVerifier, + ValidityAttester: node.BlockTracker, + OutputAntifloodHandler: &mock.NilAntifloodHandler{}, + InputAntifloodHandler: &mock.NilAntifloodHandler{}, + RoundHandler: &mock.RoundHandlerMock{}, InterceptorDebugConfig: config.InterceptorResolverDebugConfig{ Enabled: true, EnablePrint: true, @@ -631,6 +633,7 @@ func createHardForkExporter( TrieSyncerVersion: 2, PeersRatingHandler: node.PeersRatingHandler, CheckNodesOnDisk: false, + NodeOperationMode: node.NodeOperationMode, } exportHandler, err := factory.NewExportHandlerFactory(argsExportHandler) diff --git a/integrationTests/oneNodeNetwork.go b/integrationTests/oneNodeNetwork.go index 554b83bb084..720ff0529c6 100644 --- a/integrationTests/oneNodeNetwork.go +++ b/integrationTests/oneNodeNetwork.go @@ -32,8 +32,7 @@ func NewOneNodeNetwork() *oneNodeNetwork { // Stop stops the test network func (n *oneNodeNetwork) Stop() { - _ = n.Node.Messenger.Close() - _ = n.Node.VMContainer.Close() + n.Node.Close() } // Mint mints the given address diff --git a/integrationTests/p2p/networkSharding-hbv2/networkSharding_test.go b/integrationTests/p2p/networkSharding-hbv2/networkSharding_test.go index 644223672cb..03679fb4201 100644 --- a/integrationTests/p2p/networkSharding-hbv2/networkSharding_test.go +++ b/integrationTests/p2p/networkSharding-hbv2/networkSharding_test.go @@ -119,8 +119,7 @@ func stopNodes(advertiser p2p.Messenger, nodesMap map[uint32][]*integrationTests _ = advertiser.Close() for _, nodes := range nodesMap { for _, n := range nodes { - _ = n.MainMessenger.Close() - _ = n.FullArchiveMessenger.Close() + n.Close() } } } diff --git a/integrationTests/p2p/peersRating/peersRating_test.go b/integrationTests/p2p/peersRating/peersRating_test.go index a4a4bc0551e..2e0dc7374cf 100644 --- a/integrationTests/p2p/peersRating/peersRating_test.go +++ b/integrationTests/p2p/peersRating/peersRating_test.go @@ -32,9 +32,9 @@ func TestPeersRatingAndResponsiveness(t *testing.T) { requesterNode := createNodeWithPeersRatingHandler(core.MetachainShardId, numOfShards) defer func() { - _ = resolverNode.Messenger.Close() - _ = maliciousNode.Messenger.Close() - _ = requesterNode.Messenger.Close() + resolverNode.Close() + maliciousNode.Close() + requesterNode.Close() }() time.Sleep(time.Second) @@ -47,9 +47,9 @@ func TestPeersRatingAndResponsiveness(t *testing.T) { // Broadcasts should not be considered for peers rating topic := factory.ShardBlocksTopic + resolverNode.ShardCoordinator.CommunicationIdentifier(requesterNode.ShardCoordinator.SelfId()) - resolverNode.Messenger.Broadcast(topic, hdrBuff) + resolverNode.MainMessenger.Broadcast(topic, hdrBuff) time.Sleep(time.Second) - maliciousNode.Messenger.Broadcast(topic, hdrBuff) + maliciousNode.MainMessenger.Broadcast(topic, hdrBuff) time.Sleep(time.Second) // check that broadcasts were successful _, err := requesterNode.DataPool.Headers().GetHeaderByHash(hdrHash) @@ -67,12 +67,12 @@ func TestPeersRatingAndResponsiveness(t *testing.T) { peerRatingsMap := getRatingsMap(t, requesterNode) // resolver node should have received and responded to numOfRequests - initialResolverRating, exists := peerRatingsMap[resolverNode.Messenger.ID().Pretty()] + initialResolverRating, exists := peerRatingsMap[resolverNode.MainMessenger.ID().Pretty()] require.True(t, exists) initialResolverExpectedRating := fmt.Sprintf("%d", numOfRequests*(decreaseFactor+increaseFactor)) assert.Equal(t, initialResolverExpectedRating, initialResolverRating) // malicious node should have only received numOfRequests - initialMaliciousRating, exists := peerRatingsMap[maliciousNode.Messenger.ID().Pretty()] + initialMaliciousRating, exists := peerRatingsMap[maliciousNode.MainMessenger.ID().Pretty()] require.True(t, exists) initialMaliciousExpectedRating := fmt.Sprintf("%d", numOfRequests*decreaseFactor) assert.Equal(t, initialMaliciousExpectedRating, initialMaliciousRating) @@ -83,12 +83,12 @@ func TestPeersRatingAndResponsiveness(t *testing.T) { peerRatingsMap = getRatingsMap(t, requesterNode) // Resolver should have reached max limit and timestamps still update - initialResolverRating, exists = peerRatingsMap[resolverNode.Messenger.ID().Pretty()] + initialResolverRating, exists = peerRatingsMap[resolverNode.MainMessenger.ID().Pretty()] require.True(t, exists) assert.Equal(t, "100", initialResolverRating) // Malicious should have reached min limit and timestamps still update - initialMaliciousRating, exists = peerRatingsMap[maliciousNode.Messenger.ID().Pretty()] + initialMaliciousRating, exists = peerRatingsMap[maliciousNode.MainMessenger.ID().Pretty()] require.True(t, exists) assert.Equal(t, "-100", initialMaliciousRating) @@ -100,12 +100,12 @@ func TestPeersRatingAndResponsiveness(t *testing.T) { peerRatingsMap = getRatingsMap(t, requesterNode) // resolver node should have the max rating + numOfRequests that didn't answer to - resolverRating, exists := peerRatingsMap[resolverNode.Messenger.ID().Pretty()] + resolverRating, exists := peerRatingsMap[resolverNode.MainMessenger.ID().Pretty()] require.True(t, exists) finalResolverExpectedRating := fmt.Sprintf("%d", 100+decreaseFactor*numOfRequests) assert.Equal(t, finalResolverExpectedRating, resolverRating) // malicious node should have the min rating + numOfRequests that received and responded to - maliciousRating, exists := peerRatingsMap[maliciousNode.Messenger.ID().Pretty()] + maliciousRating, exists := peerRatingsMap[maliciousNode.MainMessenger.ID().Pretty()] require.True(t, exists) finalMaliciousExpectedRating := fmt.Sprintf("%d", -100+numOfRequests*increaseFactor+(numOfRequests-1)*decreaseFactor) assert.Equal(t, finalMaliciousExpectedRating, maliciousRating) diff --git a/integrationTests/resolvers/headers/headers_test.go b/integrationTests/resolvers/headers/headers_test.go index 29823a0090d..e686225bbc6 100644 --- a/integrationTests/resolvers/headers/headers_test.go +++ b/integrationTests/resolvers/headers/headers_test.go @@ -24,8 +24,8 @@ func TestRequestResolveShardHeadersByHashRequestingShardResolvingShard(t *testin shardId := uint32(0) nResolver, nRequester := resolvers.CreateResolverRequester(shardId, shardId) defer func() { - _ = nRequester.Messenger.Close() - _ = nResolver.Messenger.Close() + nRequester.Close() + nResolver.Close() }() headerNonce := uint64(0) header, hash := resolvers.CreateShardHeader(headerNonce, integrationTests.ChainID) @@ -61,8 +61,8 @@ func TestRequestResolveShardHeadersByHashRequestingMetaResolvingShard(t *testing shardId := uint32(0) nResolver, nRequester := resolvers.CreateResolverRequester(shardId, core.MetachainShardId) defer func() { - _ = nRequester.Messenger.Close() - _ = nResolver.Messenger.Close() + nRequester.Close() + nResolver.Close() }() headerNonce := uint64(0) header, hash := resolvers.CreateShardHeader(headerNonce, integrationTests.ChainID) @@ -98,8 +98,8 @@ func TestRequestResolveShardHeadersByHashRequestingShardResolvingMeta(t *testing shardId := uint32(0) nResolver, nRequester := resolvers.CreateResolverRequester(core.MetachainShardId, shardId) defer func() { - _ = nRequester.Messenger.Close() - _ = nResolver.Messenger.Close() + nRequester.Close() + nResolver.Close() }() headerNonce := uint64(0) header, hash := resolvers.CreateShardHeader(headerNonce, integrationTests.ChainID) @@ -137,8 +137,8 @@ func TestRequestResolveShardHeadersByNonceRequestingShardResolvingShard(t *testi shardId := uint32(0) nResolver, nRequester := resolvers.CreateResolverRequester(shardId, shardId) defer func() { - _ = nRequester.Messenger.Close() - _ = nResolver.Messenger.Close() + nRequester.Close() + nResolver.Close() }() headerNonce := uint64(0) header, hash := resolvers.CreateShardHeader(headerNonce, integrationTests.ChainID) @@ -176,8 +176,8 @@ func TestRequestResolveShardHeadersByNonceRequestingMetaResolvingShard(t *testin shardId := uint32(0) nResolver, nRequester := resolvers.CreateResolverRequester(shardId, core.MetachainShardId) defer func() { - _ = nRequester.Messenger.Close() - _ = nResolver.Messenger.Close() + nRequester.Close() + nResolver.Close() }() headerNonce := uint64(0) header, hash := resolvers.CreateShardHeader(headerNonce, integrationTests.ChainID) @@ -215,8 +215,8 @@ func TestRequestResolveShardHeadersByNonceRequestingShardResolvingMeta(t *testin shardId := uint32(0) nResolver, nRequester := resolvers.CreateResolverRequester(core.MetachainShardId, shardId) defer func() { - _ = nRequester.Messenger.Close() - _ = nResolver.Messenger.Close() + nRequester.Close() + nResolver.Close() }() headerNonce := uint64(0) header, hash := resolvers.CreateShardHeader(headerNonce, integrationTests.ChainID) diff --git a/integrationTests/resolvers/metablock/metablock_test.go b/integrationTests/resolvers/metablock/metablock_test.go index 37da9de9c3a..957fffb7fa2 100644 --- a/integrationTests/resolvers/metablock/metablock_test.go +++ b/integrationTests/resolvers/metablock/metablock_test.go @@ -24,8 +24,8 @@ func TestRequestResolveMetaHeadersByHashRequestingShardResolvingShard(t *testing shardId := uint32(0) nResolver, nRequester := resolvers.CreateResolverRequester(shardId, shardId) defer func() { - _ = nRequester.Messenger.Close() - _ = nResolver.Messenger.Close() + nRequester.Close() + nResolver.Close() }() headerNonce := uint64(0) header, hash := resolvers.CreateMetaHeader(headerNonce, integrationTests.ChainID) @@ -61,8 +61,8 @@ func TestRequestResolveMetaHeadersByHashRequestingMetaResolvingShard(t *testing. shardId := uint32(0) nResolver, nRequester := resolvers.CreateResolverRequester(shardId, core.MetachainShardId) defer func() { - _ = nRequester.Messenger.Close() - _ = nResolver.Messenger.Close() + nRequester.Close() + nResolver.Close() }() headerNonce := uint64(0) header, hash := resolvers.CreateMetaHeader(headerNonce, integrationTests.ChainID) @@ -98,8 +98,8 @@ func TestRequestResolveMetaHeadersByHashRequestingShardResolvingMeta(t *testing. shardId := uint32(0) nResolver, nRequester := resolvers.CreateResolverRequester(core.MetachainShardId, shardId) defer func() { - _ = nRequester.Messenger.Close() - _ = nResolver.Messenger.Close() + nRequester.Close() + nResolver.Close() }() headerNonce := uint64(0) header, hash := resolvers.CreateMetaHeader(headerNonce, integrationTests.ChainID) @@ -137,8 +137,8 @@ func TestRequestResolveMetaHeadersByNonceRequestingShardResolvingShard(t *testin shardId := uint32(0) nResolver, nRequester := resolvers.CreateResolverRequester(shardId, shardId) defer func() { - _ = nRequester.Messenger.Close() - _ = nResolver.Messenger.Close() + nRequester.Close() + nResolver.Close() }() headerNonce := uint64(0) header, hash := resolvers.CreateMetaHeader(headerNonce, integrationTests.ChainID) @@ -176,8 +176,8 @@ func TestRequestResolveMetaHeadersByNonceRequestingMetaResolvingShard(t *testing shardId := uint32(0) nResolver, nRequester := resolvers.CreateResolverRequester(shardId, core.MetachainShardId) defer func() { - _ = nRequester.Messenger.Close() - _ = nResolver.Messenger.Close() + nRequester.Close() + nResolver.Close() }() headerNonce := uint64(0) header, hash := resolvers.CreateMetaHeader(headerNonce, integrationTests.ChainID) @@ -215,8 +215,8 @@ func TestRequestResolveMetaHeadersByNonceRequestingShardResolvingMeta(t *testing shardId := uint32(0) nResolver, nRequester := resolvers.CreateResolverRequester(core.MetachainShardId, shardId) defer func() { - _ = nRequester.Messenger.Close() - _ = nResolver.Messenger.Close() + nRequester.Close() + nResolver.Close() }() headerNonce := uint64(0) header, hash := resolvers.CreateMetaHeader(headerNonce, integrationTests.ChainID) diff --git a/integrationTests/resolvers/miniblocks/miniblocks_test.go b/integrationTests/resolvers/miniblocks/miniblocks_test.go index d115d76ce54..989dd239ec6 100644 --- a/integrationTests/resolvers/miniblocks/miniblocks_test.go +++ b/integrationTests/resolvers/miniblocks/miniblocks_test.go @@ -18,8 +18,8 @@ func TestRequestResolveMiniblockByHashRequestingShardResolvingSameShard(t *testi shardId := uint32(0) nResolver, nRequester := resolvers.CreateResolverRequester(shardId, shardId) defer func() { - _ = nRequester.Messenger.Close() - _ = nResolver.Messenger.Close() + nRequester.Close() + nResolver.Close() }() miniblock, hash := resolvers.CreateMiniblock(shardId, shardId) @@ -54,8 +54,8 @@ func TestRequestResolveMiniblockByHashRequestingShardResolvingOtherShard(t *test shardIdRequester := uint32(1) nResolver, nRequester := resolvers.CreateResolverRequester(shardIdResolver, shardIdRequester) defer func() { - _ = nRequester.Messenger.Close() - _ = nResolver.Messenger.Close() + nRequester.Close() + nResolver.Close() }() miniblock, hash := resolvers.CreateMiniblock(shardIdResolver, shardIdRequester) @@ -89,8 +89,8 @@ func TestRequestResolveMiniblockByHashRequestingShardResolvingMeta(t *testing.T) shardId := uint32(0) nResolver, nRequester := resolvers.CreateResolverRequester(core.MetachainShardId, shardId) defer func() { - _ = nRequester.Messenger.Close() - _ = nResolver.Messenger.Close() + nRequester.Close() + nResolver.Close() }() miniblock, hash := resolvers.CreateMiniblock(shardId, shardId) @@ -124,8 +124,8 @@ func TestRequestResolveMiniblockByHashRequestingMetaResolvingShard(t *testing.T) shardId := uint32(0) nResolver, nRequester := resolvers.CreateResolverRequester(shardId, core.MetachainShardId) defer func() { - _ = nRequester.Messenger.Close() - _ = nResolver.Messenger.Close() + nRequester.Close() + nResolver.Close() }() miniblock, hash := resolvers.CreateMiniblock(shardId, core.MetachainShardId) @@ -159,8 +159,8 @@ func TestRequestResolvePeerMiniblockByHashRequestingShardResolvingSameShard(t *t shardId := uint32(0) nResolver, nRequester := resolvers.CreateResolverRequester(shardId, shardId) defer func() { - _ = nRequester.Messenger.Close() - _ = nResolver.Messenger.Close() + nRequester.Close() + nResolver.Close() }() miniblock, hash := resolvers.CreateMiniblock(core.MetachainShardId, core.AllShardId) @@ -195,8 +195,8 @@ func TestRequestResolvePeerMiniblockByHashRequestingShardResolvingOtherShard(t * shardIdRequester := uint32(1) nResolver, nRequester := resolvers.CreateResolverRequester(shardIdResolver, shardIdRequester) defer func() { - _ = nRequester.Messenger.Close() - _ = nResolver.Messenger.Close() + nRequester.Close() + nResolver.Close() }() miniblock, hash := resolvers.CreateMiniblock(shardIdResolver, core.AllShardId) @@ -230,8 +230,8 @@ func TestRequestResolvePeerMiniblockByHashRequestingShardResolvingMeta(t *testin shardId := uint32(0) nResolver, nRequester := resolvers.CreateResolverRequester(core.MetachainShardId, shardId) defer func() { - _ = nRequester.Messenger.Close() - _ = nResolver.Messenger.Close() + nRequester.Close() + nResolver.Close() }() miniblock, hash := resolvers.CreateMiniblock(shardId, core.AllShardId) @@ -265,8 +265,8 @@ func TestRequestResolvePeerMiniblockByHashRequestingMetaResolvingShard(t *testin shardId := uint32(0) nResolver, nRequester := resolvers.CreateResolverRequester(shardId, core.MetachainShardId) defer func() { - _ = nRequester.Messenger.Close() - _ = nResolver.Messenger.Close() + nRequester.Close() + nResolver.Close() }() miniblock, hash := resolvers.CreateMiniblock(shardId, core.AllShardId) diff --git a/integrationTests/resolvers/rewards/rewards_test.go b/integrationTests/resolvers/rewards/rewards_test.go index 5e12fd9c1cf..c0cf4cea66d 100644 --- a/integrationTests/resolvers/rewards/rewards_test.go +++ b/integrationTests/resolvers/rewards/rewards_test.go @@ -20,8 +20,8 @@ func TestRequestResolveRewardsByHashRequestingShardResolvingOtherShard(t *testin shardIdRequester := uint32(0) nResolver, nRequester := resolvers.CreateResolverRequester(shardIdResolver, shardIdRequester) defer func() { - _ = nRequester.Messenger.Close() - _ = nResolver.Messenger.Close() + nRequester.Close() + nResolver.Close() }() headerNonce := uint64(0) reward, hash := resolvers.CreateReward(headerNonce) diff --git a/integrationTests/resolvers/smartContractsResults/scrs_test.go b/integrationTests/resolvers/smartContractsResults/scrs_test.go index 7b243379259..75ac19c693c 100644 --- a/integrationTests/resolvers/smartContractsResults/scrs_test.go +++ b/integrationTests/resolvers/smartContractsResults/scrs_test.go @@ -20,8 +20,8 @@ func TestRequestResolveLargeSCRByHashRequestingShardResolvingOtherShard(t *testi shardIdRequester := uint32(0) nResolver, nRequester := resolvers.CreateResolverRequester(shardIdResolver, shardIdRequester) defer func() { - _ = nRequester.Messenger.Close() - _ = nResolver.Messenger.Close() + nRequester.Close() + nResolver.Close() }() scr, hash := resolvers.CreateLargeSmartContractResults() diff --git a/integrationTests/resolvers/testInitializer.go b/integrationTests/resolvers/testInitializer.go index 95f0d388df9..2910c7590f7 100644 --- a/integrationTests/resolvers/testInitializer.go +++ b/integrationTests/resolvers/testInitializer.go @@ -38,7 +38,7 @@ func CreateResolverRequester( }) time.Sleep(time.Second) - err := nRequester.Messenger.ConnectToPeer(integrationTests.GetConnectableAddress(nResolver.Messenger)) + err := nRequester.MainMessenger.ConnectToPeer(integrationTests.GetConnectableAddress(nResolver.MainMessenger)) Log.LogIfError(err) time.Sleep(time.Second) diff --git a/integrationTests/singleShard/block/interceptedRequestHdr/interceptedRequestHdr_test.go b/integrationTests/singleShard/block/interceptedRequestHdr/interceptedRequestHdr_test.go index a36c16007b8..62c2d00733c 100644 --- a/integrationTests/singleShard/block/interceptedRequestHdr/interceptedRequestHdr_test.go +++ b/integrationTests/singleShard/block/interceptedRequestHdr/interceptedRequestHdr_test.go @@ -49,8 +49,8 @@ func TestNode_GenerateSendInterceptHeaderByNonceWithNetMessenger(t *testing.T) { }) defer func() { - _ = nRequester.Messenger.Close() - _ = nResolver.Messenger.Close() + nRequester.Close() + nResolver.Close() }() //connect messengers together @@ -117,8 +117,8 @@ func TestNode_InterceptedHeaderWithWrongChainIDShouldBeDiscarded(t *testing.T) { }) defer func() { - _ = nRequester.Messenger.Close() - _ = nResolver.Messenger.Close() + nRequester.Close() + nResolver.Close() }() //connect messengers together diff --git a/integrationTests/singleShard/block/interceptedRequestTxBlockBody/interceptedRequestTxBlockBody_test.go b/integrationTests/singleShard/block/interceptedRequestTxBlockBody/interceptedRequestTxBlockBody_test.go index 1ef06e7aacb..b6c31bba12e 100644 --- a/integrationTests/singleShard/block/interceptedRequestTxBlockBody/interceptedRequestTxBlockBody_test.go +++ b/integrationTests/singleShard/block/interceptedRequestTxBlockBody/interceptedRequestTxBlockBody_test.go @@ -42,8 +42,8 @@ func TestNode_GenerateSendInterceptTxBlockBodyWithNetMessenger(t *testing.T) { }) defer func() { - _ = nRequester.Messenger.Close() - _ = nResolver.Messenger.Close() + nRequester.Close() + nResolver.Close() }() //connect messengers together diff --git a/integrationTests/singleShard/transaction/interceptedBulkTx/interceptedBulkTx_test.go b/integrationTests/singleShard/transaction/interceptedBulkTx/interceptedBulkTx_test.go index 3e8a63e1b33..fab7310acb5 100644 --- a/integrationTests/singleShard/transaction/interceptedBulkTx/interceptedBulkTx_test.go +++ b/integrationTests/singleShard/transaction/interceptedBulkTx/interceptedBulkTx_test.go @@ -136,7 +136,7 @@ func TestNode_SendTransactionFromAnUnmintedAccountShouldReturnErrorAtApiLevel(t }) defer func() { - _ = node.Messenger.Close() + node.Close() }() tx := &transaction.Transaction{ diff --git a/integrationTests/singleShard/transaction/interceptedBulkUnsignedTx/interceptedBulkUnsignedTx_test.go b/integrationTests/singleShard/transaction/interceptedBulkUnsignedTx/interceptedBulkUnsignedTx_test.go index ea919f0139a..9d624eb4038 100644 --- a/integrationTests/singleShard/transaction/interceptedBulkUnsignedTx/interceptedBulkUnsignedTx_test.go +++ b/integrationTests/singleShard/transaction/interceptedBulkUnsignedTx/interceptedBulkUnsignedTx_test.go @@ -91,7 +91,7 @@ func TestNode_GenerateSendInterceptBulkUnsignedTransactionsWithMessenger(t *test noOfUnsignedTx, integrationTests.TestMarshalizer, n.ShardCoordinator, - n.Messenger, + n.MainMessenger, ) assert.Nil(t, err) diff --git a/integrationTests/singleShard/transaction/interceptedResolvedTx/interceptedResolvedTx_test.go b/integrationTests/singleShard/transaction/interceptedResolvedTx/interceptedResolvedTx_test.go index 0de6313c58d..5c303e485fa 100644 --- a/integrationTests/singleShard/transaction/interceptedResolvedTx/interceptedResolvedTx_test.go +++ b/integrationTests/singleShard/transaction/interceptedResolvedTx/interceptedResolvedTx_test.go @@ -40,8 +40,8 @@ func TestNode_RequestInterceptTransactionWithMessengerAndWhitelist(t *testing.T) TxSignPrivKeyShardId: txSignPrivKeyShardId, }) defer func() { - _ = nRequester.Messenger.Close() - _ = nResolver.Messenger.Close() + nRequester.Close() + nResolver.Close() }() //connect messengers together @@ -136,8 +136,8 @@ func TestNode_RequestInterceptRewardTransactionWithMessenger(t *testing.T) { TxSignPrivKeyShardId: txSignPrivKeyShardId, }) defer func() { - _ = nRequester.Messenger.Close() - _ = nResolver.Messenger.Close() + nRequester.Close() + nResolver.Close() }() //connect messengers together diff --git a/integrationTests/singleShard/transaction/interceptedResolvedUnsignedTx/interceptedResolvedUnsignedTx_test.go b/integrationTests/singleShard/transaction/interceptedResolvedUnsignedTx/interceptedResolvedUnsignedTx_test.go index b685444fa85..9bb1fddd292 100644 --- a/integrationTests/singleShard/transaction/interceptedResolvedUnsignedTx/interceptedResolvedUnsignedTx_test.go +++ b/integrationTests/singleShard/transaction/interceptedResolvedUnsignedTx/interceptedResolvedUnsignedTx_test.go @@ -38,8 +38,8 @@ func TestNode_RequestInterceptUnsignedTransactionWithMessenger(t *testing.T) { TxSignPrivKeyShardId: txSignPrivKeyShardId, }) defer func() { - _ = nRequester.Messenger.Close() - _ = nResolver.Messenger.Close() + nRequester.Close() + nResolver.Close() }() //connect messengers together diff --git a/integrationTests/state/stateTrieSync/stateTrieSync_test.go b/integrationTests/state/stateTrieSync/stateTrieSync_test.go index 98e88edc668..b6b93e5c845 100644 --- a/integrationTests/state/stateTrieSync/stateTrieSync_test.go +++ b/integrationTests/state/stateTrieSync/stateTrieSync_test.go @@ -53,7 +53,7 @@ func createTestProcessorNodeAndTrieStorage( TrieStore: mainStorer, GasScheduleMap: createTestGasMap(), }) - _ = node.Messenger.CreateTopic(common.ConsensusTopic+node.ShardCoordinator.CommunicationIdentifier(node.ShardCoordinator.SelfId()), true) + _ = node.MainMessenger.CreateTopic(common.ConsensusTopic+node.ShardCoordinator.CommunicationIdentifier(node.ShardCoordinator.SelfId()), true) return node, mainStorer } @@ -86,8 +86,8 @@ func testNodeRequestInterceptTrieNodesWithMessenger(t *testing.T, version int) { _ = trieStorageRequester.DestroyUnit() _ = trieStorageResolver.DestroyUnit() - _ = nRequester.Messenger.Close() - _ = nResolver.Messenger.Close() + nRequester.Close() + nResolver.Close() }() time.Sleep(time.Second) @@ -207,8 +207,8 @@ func testNodeRequestInterceptTrieNodesWithMessengerNotSyncingShouldErr(t *testin _ = trieStorageRequester.DestroyUnit() _ = trieStorageResolver.DestroyUnit() - _ = nRequester.Messenger.Close() - _ = nResolver.Messenger.Close() + nRequester.Close() + nResolver.Close() }() time.Sleep(time.Second) @@ -254,7 +254,7 @@ func testNodeRequestInterceptTrieNodesWithMessengerNotSyncingShouldErr(t *testin go func() { // sudden close of the resolver node after just 2 seconds time.Sleep(time.Second * 2) - _ = nResolver.Messenger.Close() + nResolver.Close() log.Info("resolver node closed, the requester should soon fail in error") }() @@ -315,8 +315,8 @@ func testMultipleDataTriesSync(t *testing.T, numAccounts int, numDataTrieLeaves _ = trieStorageRequester.DestroyUnit() _ = trieStorageResolver.DestroyUnit() - _ = nRequester.Messenger.Close() - _ = nResolver.Messenger.Close() + nRequester.Close() + nResolver.Close() }() time.Sleep(time.Second) diff --git a/integrationTests/sync/edgeCases/edgeCases_test.go b/integrationTests/sync/edgeCases/edgeCases_test.go index 285f0876cd1..b02c2e39140 100644 --- a/integrationTests/sync/edgeCases/edgeCases_test.go +++ b/integrationTests/sync/edgeCases/edgeCases_test.go @@ -94,7 +94,7 @@ func TestSyncMetaNodeIsSyncingReceivedHigherRoundBlockFromShard(t *testing.T) { } integrationTests.BootstrapDelay() - require.True(t, len(syncMetaNode.Messenger.ConnectedPeers()) > 1, "not enough peers connected to this node."+ + require.True(t, len(syncMetaNode.MainMessenger.ConnectedPeers()) > 1, "not enough peers connected to this node."+ " Check that the peer discovery mechanism works properly.") integrationTests.StartSyncingBlocks(syncNodesSlice) diff --git a/integrationTests/testConsensusNode.go b/integrationTests/testConsensusNode.go index 59620306e34..fb4348620cf 100644 --- a/integrationTests/testConsensusNode.go +++ b/integrationTests/testConsensusNode.go @@ -313,7 +313,8 @@ func (tcn *TestConsensusNode) initNode(args ArgsTestConsensusNode) { processComponents.HeaderSigVerif = &mock.HeaderSigVerifierStub{} processComponents.HeaderIntegrVerif = &mock.HeaderIntegrityVerifierStub{} processComponents.ReqHandler = &testscommon.RequestHandlerStub{} - processComponents.PeerMapper = mock.NewNetworkShardingCollectorMock() + processComponents.MainPeerMapper = mock.NewNetworkShardingCollectorMock() + processComponents.FullArchivePeerMapper = mock.NewNetworkShardingCollectorMock() processComponents.RoundHandlerField = roundHandler processComponents.ScheduledTxsExecutionHandlerInternal = &testscommon.ScheduledTxsExecutionStub{} processComponents.ProcessedMiniBlocksTrackerInternal = &testscommon.ProcessedMiniBlocksTrackerStub{} diff --git a/integrationTests/testHeartbeatNode.go b/integrationTests/testHeartbeatNode.go index 38a04ec67db..530a1313b93 100644 --- a/integrationTests/testHeartbeatNode.go +++ b/integrationTests/testHeartbeatNode.go @@ -86,7 +86,8 @@ var TestThrottler = &processMock.InterceptorThrottlerStub{ type TestHeartbeatNode struct { ShardCoordinator sharding.Coordinator NodesCoordinator nodesCoordinator.NodesCoordinator - PeerShardMapper process.NetworkShardingCollector + MainPeerShardMapper process.NetworkShardingCollector + FullArchivePeerShardMapper process.NetworkShardingCollector MainMessenger p2p.Messenger FullArchiveMessenger p2p.Messenger NodeKeys *TestNodeKeys @@ -186,13 +187,14 @@ func NewTestHeartbeatNode( MainMessenger: messenger, FullArchiveMessenger: &p2pmocks.MessengerStub{}, // TODO[Sorin]: inject a proper messenger when all pieces are done to test this network as well PeerSigHandler: peerSigHandler, - PeerShardMapper: peerShardMapper, + MainPeerShardMapper: peerShardMapper, + FullArchivePeerShardMapper: &mock.PeerShardMapperStub{}, heartbeatExpiryTimespanInSec: heartbeatExpiryTimespanInSec, } localId := thn.MainMessenger.ID() pkBytes, _ := pk.ToByteArray() - thn.PeerShardMapper.UpdatePeerIDInfo(localId, pkBytes, shardCoordinator.SelfId()) + thn.MainPeerShardMapper.UpdatePeerIDInfo(localId, pkBytes, shardCoordinator.SelfId()) thn.NodeKeys = &TestNodeKeys{ MainKey: &TestKeyPair{ @@ -260,13 +262,14 @@ func NewTestHeartbeatNodeWithCoordinator( MainMessenger: messenger, FullArchiveMessenger: &p2pmocks.MessengerStub{}, PeerSigHandler: peerSigHandler, - PeerShardMapper: peerShardMapper, + MainPeerShardMapper: peerShardMapper, + FullArchivePeerShardMapper: &mock.PeerShardMapperStub{}, Interceptor: NewCountInterceptor(), heartbeatExpiryTimespanInSec: 30, } localId := thn.MainMessenger.ID() - thn.PeerShardMapper.UpdatePeerIDInfo(localId, []byte(""), shardCoordinator.SelfId()) + thn.MainPeerShardMapper.UpdatePeerIDInfo(localId, []byte(""), shardCoordinator.SelfId()) thn.NodeKeys = keys @@ -454,7 +457,6 @@ func (thn *TestHeartbeatNode) initResolversAndRequesters() { dataPacker, _ := partitioning.NewSimpleDataPacker(TestMarshaller) _ = thn.MainMessenger.CreateTopic(common.ConsensusTopic+thn.ShardCoordinator.CommunicationIdentifier(thn.ShardCoordinator.SelfId()), true) - _ = thn.FullArchiveMessenger.CreateTopic(common.ConsensusTopic+thn.ShardCoordinator.CommunicationIdentifier(thn.ShardCoordinator.SelfId()), true) payloadValidator, _ := validator.NewPeerAuthenticationPayloadValidator(thn.heartbeatExpiryTimespanInSec) resolverContainerFactoryArgs := resolverscontainer.FactoryArgs{ @@ -574,7 +576,7 @@ func (thn *TestHeartbeatNode) initInterceptors() { func (thn *TestHeartbeatNode) createPeerAuthInterceptor(argsFactory interceptorFactory.ArgInterceptedDataFactory) { args := interceptorsProcessor.ArgPeerAuthenticationInterceptorProcessor{ PeerAuthenticationCacher: thn.DataPool.PeerAuthentications(), - PeerShardMapper: thn.PeerShardMapper, + PeerShardMapper: thn.MainPeerShardMapper, Marshaller: TestMarshaller, HardforkTrigger: &testscommon.HardforkTriggerStub{}, } @@ -587,7 +589,7 @@ func (thn *TestHeartbeatNode) createHeartbeatInterceptor(argsFactory interceptor args := interceptorsProcessor.ArgHeartbeatInterceptorProcessor{ HeartbeatCacher: thn.DataPool.Heartbeats(), ShardCoordinator: thn.ShardCoordinator, - PeerShardMapper: thn.PeerShardMapper, + PeerShardMapper: thn.MainPeerShardMapper, } hbProcessor, _ := interceptorsProcessor.NewHeartbeatInterceptorProcessor(args) hbFactory, _ := interceptorFactory.NewInterceptedHeartbeatDataFactory(argsFactory) @@ -597,7 +599,7 @@ func (thn *TestHeartbeatNode) createHeartbeatInterceptor(argsFactory interceptor func (thn *TestHeartbeatNode) createPeerShardInterceptor(argsFactory interceptorFactory.ArgInterceptedDataFactory) { args := interceptorsProcessor.ArgPeerShardInterceptorProcessor{ - PeerShardMapper: thn.PeerShardMapper, + PeerShardMapper: thn.MainPeerShardMapper, } dciProcessor, _ := interceptorsProcessor.NewPeerShardInterceptorProcessor(args) dciFactory, _ := interceptorFactory.NewInterceptedPeerShardFactory(argsFactory) @@ -687,7 +689,7 @@ func (thn *TestHeartbeatNode) initDirectConnectionProcessor(tb testing.TB) { argsDirectConnectionProcessor := processor.ArgsDirectConnectionProcessor{ TimeToReadDirectConnections: 5 * time.Second, Messenger: thn.MainMessenger, - PeerShardMapper: thn.PeerShardMapper, + PeerShardMapper: thn.MainPeerShardMapper, ShardCoordinator: thn.ShardCoordinator, BaseIntraShardTopic: ShardTopic, BaseCrossShardTopic: ShardTopic, @@ -700,7 +702,7 @@ func (thn *TestHeartbeatNode) initDirectConnectionProcessor(tb testing.TB) { argsDirectConnectionProcessor = processor.ArgsDirectConnectionProcessor{ TimeToReadDirectConnections: 5 * time.Second, Messenger: thn.FullArchiveMessenger, - PeerShardMapper: thn.PeerShardMapper, // TODO[Sorin]: replace this with the full archive psm + PeerShardMapper: thn.FullArchivePeerShardMapper, ShardCoordinator: thn.ShardCoordinator, BaseIntraShardTopic: ShardTopic, BaseCrossShardTopic: ShardTopic, @@ -713,7 +715,7 @@ func (thn *TestHeartbeatNode) initDirectConnectionProcessor(tb testing.TB) { func (thn *TestHeartbeatNode) initCrossShardPeerTopicNotifier(tb testing.TB) { argsCrossShardPeerTopicNotifier := monitor.ArgsCrossShardPeerTopicNotifier{ ShardCoordinator: thn.ShardCoordinator, - PeerShardMapper: thn.PeerShardMapper, + PeerShardMapper: thn.MainPeerShardMapper, } crossShardPeerTopicNotifier, err := monitor.NewCrossShardPeerTopicNotifier(argsCrossShardPeerTopicNotifier) require.Nil(tb, err) @@ -723,7 +725,7 @@ func (thn *TestHeartbeatNode) initCrossShardPeerTopicNotifier(tb testing.TB) { argsCrossShardPeerTopicNotifier = monitor.ArgsCrossShardPeerTopicNotifier{ ShardCoordinator: thn.ShardCoordinator, - PeerShardMapper: thn.PeerShardMapper, // TODO[Sorin]: replace this with the full archive psm + PeerShardMapper: thn.FullArchivePeerShardMapper, } crossShardPeerTopicNotifier, err = monitor.NewCrossShardPeerTopicNotifier(argsCrossShardPeerTopicNotifier) require.Nil(tb, err) diff --git a/integrationTests/testInitializer.go b/integrationTests/testInitializer.go index 7f6461dba49..6b91a5fe769 100644 --- a/integrationTests/testInitializer.go +++ b/integrationTests/testInitializer.go @@ -879,7 +879,7 @@ func MakeDisplayTable(nodes []*TestProcessorNode) string { fmt.Sprintf("%d", atomic.LoadInt32(&n.CounterMbRecv)), fmt.Sprintf("%d", atomic.LoadInt32(&n.CounterHdrRecv)), fmt.Sprintf("%d", atomic.LoadInt32(&n.CounterMetaRcv)), - fmt.Sprintf("%d", len(n.Messenger.ConnectedPeers())), + fmt.Sprintf("%d", len(n.MainMessenger.ConnectedPeers())), }, ) } diff --git a/integrationTests/testNetwork.go b/integrationTests/testNetwork.go index 63a253b3bc0..81ea18c423c 100644 --- a/integrationTests/testNetwork.go +++ b/integrationTests/testNetwork.go @@ -441,7 +441,7 @@ func (net *TestNetwork) initDefaults() { func (net *TestNetwork) closeNodes() { for _, node := range net.Nodes { - err := node.Messenger.Close() + err := node.MainMessenger.Close() net.handleOrBypassError(err) _ = node.VMContainer.Close() } diff --git a/integrationTests/testProcessorNode.go b/integrationTests/testProcessorNode.go index 82f0a4d20cf..601b2481961 100644 --- a/integrationTests/testProcessorNode.go +++ b/integrationTests/testProcessorNode.go @@ -290,11 +290,14 @@ type ArgTestProcessorNode struct { // TestProcessorNode represents a container type of class used in integration tests // with all its fields exported type TestProcessorNode struct { - ShardCoordinator sharding.Coordinator - NodesCoordinator nodesCoordinator.NodesCoordinator - PeerShardMapper process.PeerShardMapper - NodesSetup sharding.GenesisNodesSetupHandler - Messenger p2p.Messenger + ShardCoordinator sharding.Coordinator + NodesCoordinator nodesCoordinator.NodesCoordinator + MainPeerShardMapper process.PeerShardMapper + FullArchivePeerShardMapper process.PeerShardMapper + NodesSetup sharding.GenesisNodesSetupHandler + MainMessenger p2p.Messenger + FullArchiveMessenger p2p.Messenger + NodeOperationMode p2p.NodeOperation OwnAccount *TestWalletAccount NodeKeys *TestNodeKeys @@ -312,15 +315,16 @@ type TestProcessorNode struct { EconomicsData *economics.TestEconomicsData RatingsData *rating.RatingsData - BlockBlackListHandler process.TimeCacher - HeaderValidator process.HeaderConstructionValidator - BlockTracker process.BlockTracker - InterceptorsContainer process.InterceptorsContainer - ResolversContainer dataRetriever.ResolversContainer - RequestersContainer dataRetriever.RequestersContainer - RequestersFinder dataRetriever.RequestersFinder - RequestHandler process.RequestHandler - WasmVMChangeLocker common.Locker + BlockBlackListHandler process.TimeCacher + HeaderValidator process.HeaderConstructionValidator + BlockTracker process.BlockTracker + MainInterceptorsContainer process.InterceptorsContainer + FullArchiveInterceptorsContainer process.InterceptorsContainer + ResolversContainer dataRetriever.ResolversContainer + RequestersContainer dataRetriever.RequestersContainer + RequestersFinder dataRetriever.RequestersFinder + RequestHandler process.RequestHandler + WasmVMChangeLocker common.Locker InterimProcContainer process.IntermediateProcessorContainer TxProcessor process.TransactionProcessor @@ -468,29 +472,32 @@ func newBaseTestProcessorNode(args ArgTestProcessorNode) *TestProcessorNode { logsProcessor, _ := transactionLog.NewTxLogProcessor(transactionLog.ArgTxLogProcessor{Marshalizer: TestMarshalizer}) tpn := &TestProcessorNode{ - ShardCoordinator: shardCoordinator, - Messenger: messenger, - NodesCoordinator: nodesCoordinatorInstance, - ChainID: ChainID, - MinTransactionVersion: MinTransactionVersion, - NodesSetup: nodesSetup, - HistoryRepository: &dblookupextMock.HistoryRepositoryStub{}, - EpochNotifier: genericEpochNotifier, - EnableEpochsHandler: enableEpochsHandler, - WasmVMChangeLocker: &sync.RWMutex{}, - TransactionLogProcessor: logsProcessor, - Bootstrapper: mock.NewTestBootstrapperMock(), - PeersRatingHandler: peersRatingHandler, - PeerShardMapper: mock.NewNetworkShardingCollectorMock(), - EnableEpochs: *epochsConfig, - UseValidVmBlsSigVerifier: args.WithBLSSigVerifier, - StorageBootstrapper: &mock.StorageBootstrapperMock{}, - BootstrapStorer: &mock.BoostrapStorerMock{}, - RatingsData: args.RatingsData, - EpochStartNotifier: args.EpochStartSubscriber, - GuardedAccountHandler: &guardianMocks.GuardedAccountHandlerStub{}, - AppStatusHandler: appStatusHandler, - PeersRatingMonitor: peersRatingMonitor, + ShardCoordinator: shardCoordinator, + MainMessenger: messenger, + FullArchiveMessenger: &p2pmocks.MessengerStub{}, // TODO[Sorin]: inject a proper messenger when all pieces are done to test this network as well, + NodeOperationMode: p2p.NormalOperation, + NodesCoordinator: nodesCoordinatorInstance, + ChainID: ChainID, + MinTransactionVersion: MinTransactionVersion, + NodesSetup: nodesSetup, + HistoryRepository: &dblookupextMock.HistoryRepositoryStub{}, + EpochNotifier: genericEpochNotifier, + EnableEpochsHandler: enableEpochsHandler, + WasmVMChangeLocker: &sync.RWMutex{}, + TransactionLogProcessor: logsProcessor, + Bootstrapper: mock.NewTestBootstrapperMock(), + PeersRatingHandler: peersRatingHandler, + MainPeerShardMapper: mock.NewNetworkShardingCollectorMock(), + FullArchivePeerShardMapper: mock.NewNetworkShardingCollectorMock(), + EnableEpochs: *epochsConfig, + UseValidVmBlsSigVerifier: args.WithBLSSigVerifier, + StorageBootstrapper: &mock.StorageBootstrapperMock{}, + BootstrapStorer: &mock.BoostrapStorerMock{}, + RatingsData: args.RatingsData, + EpochStartNotifier: args.EpochStartSubscriber, + GuardedAccountHandler: &guardianMocks.GuardedAccountHandlerStub{}, + AppStatusHandler: appStatusHandler, + PeersRatingMonitor: peersRatingMonitor, } tpn.NodeKeys = args.NodeKeys @@ -547,7 +554,7 @@ func (tpn *TestProcessorNode) ConnectTo(connectable Connectable) error { return fmt.Errorf("trying to connect to a nil Connectable parameter") } - return tpn.Messenger.ConnectToPeer(connectable.GetConnectableAddress()) + return tpn.MainMessenger.ConnectToPeer(connectable.GetConnectableAddress()) } // GetConnectableAddress returns a non circuit, non windows default connectable p2p address @@ -556,12 +563,13 @@ func (tpn *TestProcessorNode) GetConnectableAddress() string { return "nil" } - return GetConnectableAddress(tpn.Messenger) + return GetConnectableAddress(tpn.MainMessenger) } // Close - func (tpn *TestProcessorNode) Close() { - _ = tpn.Messenger.Close() + _ = tpn.MainMessenger.Close() + _ = tpn.FullArchiveMessenger.Close() _ = tpn.VMContainer.Close() } @@ -765,15 +773,15 @@ func (tpn *TestProcessorNode) initTestNodeWithArgs(args ArgTestProcessorNode) { tpn.BroadcastMessenger, _ = sposFactory.GetBroadcastMessenger( TestMarshalizer, TestHasher, - tpn.Messenger, + tpn.MainMessenger, tpn.ShardCoordinator, tpn.OwnAccount.PeerSigHandler, tpn.DataPool.Headers(), - tpn.InterceptorsContainer, + tpn.MainInterceptorsContainer, &testscommon.AlarmSchedulerStub{}, testscommon.NewKeysHandlerSingleSignerMock( tpn.NodeKeys.MainKey.Sk, - tpn.Messenger.ID(), + tpn.MainMessenger.ID(), ), ) @@ -954,15 +962,15 @@ func (tpn *TestProcessorNode) InitializeProcessors(gasMap map[string]map[string] tpn.BroadcastMessenger, _ = sposFactory.GetBroadcastMessenger( TestMarshalizer, TestHasher, - tpn.Messenger, + tpn.MainMessenger, tpn.ShardCoordinator, tpn.OwnAccount.PeerSigHandler, tpn.DataPool.Headers(), - tpn.InterceptorsContainer, + tpn.MainInterceptorsContainer, &testscommon.AlarmSchedulerStub{}, testscommon.NewKeysHandlerSingleSignerMock( tpn.NodeKeys.MainKey.Sk, - tpn.Messenger.ID(), + tpn.MainMessenger.ID(), ), ) tpn.setGenesisBlock() @@ -1207,7 +1215,8 @@ func (tpn *TestProcessorNode) initInterceptors(heartbeatPk string) { Accounts: tpn.AccntState, ShardCoordinator: tpn.ShardCoordinator, NodesCoordinator: tpn.NodesCoordinator, - Messenger: tpn.Messenger, + MainMessenger: tpn.MainMessenger, + FullArchiveMessenger: tpn.FullArchiveMessenger, Store: tpn.Storage, DataPool: tpn.DataPool, MaxTxNonceDeltaAllowed: maxTxNonceDeltaAllowed, @@ -1227,12 +1236,14 @@ func (tpn *TestProcessorNode) initInterceptors(heartbeatPk string) { PeerSignatureHandler: &processMock.PeerSignatureHandlerStub{}, SignaturesHandler: &processMock.SignaturesHandlerStub{}, HeartbeatExpiryTimespanInSec: 30, - PeerShardMapper: tpn.PeerShardMapper, + MainPeerShardMapper: tpn.MainPeerShardMapper, + FullArchivePeerShardMapper: tpn.FullArchivePeerShardMapper, HardforkTrigger: tpn.HardforkTrigger, + NodeOperationMode: tpn.NodeOperationMode, } interceptorContainerFactory, _ := interceptorscontainer.NewMetaInterceptorsContainerFactory(metaInterceptorContainerFactoryArgs) - tpn.InterceptorsContainer, err = interceptorContainerFactory.Create() + tpn.MainInterceptorsContainer, tpn.FullArchiveInterceptorsContainer, err = interceptorContainerFactory.Create() if err != nil { log.Debug("interceptor container factory Create", "error", err.Error()) } @@ -1272,7 +1283,8 @@ func (tpn *TestProcessorNode) initInterceptors(heartbeatPk string) { Accounts: tpn.AccntState, ShardCoordinator: tpn.ShardCoordinator, NodesCoordinator: tpn.NodesCoordinator, - Messenger: tpn.Messenger, + MainMessenger: tpn.MainMessenger, + FullArchiveMessenger: tpn.FullArchiveMessenger, Store: tpn.Storage, DataPool: tpn.DataPool, MaxTxNonceDeltaAllowed: maxTxNonceDeltaAllowed, @@ -1292,12 +1304,14 @@ func (tpn *TestProcessorNode) initInterceptors(heartbeatPk string) { PeerSignatureHandler: &processMock.PeerSignatureHandlerStub{}, SignaturesHandler: &processMock.SignaturesHandlerStub{}, HeartbeatExpiryTimespanInSec: 30, - PeerShardMapper: tpn.PeerShardMapper, + MainPeerShardMapper: tpn.MainPeerShardMapper, + FullArchivePeerShardMapper: tpn.FullArchivePeerShardMapper, HardforkTrigger: tpn.HardforkTrigger, + NodeOperationMode: tpn.NodeOperationMode, } interceptorContainerFactory, _ := interceptorscontainer.NewShardInterceptorsContainerFactory(shardIntereptorContainerFactoryArgs) - tpn.InterceptorsContainer, err = interceptorContainerFactory.Create() + tpn.MainInterceptorsContainer, tpn.FullArchiveInterceptorsContainer, err = interceptorContainerFactory.Create() if err != nil { fmt.Println(err.Error()) } @@ -1335,13 +1349,13 @@ func (tpn *TestProcessorNode) createHardforkTrigger(heartbeatPk string) []byte { func (tpn *TestProcessorNode) initResolvers() { dataPacker, _ := partitioning.NewSimpleDataPacker(TestMarshalizer) - _ = tpn.Messenger.CreateTopic(common.ConsensusTopic+tpn.ShardCoordinator.CommunicationIdentifier(tpn.ShardCoordinator.SelfId()), true) + _ = tpn.MainMessenger.CreateTopic(common.ConsensusTopic+tpn.ShardCoordinator.CommunicationIdentifier(tpn.ShardCoordinator.SelfId()), true) payloadValidator, _ := validator.NewPeerAuthenticationPayloadValidator(60) preferredPeersHolder, _ := p2pFactory.NewPeersHolder([]string{}) resolverContainerFactory := resolverscontainer.FactoryArgs{ ShardCoordinator: tpn.ShardCoordinator, - Messenger: tpn.Messenger, + Messenger: tpn.MainMessenger, Store: tpn.Storage, Marshalizer: TestMarshalizer, DataPools: tpn.DataPool, @@ -1378,7 +1392,7 @@ func (tpn *TestProcessorNode) initRequesters() { NumFullHistoryPeers: 3, }, ShardCoordinator: tpn.ShardCoordinator, - Messenger: tpn.Messenger, + Messenger: tpn.MainMessenger, Marshaller: TestMarshaller, Uint64ByteSliceConverter: TestUint64Converter, OutputAntifloodHandler: &mock.NilAntifloodHandler{}, @@ -2352,11 +2366,12 @@ func (tpn *TestProcessorNode) initNode() { processComponents.BlackListHdl = tpn.BlockBlackListHandler processComponents.NodesCoord = tpn.NodesCoordinator processComponents.ShardCoord = tpn.ShardCoordinator - processComponents.IntContainer = tpn.InterceptorsContainer + processComponents.IntContainer = tpn.MainInterceptorsContainer + processComponents.FullArchiveIntContainer = tpn.FullArchiveInterceptorsContainer processComponents.HistoryRepositoryInternal = tpn.HistoryRepository processComponents.WhiteListHandlerInternal = tpn.WhiteListHandler processComponents.WhiteListerVerifiedTxsInternal = tpn.WhiteListerVerifiedTxs - processComponents.TxsSenderHandlerField = createTxsSender(tpn.ShardCoordinator, tpn.Messenger) + processComponents.TxsSenderHandlerField = createTxsSender(tpn.ShardCoordinator, tpn.MainMessenger) processComponents.HardforkTriggerField = tpn.HardforkTrigger cryptoComponents := GetDefaultCryptoComponents() @@ -2388,7 +2403,8 @@ func (tpn *TestProcessorNode) initNode() { stateComponents.AccountsRepo, _ = state.NewAccountsRepository(argsAccountsRepo) networkComponents := GetDefaultNetworkComponents() - networkComponents.Messenger = tpn.Messenger + networkComponents.Messenger = tpn.MainMessenger + networkComponents.FullArchiveNetworkMessengerField = tpn.FullArchiveMessenger networkComponents.PeersRatingHandlerField = tpn.PeersRatingHandler networkComponents.PeersRatingMonitorField = tpn.PeersRatingMonitor @@ -2409,7 +2425,7 @@ func (tpn *TestProcessorNode) initNode() { err = nodeDebugFactory.CreateInterceptedDebugHandler( tpn.Node, - tpn.InterceptorsContainer, + tpn.MainInterceptorsContainer, tpn.ResolversContainer, tpn.RequestersFinder, config.InterceptorResolverDebugConfig{ @@ -2934,7 +2950,8 @@ func (tpn *TestProcessorNode) createHeartbeatWithHardforkTrigger() { cryptoComponents.PeerSignHandler = psh networkComponents := GetDefaultNetworkComponents() - networkComponents.Messenger = tpn.Messenger + networkComponents.Messenger = tpn.MainMessenger + networkComponents.FullArchiveNetworkMessengerField = tpn.FullArchiveMessenger networkComponents.InputAntiFlood = &mock.NilAntifloodHandler{} processComponents := GetDefaultProcessComponents() @@ -2945,7 +2962,8 @@ func (tpn *TestProcessorNode) createHeartbeatWithHardforkTrigger() { processComponents.BlackListHdl = tpn.BlockBlackListHandler processComponents.NodesCoord = tpn.NodesCoordinator processComponents.ShardCoord = tpn.ShardCoordinator - processComponents.IntContainer = tpn.InterceptorsContainer + processComponents.IntContainer = tpn.MainInterceptorsContainer + processComponents.FullArchiveIntContainer = tpn.FullArchiveInterceptorsContainer processComponents.ValidatorStatistics = &mock.ValidatorStatisticsProcessorStub{ GetValidatorInfoForRootHashCalled: func(_ []byte) (map[uint32][]*state.ValidatorInfo, error) { return map[uint32][]*state.ValidatorInfo{ @@ -2959,7 +2977,7 @@ func (tpn *TestProcessorNode) createHeartbeatWithHardforkTrigger() { processComponents.WhiteListerVerifiedTxsInternal = tpn.WhiteListerVerifiedTxs processComponents.WhiteListHandlerInternal = tpn.WhiteListHandler processComponents.HistoryRepositoryInternal = tpn.HistoryRepository - processComponents.TxsSenderHandlerField = createTxsSender(tpn.ShardCoordinator, tpn.Messenger) + processComponents.TxsSenderHandlerField = createTxsSender(tpn.ShardCoordinator, tpn.MainMessenger) processComponents.HardforkTriggerField = tpn.HardforkTrigger @@ -3170,7 +3188,8 @@ func GetDefaultProcessComponents() *mock.ProcessComponentsStub { ReqHandler: &testscommon.RequestHandlerStub{}, TxLogsProcess: &mock.TxLogProcessorMock{}, HeaderConstructValidator: &mock.HeaderValidatorStub{}, - PeerMapper: &p2pmocks.NetworkShardingCollectorStub{}, + MainPeerMapper: &p2pmocks.NetworkShardingCollectorStub{}, + FullArchivePeerMapper: &p2pmocks.NetworkShardingCollectorStub{}, FallbackHdrValidator: &testscommon.FallBackHeaderValidatorStub{}, NodeRedundancyHandlerInternal: &mock.RedundancyHandlerStub{ IsRedundancyNodeCalled: func() bool { diff --git a/integrationTests/testSyncNode.go b/integrationTests/testSyncNode.go index 0bec036c39a..c9bae24a1da 100644 --- a/integrationTests/testSyncNode.go +++ b/integrationTests/testSyncNode.go @@ -159,7 +159,7 @@ func (tpn *TestProcessorNode) createShardBootstrapper() (TestBootstrapper, error ShardCoordinator: tpn.ShardCoordinator, Accounts: tpn.AccntState, BlackListHandler: tpn.BlockBlackListHandler, - NetworkWatcher: tpn.Messenger, + NetworkWatcher: tpn.MainMessenger, BootStorer: tpn.BootstrapStorer, StorageBootstrapper: tpn.StorageBootstrapper, EpochHandler: tpn.EpochStartTrigger, @@ -205,7 +205,7 @@ func (tpn *TestProcessorNode) createMetaChainBootstrapper() (TestBootstrapper, e ShardCoordinator: tpn.ShardCoordinator, Accounts: tpn.AccntState, BlackListHandler: tpn.BlockBlackListHandler, - NetworkWatcher: tpn.Messenger, + NetworkWatcher: tpn.MainMessenger, BootStorer: tpn.BootstrapStorer, StorageBootstrapper: tpn.StorageBootstrapper, EpochHandler: tpn.EpochStartTrigger, diff --git a/integrationTests/vm/esdt/nft/esdtNFT/esdtNft_test.go b/integrationTests/vm/esdt/nft/esdtNFT/esdtNft_test.go index 717615301b6..0117b84fd3d 100644 --- a/integrationTests/vm/esdt/nft/esdtNFT/esdtNft_test.go +++ b/integrationTests/vm/esdt/nft/esdtNFT/esdtNft_test.go @@ -779,7 +779,7 @@ func testESDTSemiFungibleTokenTransferRole(t *testing.T, numOfShards int) { defer func() { for _, n := range nodes { - _ = n.Messenger.Close() + _ = n.MainMessenger.Close() } }() @@ -929,7 +929,7 @@ func TestESDTSFTWithEnhancedTransferRole(t *testing.T) { defer func() { for _, n := range nodes { - _ = n.Messenger.Close() + _ = n.MainMessenger.Close() } }() diff --git a/node/nodeHelper.go b/node/nodeHelper.go index f04ba91bbcb..b1b5a27c816 100644 --- a/node/nodeHelper.go +++ b/node/nodeHelper.go @@ -9,6 +9,7 @@ import ( "github.com/multiversx/mx-chain-go/config" "github.com/multiversx/mx-chain-go/factory" "github.com/multiversx/mx-chain-go/node/nodeDebugFactory" + "github.com/multiversx/mx-chain-go/p2p" procFactory "github.com/multiversx/mx-chain-go/process/factory" "github.com/multiversx/mx-chain-go/process/throttle/antiflood/blackList" "github.com/multiversx/mx-chain-go/sharding" @@ -23,12 +24,19 @@ func prepareOpenTopics( selfID := shardCoordinator.SelfId() selfShardHeartbeatV2Topic := common.HeartbeatV2Topic + core.CommunicationIdentifierBetweenShards(selfID, selfID) if selfID == core.MetachainShardId { - antiflood.SetTopicsForAll(common.PeerAuthenticationTopic, selfShardHeartbeatV2Topic, common.ConnectionTopic) + antiflood.SetTopicsForAll( + common.PeerAuthenticationTopic, + selfShardHeartbeatV2Topic, + common.ConnectionTopic) return } selfShardTxTopic := procFactory.TransactionTopic + core.CommunicationIdentifierBetweenShards(selfID, selfID) - antiflood.SetTopicsForAll(common.PeerAuthenticationTopic, selfShardHeartbeatV2Topic, common.ConnectionTopic, selfShardTxTopic) + antiflood.SetTopicsForAll( + common.PeerAuthenticationTopic, + selfShardHeartbeatV2Topic, + common.ConnectionTopic, + selfShardTxTopic) } // CreateNode is the node factory @@ -50,16 +58,7 @@ func CreateNode( ) (*Node, error) { prepareOpenTopics(networkComponents.InputAntiFloodHandler(), processComponents.ShardCoordinator()) - peerDenialEvaluator, err := blackList.NewPeerDenialEvaluator( - networkComponents.PeerBlackListHandler(), - networkComponents.PubKeyCacher(), - processComponents.PeerShardMapper(), - ) - if err != nil { - return nil, err - } - - err = networkComponents.NetworkMessenger().SetPeerDenialEvaluator(peerDenialEvaluator) + peerDenialEvaluator, err := createAndAttachPeerDenialEvaluators(networkComponents, processComponents) if err != nil { return nil, err } @@ -123,3 +122,38 @@ func CreateNode( return nd, nil } + +func createAndAttachPeerDenialEvaluators( + networkComponents factory.NetworkComponentsHandler, + processComponents factory.ProcessComponentsHandler, +) (p2p.PeerDenialEvaluator, error) { + mainPeerDenialEvaluator, err := blackList.NewPeerDenialEvaluator( + networkComponents.PeerBlackListHandler(), + networkComponents.PubKeyCacher(), + processComponents.PeerShardMapper(), + ) + if err != nil { + return nil, err + } + + err = networkComponents.NetworkMessenger().SetPeerDenialEvaluator(mainPeerDenialEvaluator) + if err != nil { + return nil, err + } + + fullArchivePeerDenialEvaluator, err := blackList.NewPeerDenialEvaluator( + networkComponents.PeerBlackListHandler(), + networkComponents.PubKeyCacher(), + processComponents.FullArchivePeerShardMapper(), + ) + if err != nil { + return nil, err + } + + err = networkComponents.FullArchiveNetworkMessenger().SetPeerDenialEvaluator(fullArchivePeerDenialEvaluator) + if err != nil { + return nil, err + } + + return mainPeerDenialEvaluator, nil +} diff --git a/node/node_test.go b/node/node_test.go index 1a15b79cb39..5c11a0f167c 100644 --- a/node/node_test.go +++ b/node/node_test.go @@ -3752,7 +3752,7 @@ func TestNode_ShouldWork(t *testing.T) { pid2 := "pid2" processComponents := getDefaultProcessComponents() - processComponents.PeerMapper = &p2pmocks.NetworkShardingCollectorStub{ + processComponents.MainPeerMapper = &p2pmocks.NetworkShardingCollectorStub{ GetPeerInfoCalled: func(pid core.PeerID) core.P2PPeerInfo { return core.P2PPeerInfo{ PeerType: 0, @@ -5130,7 +5130,8 @@ func getDefaultProcessComponents() *factoryMock.ProcessComponentsMock { ReqHandler: &testscommon.RequestHandlerStub{}, TxLogsProcess: &mock.TxLogProcessorMock{}, HeaderConstructValidator: &mock.HeaderValidatorStub{}, - PeerMapper: &p2pmocks.NetworkShardingCollectorStub{}, + MainPeerMapper: &p2pmocks.NetworkShardingCollectorStub{}, + FullArchivePeerMapper: &p2pmocks.NetworkShardingCollectorStub{}, WhiteListHandlerInternal: &testscommon.WhiteListHandlerStub{}, WhiteListerVerifiedTxsInternal: &testscommon.WhiteListHandlerStub{}, TxsSenderHandlerField: &txsSenderMock.TxsSenderHandlerMock{}, diff --git a/process/factory/interceptorscontainer/args.go b/process/factory/interceptorscontainer/args.go index 459812df1f9..ca8b66c61fd 100644 --- a/process/factory/interceptorscontainer/args.go +++ b/process/factory/interceptorscontainer/args.go @@ -4,6 +4,7 @@ import ( crypto "github.com/multiversx/mx-chain-crypto-go" "github.com/multiversx/mx-chain-go/dataRetriever" "github.com/multiversx/mx-chain-go/heartbeat" + "github.com/multiversx/mx-chain-go/p2p" "github.com/multiversx/mx-chain-go/process" "github.com/multiversx/mx-chain-go/sharding" "github.com/multiversx/mx-chain-go/sharding/nodesCoordinator" @@ -17,7 +18,8 @@ type CommonInterceptorsContainerFactoryArgs struct { Accounts state.AccountsAdapter ShardCoordinator sharding.Coordinator NodesCoordinator nodesCoordinator.NodesCoordinator - Messenger process.TopicHandler + MainMessenger process.TopicHandler + FullArchiveMessenger process.TopicHandler Store dataRetriever.StorageService DataPool dataRetriever.PoolsHolder MaxTxNonceDeltaAllowed int @@ -37,6 +39,8 @@ type CommonInterceptorsContainerFactoryArgs struct { PeerSignatureHandler crypto.PeerSignatureHandler SignaturesHandler process.SignaturesHandler HeartbeatExpiryTimespanInSec int64 - PeerShardMapper process.PeerShardMapper + MainPeerShardMapper process.PeerShardMapper + FullArchivePeerShardMapper process.PeerShardMapper HardforkTrigger heartbeat.HardforkTrigger + NodeOperationMode p2p.NodeOperation } diff --git a/process/factory/interceptorscontainer/baseInterceptorsContainerFactory.go b/process/factory/interceptorscontainer/baseInterceptorsContainerFactory.go index 3a8686e0713..cc7061d7158 100644 --- a/process/factory/interceptorscontainer/baseInterceptorsContainerFactory.go +++ b/process/factory/interceptorscontainer/baseInterceptorsContainerFactory.go @@ -1,6 +1,7 @@ package interceptorscontainer import ( + "fmt" "time" "github.com/multiversx/mx-chain-core-go/core" @@ -9,6 +10,7 @@ import ( "github.com/multiversx/mx-chain-go/common" "github.com/multiversx/mx-chain-go/dataRetriever" "github.com/multiversx/mx-chain-go/heartbeat" + "github.com/multiversx/mx-chain-go/p2p" "github.com/multiversx/mx-chain-go/process" "github.com/multiversx/mx-chain-go/process/dataValidators" "github.com/multiversx/mx-chain-go/process/factory" @@ -18,32 +20,41 @@ import ( "github.com/multiversx/mx-chain-go/sharding" "github.com/multiversx/mx-chain-go/sharding/nodesCoordinator" "github.com/multiversx/mx-chain-go/state" + "github.com/multiversx/mx-chain-go/storage" ) -const numGoRoutines = 100 -const chunksProcessorRequestInterval = time.Millisecond * 400 -const minTimespanDurationInSec = int64(1) +const ( + numGoRoutines = 100 + chunksProcessorRequestInterval = time.Millisecond * 400 + minTimespanDurationInSec = int64(1) + errorOnMainNetworkString = "on main network" + errorOnFullArchiveNetworkString = "on full archive network" +) type baseInterceptorsContainerFactory struct { - container process.InterceptorsContainer - shardCoordinator sharding.Coordinator - accounts state.AccountsAdapter - store dataRetriever.StorageService - dataPool dataRetriever.PoolsHolder - messenger process.TopicHandler - nodesCoordinator nodesCoordinator.NodesCoordinator - blockBlackList process.TimeCacher - argInterceptorFactory *interceptorFactory.ArgInterceptedDataFactory - globalThrottler process.InterceptorThrottler - maxTxNonceDeltaAllowed int - antifloodHandler process.P2PAntifloodHandler - whiteListHandler process.WhiteListHandler - whiteListerVerifiedTxs process.WhiteListHandler - preferredPeersHolder process.PreferredPeersHolderHandler - hasher hashing.Hasher - requestHandler process.RequestHandler - peerShardMapper process.PeerShardMapper - hardforkTrigger heartbeat.HardforkTrigger + mainContainer process.InterceptorsContainer + fullArchiveContainer process.InterceptorsContainer + shardCoordinator sharding.Coordinator + accounts state.AccountsAdapter + store dataRetriever.StorageService + dataPool dataRetriever.PoolsHolder + mainMessenger process.TopicHandler + fullArchiveMessenger process.TopicHandler + nodesCoordinator nodesCoordinator.NodesCoordinator + blockBlackList process.TimeCacher + argInterceptorFactory *interceptorFactory.ArgInterceptedDataFactory + globalThrottler process.InterceptorThrottler + maxTxNonceDeltaAllowed int + antifloodHandler process.P2PAntifloodHandler + whiteListHandler process.WhiteListHandler + whiteListerVerifiedTxs process.WhiteListHandler + preferredPeersHolder process.PreferredPeersHolderHandler + hasher hashing.Hasher + requestHandler process.RequestHandler + mainPeerShardMapper process.PeerShardMapper + fullArchivePeerShardMapper process.PeerShardMapper + hardforkTrigger heartbeat.HardforkTrigger + nodeOperationMode p2p.NodeOperation } func checkBaseParams( @@ -53,7 +64,8 @@ func checkBaseParams( accounts state.AccountsAdapter, store dataRetriever.StorageService, dataPool dataRetriever.PoolsHolder, - messenger process.TopicHandler, + mainMessenger process.TopicHandler, + fullArchiveMessenger process.TopicHandler, nodesCoordinator nodesCoordinator.NodesCoordinator, blackList process.TimeCacher, antifloodHandler process.P2PAntifloodHandler, @@ -61,7 +73,8 @@ func checkBaseParams( whiteListerVerifiedTxs process.WhiteListHandler, preferredPeersHolder process.PreferredPeersHolderHandler, requestHandler process.RequestHandler, - peerShardMapper process.PeerShardMapper, + mainPeerShardMapper process.PeerShardMapper, + fullArchivePeerShardMapper process.PeerShardMapper, hardforkTrigger heartbeat.HardforkTrigger, ) error { if check.IfNil(coreComponents) { @@ -73,8 +86,11 @@ func checkBaseParams( if check.IfNil(shardCoordinator) { return process.ErrNilShardCoordinator } - if check.IfNil(messenger) { - return process.ErrNilMessenger + if check.IfNil(mainMessenger) { + return fmt.Errorf("%w %s", process.ErrNilMessenger, errorOnMainNetworkString) + } + if check.IfNil(fullArchiveMessenger) { + return fmt.Errorf("%w %s", process.ErrNilMessenger, errorOnFullArchiveNetworkString) } if check.IfNil(store) { return process.ErrNilStore @@ -149,8 +165,11 @@ func checkBaseParams( if check.IfNil(requestHandler) { return process.ErrNilRequestHandler } - if check.IfNil(peerShardMapper) { - return process.ErrNilPeerShardMapper + if check.IfNil(mainPeerShardMapper) { + return fmt.Errorf("%w %s", process.ErrNilPeerShardMapper, errorOnMainNetworkString) + } + if check.IfNil(fullArchivePeerShardMapper) { + return fmt.Errorf("%w %s", process.ErrNilPeerShardMapper, errorOnFullArchiveNetworkString) } if check.IfNil(hardforkTrigger) { return process.ErrNilHardforkTrigger @@ -165,12 +184,34 @@ func (bicf *baseInterceptorsContainerFactory) createTopicAndAssignHandler( createChannel bool, ) (process.Interceptor, error) { - err := bicf.messenger.CreateTopic(topic, createChannel) + err := createTopicAndAssignHandlerOnMessenger(topic, interceptor, createChannel, bicf.mainMessenger) if err != nil { return nil, err } - return interceptor, bicf.messenger.RegisterMessageProcessor(topic, common.DefaultInterceptorsIdentifier, interceptor) + if bicf.nodeOperationMode == p2p.FullArchiveMode { + err = createTopicAndAssignHandlerOnMessenger(topic, interceptor, createChannel, bicf.fullArchiveMessenger) + if err != nil { + return nil, err + } + } + + return interceptor, nil +} + +func createTopicAndAssignHandlerOnMessenger( + topic string, + interceptor process.Interceptor, + createChannel bool, + messenger process.TopicHandler, +) error { + + err := messenger.CreateTopic(topic, createChannel) + if err != nil { + return err + } + + return messenger.RegisterMessageProcessor(topic, common.DefaultInterceptorsIdentifier, interceptor) } // ------- Tx interceptors @@ -206,7 +247,7 @@ func (bicf *baseInterceptorsContainerFactory) generateTxInterceptors() error { keys = append(keys, identifierTx) interceptorSlice = append(interceptorSlice, interceptor) - return bicf.container.AddMultiple(keys, interceptorSlice) + return bicf.addInterceptorsToContainers(keys, interceptorSlice) } func (bicf *baseInterceptorsContainerFactory) createOneTxInterceptor(topic string) (process.Interceptor, error) { @@ -255,7 +296,7 @@ func (bicf *baseInterceptorsContainerFactory) createOneTxInterceptor(topic strin Throttler: bicf.globalThrottler, AntifloodHandler: bicf.antifloodHandler, WhiteListRequest: bicf.whiteListHandler, - CurrentPeerId: bicf.messenger.ID(), + CurrentPeerId: bicf.mainMessenger.ID(), PreferredPeersHolder: bicf.preferredPeersHolder, }, ) @@ -298,7 +339,7 @@ func (bicf *baseInterceptorsContainerFactory) createOneUnsignedTxInterceptor(top Throttler: bicf.globalThrottler, AntifloodHandler: bicf.antifloodHandler, WhiteListRequest: bicf.whiteListHandler, - CurrentPeerId: bicf.messenger.ID(), + CurrentPeerId: bicf.mainMessenger.ID(), PreferredPeersHolder: bicf.preferredPeersHolder, }, ) @@ -341,7 +382,7 @@ func (bicf *baseInterceptorsContainerFactory) createOneRewardTxInterceptor(topic Throttler: bicf.globalThrottler, AntifloodHandler: bicf.antifloodHandler, WhiteListRequest: bicf.whiteListHandler, - CurrentPeerId: bicf.messenger.ID(), + CurrentPeerId: bicf.mainMessenger.ID(), PreferredPeersHolder: bicf.preferredPeersHolder, }, ) @@ -383,7 +424,7 @@ func (bicf *baseInterceptorsContainerFactory) generateHeaderInterceptors() error Throttler: bicf.globalThrottler, AntifloodHandler: bicf.antifloodHandler, WhiteListRequest: bicf.whiteListHandler, - CurrentPeerId: bicf.messenger.ID(), + CurrentPeerId: bicf.mainMessenger.ID(), PreferredPeersHolder: bicf.preferredPeersHolder, }, ) @@ -396,7 +437,7 @@ func (bicf *baseInterceptorsContainerFactory) generateHeaderInterceptors() error return err } - return bicf.container.Add(identifierHdr, interceptor) + return bicf.addInterceptorsToContainers([]string{identifierHdr}, []process.Interceptor{interceptor}) } // ------- MiniBlocks interceptors @@ -431,15 +472,15 @@ func (bicf *baseInterceptorsContainerFactory) generateMiniBlocksInterceptors() e identifierAllShardsMiniBlocks := factory.MiniBlocksTopic + shardC.CommunicationIdentifier(core.AllShardId) - allShardsMiniBlocksInterceptorinterceptor, err := bicf.createOneMiniBlocksInterceptor(identifierAllShardsMiniBlocks) + allShardsMiniBlocksInterceptor, err := bicf.createOneMiniBlocksInterceptor(identifierAllShardsMiniBlocks) if err != nil { return err } keys[noOfShards+1] = identifierAllShardsMiniBlocks - interceptorsSlice[noOfShards+1] = allShardsMiniBlocksInterceptorinterceptor + interceptorsSlice[noOfShards+1] = allShardsMiniBlocksInterceptor - return bicf.container.AddMultiple(keys, interceptorsSlice) + return bicf.addInterceptorsToContainers(keys, interceptorsSlice) } func (bicf *baseInterceptorsContainerFactory) createOneMiniBlocksInterceptor(topic string) (process.Interceptor, error) { @@ -471,7 +512,7 @@ func (bicf *baseInterceptorsContainerFactory) createOneMiniBlocksInterceptor(top Throttler: bicf.globalThrottler, AntifloodHandler: bicf.antifloodHandler, WhiteListRequest: bicf.whiteListHandler, - CurrentPeerId: bicf.messenger.ID(), + CurrentPeerId: bicf.mainMessenger.ID(), PreferredPeersHolder: bicf.preferredPeersHolder, }, ) @@ -510,7 +551,7 @@ func (bicf *baseInterceptorsContainerFactory) generateMetachainHeaderInterceptor Throttler: bicf.globalThrottler, AntifloodHandler: bicf.antifloodHandler, WhiteListRequest: bicf.whiteListHandler, - CurrentPeerId: bicf.messenger.ID(), + CurrentPeerId: bicf.mainMessenger.ID(), PreferredPeersHolder: bicf.preferredPeersHolder, }, ) @@ -523,7 +564,7 @@ func (bicf *baseInterceptorsContainerFactory) generateMetachainHeaderInterceptor return err } - return bicf.container.Add(identifierHdr, interceptor) + return bicf.addInterceptorsToContainers([]string{identifierHdr}, []process.Interceptor{interceptor}) } func (bicf *baseInterceptorsContainerFactory) createOneTrieNodesInterceptor(topic string) (process.Interceptor, error) { @@ -547,7 +588,7 @@ func (bicf *baseInterceptorsContainerFactory) createOneTrieNodesInterceptor(topi Throttler: bicf.globalThrottler, AntifloodHandler: bicf.antifloodHandler, WhiteListRequest: bicf.whiteListHandler, - CurrentPeerId: bicf.messenger.ID(), + CurrentPeerId: bicf.mainMessenger.ID(), PreferredPeersHolder: bicf.preferredPeersHolder, }, ) @@ -604,7 +645,7 @@ func (bicf *baseInterceptorsContainerFactory) generateUnsignedTxsInterceptors() keys = append(keys, identifierScr) interceptorsSlice = append(interceptorsSlice, interceptor) - return bicf.container.AddMultiple(keys, interceptorsSlice) + return bicf.addInterceptorsToContainers(keys, interceptorsSlice) } //------- PeerAuthentication interceptor @@ -615,7 +656,7 @@ func (bicf *baseInterceptorsContainerFactory) generatePeerAuthenticationIntercep internalMarshaller := bicf.argInterceptorFactory.CoreComponents.InternalMarshalizer() argProcessor := processor.ArgPeerAuthenticationInterceptorProcessor{ PeerAuthenticationCacher: bicf.dataPool.PeerAuthentications(), - PeerShardMapper: bicf.peerShardMapper, + PeerShardMapper: bicf.mainPeerShardMapper, Marshaller: internalMarshaller, HardforkTrigger: bicf.hardforkTrigger, } @@ -639,65 +680,72 @@ func (bicf *baseInterceptorsContainerFactory) generatePeerAuthenticationIntercep AntifloodHandler: bicf.antifloodHandler, WhiteListRequest: bicf.whiteListHandler, PreferredPeersHolder: bicf.preferredPeersHolder, - CurrentPeerId: bicf.messenger.ID(), + CurrentPeerId: bicf.mainMessenger.ID(), }, ) if err != nil { return err } - interceptor, err := bicf.createTopicAndAssignHandler(identifierPeerAuthentication, mdInterceptor, true) + err = createTopicAndAssignHandlerOnMessenger(identifierPeerAuthentication, mdInterceptor, true, bicf.mainMessenger) if err != nil { return err } - return bicf.container.Add(identifierPeerAuthentication, interceptor) + return bicf.mainContainer.Add(identifierPeerAuthentication, mdInterceptor) } //------- Heartbeat interceptor func (bicf *baseInterceptorsContainerFactory) generateHeartbeatInterceptor() error { - // TODO[Sorin]: we'll need separate interceptors for full archive heartbeats and peer authentications shardC := bicf.shardCoordinator identifierHeartbeat := common.HeartbeatV2Topic + shardC.CommunicationIdentifier(shardC.SelfId()) + interceptor, err := bicf.createHeartbeatV2Interceptor(identifierHeartbeat, bicf.dataPool.Heartbeats(), bicf.mainPeerShardMapper) + if err != nil { + return err + } + + return bicf.addInterceptorsToContainers([]string{identifierHeartbeat}, []process.Interceptor{interceptor}) +} + +func (bicf *baseInterceptorsContainerFactory) createHeartbeatV2Interceptor( + identifier string, + heartbeatCahcer storage.Cacher, + peerShardMapper process.PeerShardMapper, +) (process.Interceptor, error) { argHeartbeatProcessor := processor.ArgHeartbeatInterceptorProcessor{ - HeartbeatCacher: bicf.dataPool.Heartbeats(), - ShardCoordinator: shardC, - PeerShardMapper: bicf.peerShardMapper, + HeartbeatCacher: heartbeatCahcer, + ShardCoordinator: bicf.shardCoordinator, + PeerShardMapper: peerShardMapper, } heartbeatProcessor, err := processor.NewHeartbeatInterceptorProcessor(argHeartbeatProcessor) if err != nil { - return err + return nil, err } heartbeatFactory, err := interceptorFactory.NewInterceptedHeartbeatDataFactory(*bicf.argInterceptorFactory) if err != nil { - return err + return nil, err } - sdInterceptor, err := interceptors.NewSingleDataInterceptor( + interceptor, err := interceptors.NewSingleDataInterceptor( interceptors.ArgSingleDataInterceptor{ - Topic: identifierHeartbeat, + Topic: identifier, DataFactory: heartbeatFactory, Processor: heartbeatProcessor, Throttler: bicf.globalThrottler, AntifloodHandler: bicf.antifloodHandler, WhiteListRequest: bicf.whiteListHandler, PreferredPeersHolder: bicf.preferredPeersHolder, - CurrentPeerId: bicf.messenger.ID(), + CurrentPeerId: bicf.mainMessenger.ID(), }, ) if err != nil { - return err - } - - interceptor, err := bicf.createTopicAndAssignHandler(identifierHeartbeat, sdInterceptor, true) - if err != nil { - return err + return nil, err } - return bicf.container.Add(identifierHeartbeat, interceptor) + return bicf.createTopicAndAssignHandler(identifier, interceptor, true) } // ------- PeerShard interceptor @@ -705,41 +753,48 @@ func (bicf *baseInterceptorsContainerFactory) generateHeartbeatInterceptor() err func (bicf *baseInterceptorsContainerFactory) generatePeerShardInterceptor() error { identifier := common.ConnectionTopic - interceptedPeerShardFactory, err := interceptorFactory.NewInterceptedPeerShardFactory(*bicf.argInterceptorFactory) + interceptor, err := bicf.createPeerShardInterceptor(identifier, bicf.mainPeerShardMapper) if err != nil { return err } + return bicf.addInterceptorsToContainers([]string{identifier}, []process.Interceptor{interceptor}) +} + +func (bicf *baseInterceptorsContainerFactory) createPeerShardInterceptor( + identifier string, + peerShardMapper process.PeerShardMapper, +) (process.Interceptor, error) { + interceptedPeerShardFactory, err := interceptorFactory.NewInterceptedPeerShardFactory(*bicf.argInterceptorFactory) + if err != nil { + return nil, err + } + argProcessor := processor.ArgPeerShardInterceptorProcessor{ - PeerShardMapper: bicf.peerShardMapper, + PeerShardMapper: peerShardMapper, } - dciProcessor, err := processor.NewPeerShardInterceptorProcessor(argProcessor) + psiProcessor, err := processor.NewPeerShardInterceptorProcessor(argProcessor) if err != nil { - return err + return nil, err } interceptor, err := interceptors.NewSingleDataInterceptor( interceptors.ArgSingleDataInterceptor{ Topic: identifier, DataFactory: interceptedPeerShardFactory, - Processor: dciProcessor, + Processor: psiProcessor, Throttler: bicf.globalThrottler, AntifloodHandler: bicf.antifloodHandler, WhiteListRequest: bicf.whiteListHandler, - CurrentPeerId: bicf.messenger.ID(), + CurrentPeerId: bicf.mainMessenger.ID(), PreferredPeersHolder: bicf.preferredPeersHolder, }, ) if err != nil { - return err - } - - _, err = bicf.createTopicAndAssignHandler(identifier, interceptor, true) - if err != nil { - return err + return nil, err } - return bicf.container.Add(identifier, interceptor) + return bicf.createTopicAndAssignHandler(identifier, interceptor, true) } func (bicf *baseInterceptorsContainerFactory) generateValidatorInfoInterceptor() error { @@ -770,7 +825,7 @@ func (bicf *baseInterceptorsContainerFactory) generateValidatorInfoInterceptor() AntifloodHandler: bicf.antifloodHandler, WhiteListRequest: bicf.whiteListHandler, PreferredPeersHolder: bicf.preferredPeersHolder, - CurrentPeerId: bicf.messenger.ID(), + CurrentPeerId: bicf.mainMessenger.ID(), }, ) if err != nil { @@ -782,5 +837,18 @@ func (bicf *baseInterceptorsContainerFactory) generateValidatorInfoInterceptor() return err } - return bicf.container.Add(identifier, interceptor) + return bicf.addInterceptorsToContainers([]string{identifier}, []process.Interceptor{interceptor}) +} + +func (bicf *baseInterceptorsContainerFactory) addInterceptorsToContainers(keys []string, interceptors []process.Interceptor) error { + err := bicf.mainContainer.AddMultiple(keys, interceptors) + if err != nil { + return err + } + + if bicf.nodeOperationMode != p2p.FullArchiveMode { + return nil + } + + return bicf.fullArchiveContainer.AddMultiple(keys, interceptors) } diff --git a/process/factory/interceptorscontainer/metaInterceptorsContainerFactory.go b/process/factory/interceptorscontainer/metaInterceptorsContainerFactory.go index b783556254b..38d3e460bce 100644 --- a/process/factory/interceptorscontainer/metaInterceptorsContainerFactory.go +++ b/process/factory/interceptorscontainer/metaInterceptorsContainerFactory.go @@ -31,7 +31,8 @@ func NewMetaInterceptorsContainerFactory( args.Accounts, args.Store, args.DataPool, - args.Messenger, + args.MainMessenger, + args.FullArchiveMessenger, args.NodesCoordinator, args.BlockBlackList, args.AntifloodHandler, @@ -39,7 +40,8 @@ func NewMetaInterceptorsContainerFactory( args.WhiteListerVerifiedTxs, args.PreferredPeersHolder, args.RequestHandler, - args.PeerShardMapper, + args.MainPeerShardMapper, + args.FullArchivePeerShardMapper, args.HardforkTrigger, ) if err != nil { @@ -96,29 +98,32 @@ func NewMetaInterceptorsContainerFactory( PeerSignatureHandler: args.PeerSignatureHandler, SignaturesHandler: args.SignaturesHandler, HeartbeatExpiryTimespanInSec: args.HeartbeatExpiryTimespanInSec, - PeerID: args.Messenger.ID(), + PeerID: args.MainMessenger.ID(), } - container := containers.NewInterceptorsContainer() base := &baseInterceptorsContainerFactory{ - container: container, - shardCoordinator: args.ShardCoordinator, - messenger: args.Messenger, - store: args.Store, - dataPool: args.DataPool, - nodesCoordinator: args.NodesCoordinator, - blockBlackList: args.BlockBlackList, - argInterceptorFactory: argInterceptorFactory, - maxTxNonceDeltaAllowed: args.MaxTxNonceDeltaAllowed, - accounts: args.Accounts, - antifloodHandler: args.AntifloodHandler, - whiteListHandler: args.WhiteListHandler, - whiteListerVerifiedTxs: args.WhiteListerVerifiedTxs, - preferredPeersHolder: args.PreferredPeersHolder, - hasher: args.CoreComponents.Hasher(), - requestHandler: args.RequestHandler, - peerShardMapper: args.PeerShardMapper, - hardforkTrigger: args.HardforkTrigger, + mainContainer: containers.NewInterceptorsContainer(), + fullArchiveContainer: containers.NewInterceptorsContainer(), + shardCoordinator: args.ShardCoordinator, + mainMessenger: args.MainMessenger, + fullArchiveMessenger: args.FullArchiveMessenger, + store: args.Store, + dataPool: args.DataPool, + nodesCoordinator: args.NodesCoordinator, + blockBlackList: args.BlockBlackList, + argInterceptorFactory: argInterceptorFactory, + maxTxNonceDeltaAllowed: args.MaxTxNonceDeltaAllowed, + accounts: args.Accounts, + antifloodHandler: args.AntifloodHandler, + whiteListHandler: args.WhiteListHandler, + whiteListerVerifiedTxs: args.WhiteListerVerifiedTxs, + preferredPeersHolder: args.PreferredPeersHolder, + hasher: args.CoreComponents.Hasher(), + requestHandler: args.RequestHandler, + mainPeerShardMapper: args.MainPeerShardMapper, + fullArchivePeerShardMapper: args.FullArchivePeerShardMapper, + hardforkTrigger: args.HardforkTrigger, + nodeOperationMode: args.NodeOperationMode, } icf := &metaInterceptorsContainerFactory{ @@ -134,63 +139,63 @@ func NewMetaInterceptorsContainerFactory( } // Create returns an interceptor container that will hold all interceptors in the system -func (micf *metaInterceptorsContainerFactory) Create() (process.InterceptorsContainer, error) { +func (micf *metaInterceptorsContainerFactory) Create() (process.InterceptorsContainer, process.InterceptorsContainer, error) { err := micf.generateMetachainHeaderInterceptors() if err != nil { - return nil, err + return nil, nil, err } err = micf.generateShardHeaderInterceptors() if err != nil { - return nil, err + return nil, nil, err } err = micf.generateTxInterceptors() if err != nil { - return nil, err + return nil, nil, err } err = micf.generateUnsignedTxsInterceptors() if err != nil { - return nil, err + return nil, nil, err } err = micf.generateRewardTxInterceptors() if err != nil { - return nil, err + return nil, nil, err } err = micf.generateMiniBlocksInterceptors() if err != nil { - return nil, err + return nil, nil, err } err = micf.generateTrieNodesInterceptors() if err != nil { - return nil, err + return nil, nil, err } err = micf.generatePeerAuthenticationInterceptor() if err != nil { - return nil, err + return nil, nil, err } err = micf.generateHeartbeatInterceptor() if err != nil { - return nil, err + return nil, nil, err } err = micf.generatePeerShardInterceptor() if err != nil { - return nil, err + return nil, nil, err } err = micf.generateValidatorInfoInterceptor() if err != nil { - return nil, err + return nil, nil, err } - return micf.container, nil + return micf.mainContainer, micf.fullArchiveContainer, nil } // AddShardTrieNodeInterceptors will add the shard trie node interceptors into the existing container @@ -238,7 +243,7 @@ func (micf *metaInterceptorsContainerFactory) generateShardHeaderInterceptors() interceptorsSlice[int(idx)] = interceptor } - return micf.container.AddMultiple(keys, interceptorsSlice) + return micf.addInterceptorsToContainers(keys, interceptorsSlice) } func (micf *metaInterceptorsContainerFactory) createOneShardHeaderInterceptor(topic string) (process.Interceptor, error) { @@ -264,7 +269,7 @@ func (micf *metaInterceptorsContainerFactory) createOneShardHeaderInterceptor(to Throttler: micf.globalThrottler, AntifloodHandler: micf.antifloodHandler, WhiteListRequest: micf.whiteListHandler, - CurrentPeerId: micf.messenger.ID(), + CurrentPeerId: micf.mainMessenger.ID(), PreferredPeersHolder: micf.preferredPeersHolder, }, ) @@ -297,7 +302,7 @@ func (micf *metaInterceptorsContainerFactory) generateTrieNodesInterceptors() er keys = append(keys, identifierTrieNodes) trieInterceptors = append(trieInterceptors, interceptor) - return micf.container.AddMultiple(keys, trieInterceptors) + return micf.addInterceptorsToContainers(keys, trieInterceptors) } //------- Reward transactions interceptors @@ -321,7 +326,7 @@ func (micf *metaInterceptorsContainerFactory) generateRewardTxInterceptors() err interceptorSlice[int(idx)] = interceptor } - return micf.container.AddMultiple(keys, interceptorSlice) + return micf.addInterceptorsToContainers(keys, interceptorSlice) } // IsInterfaceNil returns true if there is no value under the interface diff --git a/process/factory/interceptorscontainer/metaInterceptorsContainerFactory_test.go b/process/factory/interceptorscontainer/metaInterceptorsContainerFactory_test.go index 5e636622ed3..34e96b201da 100644 --- a/process/factory/interceptorscontainer/metaInterceptorsContainerFactory_test.go +++ b/process/factory/interceptorscontainer/metaInterceptorsContainerFactory_test.go @@ -5,6 +5,7 @@ import ( "strings" "testing" + "github.com/multiversx/mx-chain-go/common" "github.com/multiversx/mx-chain-go/dataRetriever" "github.com/multiversx/mx-chain-go/p2p" "github.com/multiversx/mx-chain-go/process" @@ -143,16 +144,28 @@ func TestNewMetaInterceptorsContainerFactory_NilNodesCoordinatorShouldErr(t *tes assert.Equal(t, process.ErrNilNodesCoordinator, err) } -func TestNewMetaInterceptorsContainerFactory_NilTopicHandlerShouldErr(t *testing.T) { +func TestNewMetaInterceptorsContainerFactory_NilMainTopicHandlerShouldErr(t *testing.T) { t.Parallel() coreComp, cryptoComp := createMockComponentHolders() args := getArgumentsMeta(coreComp, cryptoComp) - args.Messenger = nil + args.MainMessenger = nil icf, err := interceptorscontainer.NewMetaInterceptorsContainerFactory(args) assert.Nil(t, icf) - assert.Equal(t, process.ErrNilMessenger, err) + assert.True(t, errors.Is(err, process.ErrNilMessenger)) +} + +func TestNewMetaInterceptorsContainerFactory_NilFullArchiveTopicHandlerShouldErr(t *testing.T) { + t.Parallel() + + coreComp, cryptoComp := createMockComponentHolders() + args := getArgumentsMeta(coreComp, cryptoComp) + args.FullArchiveMessenger = nil + icf, err := interceptorscontainer.NewMetaInterceptorsContainerFactory(args) + + assert.Nil(t, icf) + assert.True(t, errors.Is(err, process.ErrNilMessenger)) } func TestNewMetaInterceptorsContainerFactory_NilStoreShouldErr(t *testing.T) { @@ -420,16 +433,28 @@ func TestNewMetaInterceptorsContainerFactory_NilRequestHandlerShouldErr(t *testi assert.Equal(t, process.ErrNilRequestHandler, err) } -func TestNewMetaInterceptorsContainerFactory_NilPeerShardMapperShouldErr(t *testing.T) { +func TestNewMetaInterceptorsContainerFactory_NilMainPeerShardMapperShouldErr(t *testing.T) { + t.Parallel() + + coreComp, cryptoComp := createMockComponentHolders() + args := getArgumentsMeta(coreComp, cryptoComp) + args.MainPeerShardMapper = nil + icf, err := interceptorscontainer.NewMetaInterceptorsContainerFactory(args) + + assert.Nil(t, icf) + assert.True(t, errors.Is(err, process.ErrNilPeerShardMapper)) +} + +func TestNewMetaInterceptorsContainerFactory_NilFullArchivePeerShardMapperShouldErr(t *testing.T) { t.Parallel() coreComp, cryptoComp := createMockComponentHolders() args := getArgumentsMeta(coreComp, cryptoComp) - args.PeerShardMapper = nil + args.FullArchivePeerShardMapper = nil icf, err := interceptorscontainer.NewMetaInterceptorsContainerFactory(args) assert.Nil(t, icf) - assert.Equal(t, process.ErrNilPeerShardMapper, err) + assert.True(t, errors.Is(err, process.ErrNilPeerShardMapper)) } func TestNewMetaInterceptorsContainerFactory_NilHardforkTriggerShouldErr(t *testing.T) { @@ -470,74 +495,60 @@ func TestNewMetaInterceptorsContainerFactory_ShouldWorkWithSizeCheck(t *testing. // ------- Create -func TestMetaInterceptorsContainerFactory_CreateTopicMetablocksFailsShouldErr(t *testing.T) { +func TestMetaInterceptorsContainerFactory_CreateTopicsAndRegisterFailure(t *testing.T) { t.Parallel() - coreComp, cryptoComp := createMockComponentHolders() - args := getArgumentsMeta(coreComp, cryptoComp) - args.Messenger = createMetaStubTopicHandler(factory.MetachainBlocksTopic, "") - icf, _ := interceptorscontainer.NewMetaInterceptorsContainerFactory(args) + testCreateMetaTopicShouldFailOnAllMessenger(t, "generateMetachainHeaderInterceptors_create", factory.MetachainBlocksTopic, "") + testCreateMetaTopicShouldFailOnAllMessenger(t, "generateMetachainHeaderInterceptors_register", "", factory.MetachainBlocksTopic) - container, err := icf.Create() + testCreateMetaTopicShouldFailOnAllMessenger(t, "generateShardHeaderInterceptors", factory.ShardBlocksTopic, "") - assert.Nil(t, container) - assert.Equal(t, errExpected, err) -} + testCreateMetaTopicShouldFailOnAllMessenger(t, "generateTxInterceptors", factory.TransactionTopic, "") -func TestMetaInterceptorsContainerFactory_CreateTopicShardHeadersForMetachainFailsShouldErr(t *testing.T) { - t.Parallel() + testCreateMetaTopicShouldFailOnAllMessenger(t, "generateUnsignedTxsInterceptors", factory.UnsignedTransactionTopic, "") - coreComp, cryptoComp := createMockComponentHolders() - args := getArgumentsMeta(coreComp, cryptoComp) - args.Messenger = createMetaStubTopicHandler(factory.ShardBlocksTopic, "") - icf, _ := interceptorscontainer.NewMetaInterceptorsContainerFactory(args) + testCreateMetaTopicShouldFailOnAllMessenger(t, "generateRewardTxInterceptors", factory.RewardsTransactionTopic, "") - container, err := icf.Create() + testCreateMetaTopicShouldFailOnAllMessenger(t, "generateMiniBlocksInterceptors", factory.MiniBlocksTopic, "") - assert.Nil(t, container) - assert.Equal(t, errExpected, err) -} + testCreateMetaTopicShouldFailOnAllMessenger(t, "generateTrieNodesInterceptors_validator", factory.ValidatorTrieNodesTopic, "") -func TestMetaInterceptorsContainerFactory_CreateRegisterForMetablocksFailsShouldErr(t *testing.T) { - t.Parallel() - - coreComp, cryptoComp := createMockComponentHolders() - args := getArgumentsMeta(coreComp, cryptoComp) - args.Messenger = createMetaStubTopicHandler("", factory.MetachainBlocksTopic) - icf, _ := interceptorscontainer.NewMetaInterceptorsContainerFactory(args) + testCreateMetaTopicShouldFailOnAllMessenger(t, "generateTrieNodesInterceptors_account", factory.AccountTrieNodesTopic, "") - container, err := icf.Create() + testCreateMetaTopicShouldFailOnAllMessenger(t, "generateValidatorInfoInterceptor", common.ValidatorInfoTopic, "") - assert.Nil(t, container) - assert.Equal(t, errExpected, err) -} + testCreateMetaTopicShouldFailOnAllMessenger(t, "generateHeartbeatInterceptor", common.HeartbeatV2Topic, "") -func TestMetaInterceptorsContainerFactory_CreateRegisterShardHeadersForMetachainFailsShouldErr(t *testing.T) { - t.Parallel() + testCreateMetaTopicShouldFailOnAllMessenger(t, "generatePeerShardInterceptor", common.ConnectionTopic, "") - coreComp, cryptoComp := createMockComponentHolders() - args := getArgumentsMeta(coreComp, cryptoComp) - args.Messenger = createMetaStubTopicHandler("", factory.MetachainBlocksTopic) - icf, _ := interceptorscontainer.NewMetaInterceptorsContainerFactory(args) - - container, err := icf.Create() + t.Run("generatePeerAuthenticationInterceptor_main", testCreateMetaTopicShouldFail(common.PeerAuthenticationTopic, "")) +} - assert.Nil(t, container) - assert.Equal(t, errExpected, err) +func testCreateMetaTopicShouldFailOnAllMessenger(t *testing.T, testNamePrefix string, matchStrToErrOnCreate string, matchStrToErrOnRegister string) { + t.Run(testNamePrefix+"main messenger", testCreateMetaTopicShouldFail(matchStrToErrOnCreate, matchStrToErrOnRegister)) + t.Run(testNamePrefix+"full archive messenger", testCreateMetaTopicShouldFail(matchStrToErrOnCreate, matchStrToErrOnRegister)) } -func TestMetaInterceptorsContainerFactory_CreateRegisterTrieNodesFailsShouldErr(t *testing.T) { - t.Parallel() +func testCreateMetaTopicShouldFail(matchStrToErrOnCreate string, matchStrToErrOnRegister string) func(t *testing.T) { + return func(t *testing.T) { + t.Parallel() - coreComp, cryptoComp := createMockComponentHolders() - args := getArgumentsMeta(coreComp, cryptoComp) - args.Messenger = createMetaStubTopicHandler("", factory.AccountTrieNodesTopic) - icf, _ := interceptorscontainer.NewMetaInterceptorsContainerFactory(args) + coreComp, cryptoComp := createMockComponentHolders() + args := getArgumentsMeta(coreComp, cryptoComp) + if strings.Contains(t.Name(), "full_archive") { + args.NodeOperationMode = p2p.FullArchiveMode + args.FullArchiveMessenger = createMetaStubTopicHandler(matchStrToErrOnCreate, matchStrToErrOnRegister) + } else { + args.MainMessenger = createMetaStubTopicHandler(matchStrToErrOnCreate, matchStrToErrOnRegister) + } + icf, _ := interceptorscontainer.NewMetaInterceptorsContainerFactory(args) - container, err := icf.Create() + mainContainer, fullArchiveConatiner, err := icf.Create() - assert.Nil(t, container) - assert.Equal(t, errExpected, err) + assert.Nil(t, mainContainer) + assert.Nil(t, fullArchiveConatiner) + assert.Equal(t, errExpected, err) + } } func TestMetaInterceptorsContainerFactory_CreateShouldWork(t *testing.T) { @@ -545,77 +556,121 @@ func TestMetaInterceptorsContainerFactory_CreateShouldWork(t *testing.T) { coreComp, cryptoComp := createMockComponentHolders() args := getArgumentsMeta(coreComp, cryptoComp) - args.Messenger = &mock.TopicHandlerStub{ - CreateTopicCalled: func(name string, createChannelForTopic bool) error { - return nil - }, - RegisterMessageProcessorCalled: func(topic string, identifier string, handler p2p.MessageProcessor) error { - return nil - }, - } icf, _ := interceptorscontainer.NewMetaInterceptorsContainerFactory(args) - container, err := icf.Create() + mainContainer, fullArchiveContainer, err := icf.Create() - assert.NotNil(t, container) + assert.NotNil(t, mainContainer) + assert.NotNil(t, fullArchiveContainer) assert.Nil(t, err) } func TestMetaInterceptorsContainerFactory_With4ShardsShouldWork(t *testing.T) { t.Parallel() - noOfShards := 4 - - shardCoordinator := mock.NewMultipleShardsCoordinatorMock() - shardCoordinator.SetNoShards(uint32(noOfShards)) - shardCoordinator.CurrentShard = 1 - - nodesCoordinator := &shardingMocks.NodesCoordinatorMock{ - ShardConsensusSize: 1, - MetaConsensusSize: 1, - NbShards: uint32(noOfShards), - ShardId: 1, - } - - coreComp, cryptoComp := createMockComponentHolders() - args := getArgumentsMeta(coreComp, cryptoComp) - args.ShardCoordinator = shardCoordinator - args.NodesCoordinator = nodesCoordinator - args.Messenger = &mock.TopicHandlerStub{ - CreateTopicCalled: func(name string, createChannelForTopic bool) error { - return nil - }, - RegisterMessageProcessorCalled: func(topic string, identifier string, handler p2p.MessageProcessor) error { - return nil - }, - } - icf, err := interceptorscontainer.NewMetaInterceptorsContainerFactory(args) - require.Nil(t, err) - - container, err := icf.Create() - - numInterceptorsMetablock := 1 - numInterceptorsShardHeadersForMetachain := noOfShards - numInterceptorsTransactionsForMetachain := noOfShards + 1 - numInterceptorsMiniBlocksForMetachain := noOfShards + 1 + 1 - numInterceptorsUnsignedTxsForMetachain := noOfShards + 1 - numInterceptorsRewardsTxsForMetachain := noOfShards - numInterceptorsTrieNodes := 2 - numInterceptorsPeerAuthForMetachain := 1 - numInterceptorsHeartbeatForMetachain := 1 - numInterceptorsShardValidatorInfoForMetachain := 1 - numInterceptorValidatorInfo := 1 - totalInterceptors := numInterceptorsMetablock + numInterceptorsShardHeadersForMetachain + numInterceptorsTrieNodes + - numInterceptorsTransactionsForMetachain + numInterceptorsUnsignedTxsForMetachain + numInterceptorsMiniBlocksForMetachain + - numInterceptorsRewardsTxsForMetachain + numInterceptorsPeerAuthForMetachain + numInterceptorsHeartbeatForMetachain + - numInterceptorsShardValidatorInfoForMetachain + numInterceptorValidatorInfo - - assert.Nil(t, err) - assert.Equal(t, totalInterceptors, container.Len()) - - err = icf.AddShardTrieNodeInterceptors(container) - assert.Nil(t, err) - assert.Equal(t, totalInterceptors+noOfShards, container.Len()) + t.Run("regular mode", func(t *testing.T) { + t.Parallel() + + noOfShards := 4 + + shardCoordinator := mock.NewMultipleShardsCoordinatorMock() + shardCoordinator.SetNoShards(uint32(noOfShards)) + shardCoordinator.CurrentShard = 1 + + nodesCoordinator := &shardingMocks.NodesCoordinatorMock{ + ShardConsensusSize: 1, + MetaConsensusSize: 1, + NbShards: uint32(noOfShards), + ShardId: 1, + } + + coreComp, cryptoComp := createMockComponentHolders() + args := getArgumentsMeta(coreComp, cryptoComp) + args.ShardCoordinator = shardCoordinator + args.NodesCoordinator = nodesCoordinator + icf, err := interceptorscontainer.NewMetaInterceptorsContainerFactory(args) + require.Nil(t, err) + + mainContainer, fullArchiveContainer, err := icf.Create() + + numInterceptorsMetablock := 1 + numInterceptorsShardHeadersForMetachain := noOfShards + numInterceptorsTransactionsForMetachain := noOfShards + 1 + numInterceptorsMiniBlocksForMetachain := noOfShards + 1 + 1 + numInterceptorsUnsignedTxsForMetachain := noOfShards + 1 + numInterceptorsRewardsTxsForMetachain := noOfShards + numInterceptorsTrieNodes := 2 + numInterceptorsPeerAuthForMetachain := 1 + numInterceptorsHeartbeatForMetachain := 1 + numInterceptorsShardValidatorInfoForMetachain := 1 + numInterceptorValidatorInfo := 1 + totalInterceptors := numInterceptorsMetablock + numInterceptorsShardHeadersForMetachain + numInterceptorsTrieNodes + + numInterceptorsTransactionsForMetachain + numInterceptorsUnsignedTxsForMetachain + numInterceptorsMiniBlocksForMetachain + + numInterceptorsRewardsTxsForMetachain + numInterceptorsPeerAuthForMetachain + numInterceptorsHeartbeatForMetachain + + numInterceptorsShardValidatorInfoForMetachain + numInterceptorValidatorInfo + + assert.Nil(t, err) + assert.Equal(t, totalInterceptors, mainContainer.Len()) + assert.Equal(t, 0, fullArchiveContainer.Len()) + + err = icf.AddShardTrieNodeInterceptors(mainContainer) + assert.Nil(t, err) + assert.Equal(t, totalInterceptors+noOfShards, mainContainer.Len()) + }) + t.Run("full archive mode", func(t *testing.T) { + t.Parallel() + + noOfShards := 4 + + shardCoordinator := mock.NewMultipleShardsCoordinatorMock() + shardCoordinator.SetNoShards(uint32(noOfShards)) + shardCoordinator.CurrentShard = 1 + nodesCoordinator := &shardingMocks.NodesCoordinatorMock{ + ShardConsensusSize: 1, + MetaConsensusSize: 1, + NbShards: uint32(noOfShards), + ShardId: 1, + } + + coreComp, cryptoComp := createMockComponentHolders() + args := getArgumentsMeta(coreComp, cryptoComp) + args.NodeOperationMode = p2p.FullArchiveMode + args.ShardCoordinator = shardCoordinator + args.NodesCoordinator = nodesCoordinator + + icf, err := interceptorscontainer.NewMetaInterceptorsContainerFactory(args) + require.Nil(t, err) + + mainContainer, fullArchiveContainer, err := icf.Create() + + numInterceptorsMetablock := 1 + numInterceptorsShardHeadersForMetachain := noOfShards + numInterceptorsTransactionsForMetachain := noOfShards + 1 + numInterceptorsMiniBlocksForMetachain := noOfShards + 1 + 1 + numInterceptorsUnsignedTxsForMetachain := noOfShards + 1 + numInterceptorsRewardsTxsForMetachain := noOfShards + numInterceptorsTrieNodes := 2 + numInterceptorsPeerAuthForMetachain := 1 + numInterceptorsHeartbeatForMetachain := 1 + numInterceptorsShardValidatorInfoForMetachain := 1 + numInterceptorValidatorInfo := 1 + totalInterceptors := numInterceptorsMetablock + numInterceptorsShardHeadersForMetachain + numInterceptorsTrieNodes + + numInterceptorsTransactionsForMetachain + numInterceptorsUnsignedTxsForMetachain + numInterceptorsMiniBlocksForMetachain + + numInterceptorsRewardsTxsForMetachain + numInterceptorsPeerAuthForMetachain + numInterceptorsHeartbeatForMetachain + + numInterceptorsShardValidatorInfoForMetachain + numInterceptorValidatorInfo + + assert.Nil(t, err) + assert.Equal(t, totalInterceptors, mainContainer.Len()) + assert.Equal(t, totalInterceptors-1, fullArchiveContainer.Len()) // no peerAuthentication needed + + err = icf.AddShardTrieNodeInterceptors(mainContainer) + assert.Nil(t, err) + assert.Equal(t, totalInterceptors+noOfShards, mainContainer.Len()) + + err = icf.AddShardTrieNodeInterceptors(fullArchiveContainer) + assert.Nil(t, err) + assert.Equal(t, totalInterceptors-1+noOfShards, fullArchiveContainer.Len()) + }) } func getArgumentsMeta( @@ -628,7 +683,8 @@ func getArgumentsMeta( Accounts: &stateMock.AccountsStub{}, ShardCoordinator: mock.NewOneShardCoordinatorMock(), NodesCoordinator: shardingMocks.NewNodesCoordinatorMock(), - Messenger: &mock.TopicHandlerStub{}, + MainMessenger: &mock.TopicHandlerStub{}, + FullArchiveMessenger: &mock.TopicHandlerStub{}, Store: createMetaStore(), DataPool: createMetaDataPools(), MaxTxNonceDeltaAllowed: maxTxNonceDeltaAllowed, @@ -647,7 +703,9 @@ func getArgumentsMeta( PeerSignatureHandler: &mock.PeerSignatureHandlerStub{}, SignaturesHandler: &mock.SignaturesHandlerStub{}, HeartbeatExpiryTimespanInSec: 30, - PeerShardMapper: &p2pmocks.NetworkShardingCollectorStub{}, + MainPeerShardMapper: &p2pmocks.NetworkShardingCollectorStub{}, + FullArchivePeerShardMapper: &p2pmocks.NetworkShardingCollectorStub{}, HardforkTrigger: &testscommon.HardforkTriggerStub{}, + NodeOperationMode: p2p.NormalOperation, } } diff --git a/process/factory/interceptorscontainer/shardInterceptorsContainerFactory.go b/process/factory/interceptorscontainer/shardInterceptorsContainerFactory.go index ccd0f9ee981..beef288c54c 100644 --- a/process/factory/interceptorscontainer/shardInterceptorsContainerFactory.go +++ b/process/factory/interceptorscontainer/shardInterceptorsContainerFactory.go @@ -29,7 +29,8 @@ func NewShardInterceptorsContainerFactory( args.Accounts, args.Store, args.DataPool, - args.Messenger, + args.MainMessenger, + args.FullArchiveMessenger, args.NodesCoordinator, args.BlockBlackList, args.AntifloodHandler, @@ -37,7 +38,8 @@ func NewShardInterceptorsContainerFactory( args.WhiteListerVerifiedTxs, args.PreferredPeersHolder, args.RequestHandler, - args.PeerShardMapper, + args.MainPeerShardMapper, + args.FullArchivePeerShardMapper, args.HardforkTrigger, ) if err != nil { @@ -95,29 +97,32 @@ func NewShardInterceptorsContainerFactory( PeerSignatureHandler: args.PeerSignatureHandler, SignaturesHandler: args.SignaturesHandler, HeartbeatExpiryTimespanInSec: args.HeartbeatExpiryTimespanInSec, - PeerID: args.Messenger.ID(), + PeerID: args.MainMessenger.ID(), } - container := containers.NewInterceptorsContainer() base := &baseInterceptorsContainerFactory{ - container: container, - accounts: args.Accounts, - shardCoordinator: args.ShardCoordinator, - messenger: args.Messenger, - store: args.Store, - dataPool: args.DataPool, - nodesCoordinator: args.NodesCoordinator, - argInterceptorFactory: argInterceptorFactory, - blockBlackList: args.BlockBlackList, - maxTxNonceDeltaAllowed: args.MaxTxNonceDeltaAllowed, - antifloodHandler: args.AntifloodHandler, - whiteListHandler: args.WhiteListHandler, - whiteListerVerifiedTxs: args.WhiteListerVerifiedTxs, - preferredPeersHolder: args.PreferredPeersHolder, - hasher: args.CoreComponents.Hasher(), - requestHandler: args.RequestHandler, - peerShardMapper: args.PeerShardMapper, - hardforkTrigger: args.HardforkTrigger, + mainContainer: containers.NewInterceptorsContainer(), + fullArchiveContainer: containers.NewInterceptorsContainer(), + accounts: args.Accounts, + shardCoordinator: args.ShardCoordinator, + mainMessenger: args.MainMessenger, + fullArchiveMessenger: args.FullArchiveMessenger, + store: args.Store, + dataPool: args.DataPool, + nodesCoordinator: args.NodesCoordinator, + argInterceptorFactory: argInterceptorFactory, + blockBlackList: args.BlockBlackList, + maxTxNonceDeltaAllowed: args.MaxTxNonceDeltaAllowed, + antifloodHandler: args.AntifloodHandler, + whiteListHandler: args.WhiteListHandler, + whiteListerVerifiedTxs: args.WhiteListerVerifiedTxs, + preferredPeersHolder: args.PreferredPeersHolder, + hasher: args.CoreComponents.Hasher(), + requestHandler: args.RequestHandler, + mainPeerShardMapper: args.MainPeerShardMapper, + fullArchivePeerShardMapper: args.FullArchivePeerShardMapper, + hardforkTrigger: args.HardforkTrigger, + nodeOperationMode: args.NodeOperationMode, } icf := &shardInterceptorsContainerFactory{ @@ -133,63 +138,63 @@ func NewShardInterceptorsContainerFactory( } // Create returns an interceptor container that will hold all interceptors in the system -func (sicf *shardInterceptorsContainerFactory) Create() (process.InterceptorsContainer, error) { +func (sicf *shardInterceptorsContainerFactory) Create() (process.InterceptorsContainer, process.InterceptorsContainer, error) { err := sicf.generateTxInterceptors() if err != nil { - return nil, err + return nil, nil, err } err = sicf.generateUnsignedTxsInterceptors() if err != nil { - return nil, err + return nil, nil, err } err = sicf.generateRewardTxInterceptor() if err != nil { - return nil, err + return nil, nil, err } err = sicf.generateHeaderInterceptors() if err != nil { - return nil, err + return nil, nil, err } err = sicf.generateMiniBlocksInterceptors() if err != nil { - return nil, err + return nil, nil, err } err = sicf.generateMetachainHeaderInterceptors() if err != nil { - return nil, err + return nil, nil, err } err = sicf.generateTrieNodesInterceptors() if err != nil { - return nil, err + return nil, nil, err } err = sicf.generatePeerAuthenticationInterceptor() if err != nil { - return nil, err + return nil, nil, err } err = sicf.generateHeartbeatInterceptor() if err != nil { - return nil, err + return nil, nil, err } err = sicf.generatePeerShardInterceptor() if err != nil { - return nil, err + return nil, nil, err } err = sicf.generateValidatorInfoInterceptor() if err != nil { - return nil, err + return nil, nil, err } - return sicf.container, nil + return sicf.mainContainer, sicf.fullArchiveContainer, nil } func (sicf *shardInterceptorsContainerFactory) generateTrieNodesInterceptors() error { @@ -207,7 +212,7 @@ func (sicf *shardInterceptorsContainerFactory) generateTrieNodesInterceptors() e keys = append(keys, identifierTrieNodes) interceptorsSlice = append(interceptorsSlice, interceptor) - return sicf.container.AddMultiple(keys, interceptorsSlice) + return sicf.addInterceptorsToContainers(keys, interceptorsSlice) } // ------- Reward transactions interceptors @@ -227,7 +232,7 @@ func (sicf *shardInterceptorsContainerFactory) generateRewardTxInterceptor() err keys = append(keys, identifierTx) interceptorSlice = append(interceptorSlice, interceptor) - return sicf.container.AddMultiple(keys, interceptorSlice) + return sicf.addInterceptorsToContainers(keys, interceptorSlice) } // IsInterfaceNil returns true if there is no value under the interface diff --git a/process/factory/interceptorscontainer/shardInterceptorsContainerFactory_test.go b/process/factory/interceptorscontainer/shardInterceptorsContainerFactory_test.go index afc6de41014..4f1ec24c12d 100644 --- a/process/factory/interceptorscontainer/shardInterceptorsContainerFactory_test.go +++ b/process/factory/interceptorscontainer/shardInterceptorsContainerFactory_test.go @@ -1,10 +1,12 @@ package interceptorscontainer_test import ( + "errors" "strings" "testing" "github.com/multiversx/mx-chain-core-go/core/versioning" + "github.com/multiversx/mx-chain-go/common" "github.com/multiversx/mx-chain-go/dataRetriever" "github.com/multiversx/mx-chain-go/p2p" "github.com/multiversx/mx-chain-go/process" @@ -133,16 +135,28 @@ func TestNewShardInterceptorsContainerFactory_NilNodesCoordinatorShouldErr(t *te assert.Equal(t, process.ErrNilNodesCoordinator, err) } -func TestNewShardInterceptorsContainerFactory_NilMessengerShouldErr(t *testing.T) { +func TestNewShardInterceptorsContainerFactory_NilMainMessengerShouldErr(t *testing.T) { t.Parallel() coreComp, cryptoComp := createMockComponentHolders() args := getArgumentsShard(coreComp, cryptoComp) - args.Messenger = nil + args.MainMessenger = nil icf, err := interceptorscontainer.NewShardInterceptorsContainerFactory(args) assert.Nil(t, icf) - assert.Equal(t, process.ErrNilMessenger, err) + assert.True(t, errors.Is(err, process.ErrNilMessenger)) +} + +func TestNewShardInterceptorsContainerFactory_NilFullArchiveMessengerShouldErr(t *testing.T) { + t.Parallel() + + coreComp, cryptoComp := createMockComponentHolders() + args := getArgumentsShard(coreComp, cryptoComp) + args.FullArchiveMessenger = nil + icf, err := interceptorscontainer.NewShardInterceptorsContainerFactory(args) + + assert.Nil(t, icf) + assert.True(t, errors.Is(err, process.ErrNilMessenger)) } func TestNewShardInterceptorsContainerFactory_NilStoreShouldErr(t *testing.T) { @@ -379,16 +393,28 @@ func TestNewShardInterceptorsContainerFactory_EmptyEpochStartTriggerShouldErr(t assert.Equal(t, process.ErrNilEpochStartTrigger, err) } -func TestNewShardInterceptorsContainerFactory_NilPeerShardMapperShouldErr(t *testing.T) { +func TestNewShardInterceptorsContainerFactory_NilMainPeerShardMapperShouldErr(t *testing.T) { t.Parallel() coreComp, cryptoComp := createMockComponentHolders() args := getArgumentsShard(coreComp, cryptoComp) - args.PeerShardMapper = nil + args.MainPeerShardMapper = nil icf, err := interceptorscontainer.NewShardInterceptorsContainerFactory(args) assert.Nil(t, icf) - assert.Equal(t, process.ErrNilPeerShardMapper, err) + assert.True(t, errors.Is(err, process.ErrNilPeerShardMapper)) +} + +func TestNewShardInterceptorsContainerFactory_NilFullArchivePeerShardMapperShouldErr(t *testing.T) { + t.Parallel() + + coreComp, cryptoComp := createMockComponentHolders() + args := getArgumentsShard(coreComp, cryptoComp) + args.FullArchivePeerShardMapper = nil + icf, err := interceptorscontainer.NewShardInterceptorsContainerFactory(args) + + assert.Nil(t, icf) + assert.True(t, errors.Is(err, process.ErrNilPeerShardMapper)) } func TestNewShardInterceptorsContainerFactory_NilHardforkTriggerShouldErr(t *testing.T) { @@ -429,130 +455,57 @@ func TestNewShardInterceptorsContainerFactory_ShouldWorkWithSizeCheck(t *testing // ------- Create -func TestShardInterceptorsContainerFactory_CreateTopicCreationTxFailsShouldErr(t *testing.T) { +func TestShardInterceptorsContainerFactory_CreateTopicsAndRegisterFailure(t *testing.T) { t.Parallel() - coreComp, cryptoComp := createMockComponentHolders() - args := getArgumentsShard(coreComp, cryptoComp) - args.Messenger = createShardStubTopicHandler(factory.TransactionTopic, "") - icf, _ := interceptorscontainer.NewShardInterceptorsContainerFactory(args) + testCreateShardTopicShouldFailOnAllMessenger(t, "generateTxInterceptors_create", factory.TransactionTopic, "") + testCreateShardTopicShouldFailOnAllMessenger(t, "generateTxInterceptors_register", "", factory.TransactionTopic) - container, err := icf.Create() + testCreateShardTopicShouldFailOnAllMessenger(t, "generateUnsignedTxsInterceptors", factory.UnsignedTransactionTopic, "") - assert.Nil(t, container) - assert.Equal(t, errExpected, err) -} + testCreateShardTopicShouldFailOnAllMessenger(t, "generateRewardTxInterceptor", factory.RewardsTransactionTopic, "") -func TestShardInterceptorsContainerFactory_CreateTopicCreationHdrFailsShouldErr(t *testing.T) { - t.Parallel() + testCreateShardTopicShouldFailOnAllMessenger(t, "generateHeaderInterceptors", factory.ShardBlocksTopic, "") - coreComp, cryptoComp := createMockComponentHolders() - args := getArgumentsShard(coreComp, cryptoComp) - args.Messenger = createShardStubTopicHandler(factory.ShardBlocksTopic, "") - icf, _ := interceptorscontainer.NewShardInterceptorsContainerFactory(args) + testCreateShardTopicShouldFailOnAllMessenger(t, "generateMiniBlocksInterceptors", factory.MiniBlocksTopic, "") - container, err := icf.Create() + testCreateShardTopicShouldFailOnAllMessenger(t, "generateMetachainHeaderInterceptors", factory.MetachainBlocksTopic, "") - assert.Nil(t, container) - assert.Equal(t, errExpected, err) -} + testCreateShardTopicShouldFailOnAllMessenger(t, "generateTrieNodesInterceptors", factory.AccountTrieNodesTopic, "") -func TestShardInterceptorsContainerFactory_CreateTopicCreationMiniBlocksFailsShouldErr(t *testing.T) { - t.Parallel() + testCreateShardTopicShouldFailOnAllMessenger(t, "generateValidatorInfoInterceptor", common.ValidatorInfoTopic, "") - coreComp, cryptoComp := createMockComponentHolders() - args := getArgumentsShard(coreComp, cryptoComp) - args.Messenger = createShardStubTopicHandler(factory.MiniBlocksTopic, "") - icf, _ := interceptorscontainer.NewShardInterceptorsContainerFactory(args) + testCreateShardTopicShouldFailOnAllMessenger(t, "generateHeartbeatInterceptor", common.HeartbeatV2Topic, "") - container, err := icf.Create() + testCreateShardTopicShouldFailOnAllMessenger(t, "generatePeerShardIntercepto", common.ConnectionTopic, "") - assert.Nil(t, container) - assert.Equal(t, errExpected, err) + t.Run("generatePeerAuthenticationInterceptor_main", testCreateShardTopicShouldFail(common.PeerAuthenticationTopic, "")) } - -func TestShardInterceptorsContainerFactory_CreateTopicCreationMetachainHeadersFailsShouldErr(t *testing.T) { - t.Parallel() - - coreComp, cryptoComp := createMockComponentHolders() - args := getArgumentsShard(coreComp, cryptoComp) - args.Messenger = createShardStubTopicHandler(factory.MetachainBlocksTopic, "") - icf, _ := interceptorscontainer.NewShardInterceptorsContainerFactory(args) - - container, err := icf.Create() - - assert.Nil(t, container) - assert.Equal(t, errExpected, err) +func testCreateShardTopicShouldFailOnAllMessenger(t *testing.T, testNamePrefix string, matchStrToErrOnCreate string, matchStrToErrOnRegister string) { + t.Run(testNamePrefix+"main messenger", testCreateShardTopicShouldFail(matchStrToErrOnCreate, matchStrToErrOnRegister)) + t.Run(testNamePrefix+"full archive messenger", testCreateShardTopicShouldFail(matchStrToErrOnCreate, matchStrToErrOnRegister)) } -func TestShardInterceptorsContainerFactory_CreateRegisterTxFailsShouldErr(t *testing.T) { - t.Parallel() - - coreComp, cryptoComp := createMockComponentHolders() - args := getArgumentsShard(coreComp, cryptoComp) - args.Messenger = createShardStubTopicHandler("", factory.TransactionTopic) - icf, _ := interceptorscontainer.NewShardInterceptorsContainerFactory(args) - - container, err := icf.Create() +func testCreateShardTopicShouldFail(matchStrToErrOnCreate string, matchStrToErrOnRegister string) func(t *testing.T) { + return func(t *testing.T) { + t.Parallel() - assert.Nil(t, container) - assert.Equal(t, errExpected, err) -} + coreComp, cryptoComp := createMockComponentHolders() + args := getArgumentsShard(coreComp, cryptoComp) + if strings.Contains(t.Name(), "full_archive") { + args.NodeOperationMode = p2p.FullArchiveMode + args.FullArchiveMessenger = createShardStubTopicHandler(matchStrToErrOnCreate, matchStrToErrOnRegister) + } else { + args.MainMessenger = createShardStubTopicHandler(matchStrToErrOnCreate, matchStrToErrOnRegister) + } + icf, _ := interceptorscontainer.NewShardInterceptorsContainerFactory(args) -func TestShardInterceptorsContainerFactory_CreateRegisterHdrFailsShouldErr(t *testing.T) { - t.Parallel() + mainContainer, fullArchiveContainer, err := icf.Create() - coreComp, cryptoComp := createMockComponentHolders() - args := getArgumentsShard(coreComp, cryptoComp) - args.Messenger = createShardStubTopicHandler("", factory.ShardBlocksTopic) - icf, _ := interceptorscontainer.NewShardInterceptorsContainerFactory(args) - - container, err := icf.Create() - - assert.Nil(t, container) - assert.Equal(t, errExpected, err) -} - -func TestShardInterceptorsContainerFactory_CreateRegisterMiniBlocksFailsShouldErr(t *testing.T) { - t.Parallel() - - coreComp, cryptoComp := createMockComponentHolders() - args := getArgumentsShard(coreComp, cryptoComp) - args.Messenger = createShardStubTopicHandler("", factory.MiniBlocksTopic) - icf, _ := interceptorscontainer.NewShardInterceptorsContainerFactory(args) - - container, err := icf.Create() - - assert.Nil(t, container) - assert.Equal(t, errExpected, err) -} - -func TestShardInterceptorsContainerFactory_CreateRegisterMetachainHeadersShouldErr(t *testing.T) { - t.Parallel() - - coreComp, cryptoComp := createMockComponentHolders() - args := getArgumentsShard(coreComp, cryptoComp) - args.Messenger = createShardStubTopicHandler("", factory.MetachainBlocksTopic) - icf, _ := interceptorscontainer.NewShardInterceptorsContainerFactory(args) - - container, err := icf.Create() - - assert.Nil(t, container) - assert.Equal(t, errExpected, err) -} - -func TestShardInterceptorsContainerFactory_CreateRegisterTrieNodesShouldErr(t *testing.T) { - t.Parallel() - - coreComp, cryptoComp := createMockComponentHolders() - args := getArgumentsShard(coreComp, cryptoComp) - args.Messenger = createShardStubTopicHandler("", factory.AccountTrieNodesTopic) - icf, _ := interceptorscontainer.NewShardInterceptorsContainerFactory(args) - - container, err := icf.Create() - - assert.Nil(t, container) - assert.Equal(t, errExpected, err) + assert.Nil(t, mainContainer) + assert.Nil(t, fullArchiveContainer) + assert.Equal(t, errExpected, err) + } } func TestShardInterceptorsContainerFactory_NilSignaturesHandler(t *testing.T) { @@ -596,7 +549,7 @@ func TestShardInterceptorsContainerFactory_CreateShouldWork(t *testing.T) { coreComp, cryptoComp := createMockComponentHolders() args := getArgumentsShard(coreComp, cryptoComp) - args.Messenger = &mock.TopicHandlerStub{ + args.MainMessenger = &mock.TopicHandlerStub{ CreateTopicCalled: func(name string, createChannelForTopic bool) error { return nil }, @@ -608,66 +561,110 @@ func TestShardInterceptorsContainerFactory_CreateShouldWork(t *testing.T) { icf, _ := interceptorscontainer.NewShardInterceptorsContainerFactory(args) - container, err := icf.Create() + mainContainer, fullArchiveContainer, err := icf.Create() - assert.NotNil(t, container) + assert.NotNil(t, mainContainer) + assert.NotNil(t, fullArchiveContainer) assert.Nil(t, err) } func TestShardInterceptorsContainerFactory_With4ShardsShouldWork(t *testing.T) { t.Parallel() - noOfShards := 4 - - shardCoordinator := mock.NewMultipleShardsCoordinatorMock() - shardCoordinator.SetNoShards(uint32(noOfShards)) - shardCoordinator.CurrentShard = 1 - - nodesCoordinator := &shardingMocks.NodesCoordinatorMock{ - ShardId: 1, - ShardConsensusSize: 1, - MetaConsensusSize: 1, - NbShards: uint32(noOfShards), - } - - messenger := &mock.TopicHandlerStub{ - CreateTopicCalled: func(name string, createChannelForTopic bool) error { - return nil - }, - RegisterMessageProcessorCalled: func(topic string, identifier string, handler p2p.MessageProcessor) error { - return nil - }, - } - - coreComp, cryptoComp := createMockComponentHolders() - coreComp.AddrPubKeyConv = testscommon.NewPubkeyConverterMock(32) - args := getArgumentsShard(coreComp, cryptoComp) - args.ShardCoordinator = shardCoordinator - args.NodesCoordinator = nodesCoordinator - args.Messenger = messenger - args.PreferredPeersHolder = &p2pmocks.PeersHolderStub{} - - icf, _ := interceptorscontainer.NewShardInterceptorsContainerFactory(args) - - container, err := icf.Create() - - numInterceptorTxs := noOfShards + 1 - numInterceptorsUnsignedTxs := numInterceptorTxs - numInterceptorsRewardTxs := 1 - numInterceptorHeaders := 1 - numInterceptorMiniBlocks := noOfShards + 2 - numInterceptorMetachainHeaders := 1 - numInterceptorTrieNodes := 1 - numInterceptorPeerAuth := 1 - numInterceptorHeartbeat := 1 - numInterceptorsShardValidatorInfo := 1 - numInterceptorValidatorInfo := 1 - totalInterceptors := numInterceptorTxs + numInterceptorsUnsignedTxs + numInterceptorsRewardTxs + - numInterceptorHeaders + numInterceptorMiniBlocks + numInterceptorMetachainHeaders + numInterceptorTrieNodes + - numInterceptorPeerAuth + numInterceptorHeartbeat + numInterceptorsShardValidatorInfo + numInterceptorValidatorInfo - - assert.Nil(t, err) - assert.Equal(t, totalInterceptors, container.Len()) + t.Run("normal mode", func(t *testing.T) { + t.Parallel() + + noOfShards := 4 + + shardCoordinator := mock.NewMultipleShardsCoordinatorMock() + shardCoordinator.SetNoShards(uint32(noOfShards)) + shardCoordinator.CurrentShard = 1 + + nodesCoordinator := &shardingMocks.NodesCoordinatorMock{ + ShardId: 1, + ShardConsensusSize: 1, + MetaConsensusSize: 1, + NbShards: uint32(noOfShards), + } + + coreComp, cryptoComp := createMockComponentHolders() + coreComp.AddrPubKeyConv = testscommon.NewPubkeyConverterMock(32) + args := getArgumentsShard(coreComp, cryptoComp) + args.ShardCoordinator = shardCoordinator + args.NodesCoordinator = nodesCoordinator + args.PreferredPeersHolder = &p2pmocks.PeersHolderStub{} + + icf, _ := interceptorscontainer.NewShardInterceptorsContainerFactory(args) + + mainContainer, fullArchiveContainer, err := icf.Create() + + numInterceptorTxs := noOfShards + 1 + numInterceptorsUnsignedTxs := numInterceptorTxs + numInterceptorsRewardTxs := 1 + numInterceptorHeaders := 1 + numInterceptorMiniBlocks := noOfShards + 2 + numInterceptorMetachainHeaders := 1 + numInterceptorTrieNodes := 1 + numInterceptorPeerAuth := 1 + numInterceptorHeartbeat := 1 + numInterceptorsShardValidatorInfo := 1 + numInterceptorValidatorInfo := 1 + totalInterceptors := numInterceptorTxs + numInterceptorsUnsignedTxs + numInterceptorsRewardTxs + + numInterceptorHeaders + numInterceptorMiniBlocks + numInterceptorMetachainHeaders + numInterceptorTrieNodes + + numInterceptorPeerAuth + numInterceptorHeartbeat + numInterceptorsShardValidatorInfo + numInterceptorValidatorInfo + + assert.Nil(t, err) + assert.Equal(t, totalInterceptors, mainContainer.Len()) + assert.Equal(t, 0, fullArchiveContainer.Len()) + }) + + t.Run("full archive mode", func(t *testing.T) { + t.Parallel() + + noOfShards := 4 + + shardCoordinator := mock.NewMultipleShardsCoordinatorMock() + shardCoordinator.SetNoShards(uint32(noOfShards)) + shardCoordinator.CurrentShard = 1 + + nodesCoordinator := &shardingMocks.NodesCoordinatorMock{ + ShardId: 1, + ShardConsensusSize: 1, + MetaConsensusSize: 1, + NbShards: uint32(noOfShards), + } + + coreComp, cryptoComp := createMockComponentHolders() + coreComp.AddrPubKeyConv = testscommon.NewPubkeyConverterMock(32) + args := getArgumentsShard(coreComp, cryptoComp) + args.NodeOperationMode = p2p.FullArchiveMode + args.ShardCoordinator = shardCoordinator + args.NodesCoordinator = nodesCoordinator + args.PreferredPeersHolder = &p2pmocks.PeersHolderStub{} + + icf, _ := interceptorscontainer.NewShardInterceptorsContainerFactory(args) + + mainContainer, fullArchiveContainer, err := icf.Create() + + numInterceptorTxs := noOfShards + 1 + numInterceptorsUnsignedTxs := numInterceptorTxs + numInterceptorsRewardTxs := 1 + numInterceptorHeaders := 1 + numInterceptorMiniBlocks := noOfShards + 2 + numInterceptorMetachainHeaders := 1 + numInterceptorTrieNodes := 1 + numInterceptorPeerAuth := 1 + numInterceptorHeartbeat := 1 + numInterceptorsShardValidatorInfo := 1 + numInterceptorValidatorInfo := 1 + totalInterceptors := numInterceptorTxs + numInterceptorsUnsignedTxs + numInterceptorsRewardTxs + + numInterceptorHeaders + numInterceptorMiniBlocks + numInterceptorMetachainHeaders + numInterceptorTrieNodes + + numInterceptorPeerAuth + numInterceptorHeartbeat + numInterceptorsShardValidatorInfo + numInterceptorValidatorInfo + + assert.Nil(t, err) + assert.Equal(t, totalInterceptors, mainContainer.Len()) + assert.Equal(t, totalInterceptors-1, fullArchiveContainer.Len()) // no peerAuthentication needed + }) } func createMockComponentHolders() (*mock.CoreComponentsMock, *mock.CryptoComponentsMock) { @@ -711,7 +708,8 @@ func getArgumentsShard( Accounts: &stateMock.AccountsStub{}, ShardCoordinator: mock.NewOneShardCoordinatorMock(), NodesCoordinator: shardingMocks.NewNodesCoordinatorMock(), - Messenger: &mock.TopicHandlerStub{}, + MainMessenger: &mock.TopicHandlerStub{}, + FullArchiveMessenger: &mock.TopicHandlerStub{}, Store: createShardStore(), DataPool: createShardDataPools(), MaxTxNonceDeltaAllowed: maxTxNonceDeltaAllowed, @@ -731,7 +729,8 @@ func getArgumentsShard( PeerSignatureHandler: &mock.PeerSignatureHandlerStub{}, SignaturesHandler: &mock.SignaturesHandlerStub{}, HeartbeatExpiryTimespanInSec: 30, - PeerShardMapper: &p2pmocks.NetworkShardingCollectorStub{}, + MainPeerShardMapper: &p2pmocks.NetworkShardingCollectorStub{}, + FullArchivePeerShardMapper: &p2pmocks.NetworkShardingCollectorStub{}, HardforkTrigger: &testscommon.HardforkTriggerStub{}, } } diff --git a/process/interface.go b/process/interface.go index 806fd3f84de..8b131f1d7da 100644 --- a/process/interface.go +++ b/process/interface.go @@ -385,7 +385,7 @@ type InterceptorsContainer interface { // InterceptorsContainerFactory defines the functionality to create an interceptors container type InterceptorsContainerFactory interface { - Create() (InterceptorsContainer, error) + Create() (InterceptorsContainer, InterceptorsContainer, error) IsInterfaceNil() bool } diff --git a/process/mock/topicHandlerStub.go b/process/mock/topicHandlerStub.go index 7484a5f677d..7578b383de3 100644 --- a/process/mock/topicHandlerStub.go +++ b/process/mock/topicHandlerStub.go @@ -14,30 +14,39 @@ type TopicHandlerStub struct { } // HasTopic - -func (ths *TopicHandlerStub) HasTopic(name string) bool { - return ths.HasTopicCalled(name) +func (stub *TopicHandlerStub) HasTopic(name string) bool { + if stub.HasTopicCalled != nil { + return stub.HasTopicCalled(name) + } + return false } // CreateTopic - -func (ths *TopicHandlerStub) CreateTopic(name string, createChannelForTopic bool) error { - return ths.CreateTopicCalled(name, createChannelForTopic) +func (stub *TopicHandlerStub) CreateTopic(name string, createChannelForTopic bool) error { + if stub.CreateTopicCalled != nil { + return stub.CreateTopicCalled(name, createChannelForTopic) + } + return nil } // RegisterMessageProcessor - -func (ths *TopicHandlerStub) RegisterMessageProcessor(topic string, identifier string, handler p2p.MessageProcessor) error { - return ths.RegisterMessageProcessorCalled(topic, identifier, handler) +func (stub *TopicHandlerStub) RegisterMessageProcessor(topic string, identifier string, handler p2p.MessageProcessor) error { + if stub.RegisterMessageProcessorCalled != nil { + return stub.RegisterMessageProcessorCalled(topic, identifier, handler) + } + return nil } // ID - -func (ths *TopicHandlerStub) ID() core.PeerID { - if ths.IDCalled != nil { - return ths.IDCalled() +func (stub *TopicHandlerStub) ID() core.PeerID { + if stub.IDCalled != nil { + return stub.IDCalled() } return "peer ID" } // IsInterfaceNil returns true if there is no value under the interface -func (ths *TopicHandlerStub) IsInterfaceNil() bool { - return ths == nil +func (stub *TopicHandlerStub) IsInterfaceNil() bool { + return stub == nil } diff --git a/process/throttle/antiflood/factory/p2pAntifloodAndBlacklistFactory.go b/process/throttle/antiflood/factory/p2pAntifloodAndBlacklistFactory.go index e77e3f03494..bfbf29617c6 100644 --- a/process/throttle/antiflood/factory/p2pAntifloodAndBlacklistFactory.go +++ b/process/throttle/antiflood/factory/p2pAntifloodAndBlacklistFactory.go @@ -8,6 +8,7 @@ import ( "github.com/multiversx/mx-chain-core-go/core" "github.com/multiversx/mx-chain-core-go/core/check" "github.com/multiversx/mx-chain-go/config" + antifloodDebug "github.com/multiversx/mx-chain-go/debug/antiflood" "github.com/multiversx/mx-chain-go/p2p" "github.com/multiversx/mx-chain-go/process" "github.com/multiversx/mx-chain-go/process/throttle/antiflood" @@ -130,6 +131,18 @@ func initP2PAntiFloodComponents( return nil, err } + if mainConfig.Debug.Antiflood.Enabled { + debugger, errDebugger := antifloodDebug.NewAntifloodDebugger(mainConfig.Debug.Antiflood) + if errDebugger != nil { + return nil, errDebugger + } + + err = p2pAntiflood.SetDebugger(debugger) + if err != nil { + return nil, err + } + } + startResettingTopicFloodPreventer(ctx, topicFloodPreventer, topicMaxMessages) startSweepingTimeCaches(ctx, p2pPeerBlackList, publicKeysCache) diff --git a/storage/disabled/cache.go b/storage/disabled/cache.go new file mode 100644 index 00000000000..685e8046c79 --- /dev/null +++ b/storage/disabled/cache.go @@ -0,0 +1,80 @@ +package disabled + +type cache struct { +} + +// NewCache returns a new disabled Cacher implementation +func NewCache() *cache { + return &cache{} +} + +// Clear does nothing as it is disabled +func (c *cache) Clear() { +} + +// Put returns false as it is disabled +func (c *cache) Put(_ []byte, _ interface{}, _ int) (evicted bool) { + return false +} + +// Get returns nil and false as it is disabled +func (c *cache) Get(_ []byte) (value interface{}, ok bool) { + return nil, false +} + +// Has returns false as it is disabled +func (c *cache) Has(_ []byte) bool { + return false +} + +// Peek returns nil and false as it is disabled +func (c *cache) Peek(_ []byte) (value interface{}, ok bool) { + return nil, false +} + +// HasOrAdd returns false and false as it is disabled +func (c *cache) HasOrAdd(_ []byte, _ interface{}, _ int) (has, added bool) { + return false, false +} + +// Remove does nothing as it is disabled +func (c *cache) Remove(_ []byte) { +} + +// Keys returns an empty slice as it is disabled +func (c *cache) Keys() [][]byte { + return make([][]byte, 0) +} + +// Len returns 0 as it is disabled +func (c *cache) Len() int { + return 0 +} + +// SizeInBytesContained returns 0 as it is disabled +func (c *cache) SizeInBytesContained() uint64 { + return 0 +} + +// MaxSize returns 0 as it is disabled +func (c *cache) MaxSize() int { + return 0 +} + +// RegisterHandler does nothing as it is disabled +func (c *cache) RegisterHandler(_ func(key []byte, value interface{}), _ string) { +} + +// UnRegisterHandler does nothing as it is disabled +func (c *cache) UnRegisterHandler(_ string) { +} + +// Close returns nil as it is disabled +func (c *cache) Close() error { + return nil +} + +// IsInterfaceNil returns true if there is no value under the interface +func (c *cache) IsInterfaceNil() bool { + return c == nil +} diff --git a/testscommon/components/default.go b/testscommon/components/default.go index 38df0c22211..a609909ecdf 100644 --- a/testscommon/components/default.go +++ b/testscommon/components/default.go @@ -137,7 +137,8 @@ func GetDefaultProcessComponents(shardCoordinator sharding.Coordinator) *mock.Pr ReqHandler: &testscommon.RequestHandlerStub{}, TxLogsProcess: &mock.TxLogProcessorMock{}, HeaderConstructValidator: &mock.HeaderValidatorStub{}, - PeerMapper: &p2pmocks.NetworkShardingCollectorStub{}, + MainPeerMapper: &p2pmocks.NetworkShardingCollectorStub{}, + FullArchivePeerMapper: &p2pmocks.NetworkShardingCollectorStub{}, FallbackHdrValidator: &testscommon.FallBackHeaderValidatorStub{}, NodeRedundancyHandlerInternal: &mock.RedundancyHandlerStub{ IsRedundancyNodeCalled: func() bool { diff --git a/update/factory/exportHandlerFactory.go b/update/factory/exportHandlerFactory.go index bb80be0101a..8b8a02237fa 100644 --- a/update/factory/exportHandlerFactory.go +++ b/update/factory/exportHandlerFactory.go @@ -37,79 +37,85 @@ var log = logger.GetOrCreate("update/factory") // ArgsExporter is the argument structure to create a new exporter type ArgsExporter struct { - CoreComponents process.CoreComponentsHolder - CryptoComponents process.CryptoComponentsHolder - StatusCoreComponents process.StatusCoreComponentsHolder - HeaderValidator epochStart.HeaderValidator - DataPool dataRetriever.PoolsHolder - StorageService dataRetriever.StorageService - RequestHandler process.RequestHandler - ShardCoordinator sharding.Coordinator - Messenger p2p.Messenger - ActiveAccountsDBs map[state.AccountsDbIdentifier]state.AccountsAdapter - ExistingResolvers dataRetriever.ResolversContainer - ExistingRequesters dataRetriever.RequestersContainer - ExportFolder string - ExportTriesStorageConfig config.StorageConfig - ExportStateStorageConfig config.StorageConfig - ExportStateKeysConfig config.StorageConfig - MaxTrieLevelInMemory uint - WhiteListHandler process.WhiteListHandler - WhiteListerVerifiedTxs process.WhiteListHandler - InterceptorsContainer process.InterceptorsContainer - NodesCoordinator nodesCoordinator.NodesCoordinator - HeaderSigVerifier process.InterceptedHeaderSigVerifier - HeaderIntegrityVerifier process.HeaderIntegrityVerifier - ValidityAttester process.ValidityAttester - InputAntifloodHandler process.P2PAntifloodHandler - OutputAntifloodHandler process.P2PAntifloodHandler - RoundHandler process.RoundHandler - PeersRatingHandler dataRetriever.PeersRatingHandler - InterceptorDebugConfig config.InterceptorResolverDebugConfig - MaxHardCapForMissingNodes int - NumConcurrentTrieSyncers int - TrieSyncerVersion int - CheckNodesOnDisk bool + CoreComponents process.CoreComponentsHolder + CryptoComponents process.CryptoComponentsHolder + StatusCoreComponents process.StatusCoreComponentsHolder + HeaderValidator epochStart.HeaderValidator + DataPool dataRetriever.PoolsHolder + StorageService dataRetriever.StorageService + RequestHandler process.RequestHandler + ShardCoordinator sharding.Coordinator + MainMessenger p2p.Messenger + FullArchiveMessenger p2p.Messenger + ActiveAccountsDBs map[state.AccountsDbIdentifier]state.AccountsAdapter + ExistingResolvers dataRetriever.ResolversContainer + ExistingRequesters dataRetriever.RequestersContainer + ExportFolder string + ExportTriesStorageConfig config.StorageConfig + ExportStateStorageConfig config.StorageConfig + ExportStateKeysConfig config.StorageConfig + MaxTrieLevelInMemory uint + WhiteListHandler process.WhiteListHandler + WhiteListerVerifiedTxs process.WhiteListHandler + MainInterceptorsContainer process.InterceptorsContainer + FullArchiveInterceptorsContainer process.InterceptorsContainer + NodesCoordinator nodesCoordinator.NodesCoordinator + HeaderSigVerifier process.InterceptedHeaderSigVerifier + HeaderIntegrityVerifier process.HeaderIntegrityVerifier + ValidityAttester process.ValidityAttester + InputAntifloodHandler process.P2PAntifloodHandler + OutputAntifloodHandler process.P2PAntifloodHandler + RoundHandler process.RoundHandler + PeersRatingHandler dataRetriever.PeersRatingHandler + InterceptorDebugConfig config.InterceptorResolverDebugConfig + MaxHardCapForMissingNodes int + NumConcurrentTrieSyncers int + TrieSyncerVersion int + CheckNodesOnDisk bool + NodeOperationMode p2p.NodeOperation } type exportHandlerFactory struct { - CoreComponents process.CoreComponentsHolder - CryptoComponents process.CryptoComponentsHolder - statusCoreComponents process.StatusCoreComponentsHolder - headerValidator epochStart.HeaderValidator - dataPool dataRetriever.PoolsHolder - storageService dataRetriever.StorageService - requestHandler process.RequestHandler - shardCoordinator sharding.Coordinator - messenger p2p.Messenger - activeAccountsDBs map[state.AccountsDbIdentifier]state.AccountsAdapter - exportFolder string - exportTriesStorageConfig config.StorageConfig - exportStateStorageConfig config.StorageConfig - exportStateKeysConfig config.StorageConfig - maxTrieLevelInMemory uint - whiteListHandler process.WhiteListHandler - whiteListerVerifiedTxs process.WhiteListHandler - interceptorsContainer process.InterceptorsContainer - existingResolvers dataRetriever.ResolversContainer - existingRequesters dataRetriever.RequestersContainer - epochStartTrigger epochStart.TriggerHandler - accounts state.AccountsAdapter - nodesCoordinator nodesCoordinator.NodesCoordinator - headerSigVerifier process.InterceptedHeaderSigVerifier - headerIntegrityVerifier process.HeaderIntegrityVerifier - validityAttester process.ValidityAttester - resolverContainer dataRetriever.ResolversContainer - requestersContainer dataRetriever.RequestersContainer - inputAntifloodHandler process.P2PAntifloodHandler - outputAntifloodHandler process.P2PAntifloodHandler - roundHandler process.RoundHandler - peersRatingHandler dataRetriever.PeersRatingHandler - interceptorDebugConfig config.InterceptorResolverDebugConfig - maxHardCapForMissingNodes int - numConcurrentTrieSyncers int - trieSyncerVersion int - checkNodesOnDisk bool + CoreComponents process.CoreComponentsHolder + CryptoComponents process.CryptoComponentsHolder + statusCoreComponents process.StatusCoreComponentsHolder + headerValidator epochStart.HeaderValidator + dataPool dataRetriever.PoolsHolder + storageService dataRetriever.StorageService + requestHandler process.RequestHandler + shardCoordinator sharding.Coordinator + mainMessenger p2p.Messenger + fullArchiveMessenger p2p.Messenger + activeAccountsDBs map[state.AccountsDbIdentifier]state.AccountsAdapter + exportFolder string + exportTriesStorageConfig config.StorageConfig + exportStateStorageConfig config.StorageConfig + exportStateKeysConfig config.StorageConfig + maxTrieLevelInMemory uint + whiteListHandler process.WhiteListHandler + whiteListerVerifiedTxs process.WhiteListHandler + mainInterceptorsContainer process.InterceptorsContainer + fullArchiveInterceptorsContainer process.InterceptorsContainer + existingResolvers dataRetriever.ResolversContainer + existingRequesters dataRetriever.RequestersContainer + epochStartTrigger epochStart.TriggerHandler + accounts state.AccountsAdapter + nodesCoordinator nodesCoordinator.NodesCoordinator + headerSigVerifier process.InterceptedHeaderSigVerifier + headerIntegrityVerifier process.HeaderIntegrityVerifier + validityAttester process.ValidityAttester + resolverContainer dataRetriever.ResolversContainer + requestersContainer dataRetriever.RequestersContainer + inputAntifloodHandler process.P2PAntifloodHandler + outputAntifloodHandler process.P2PAntifloodHandler + roundHandler process.RoundHandler + peersRatingHandler dataRetriever.PeersRatingHandler + interceptorDebugConfig config.InterceptorResolverDebugConfig + maxHardCapForMissingNodes int + numConcurrentTrieSyncers int + trieSyncerVersion int + checkNodesOnDisk bool + nodeOperationMode p2p.NodeOperation } // NewExportHandlerFactory creates an exporter factory @@ -144,8 +150,11 @@ func NewExportHandlerFactory(args ArgsExporter) (*exportHandlerFactory, error) { if check.IfNil(args.RequestHandler) { return nil, update.ErrNilRequestHandler } - if check.IfNil(args.Messenger) { - return nil, update.ErrNilMessenger + if check.IfNil(args.MainMessenger) { + return nil, fmt.Errorf("%w on main network", update.ErrNilMessenger) + } + if check.IfNil(args.FullArchiveMessenger) { + return nil, fmt.Errorf("%w on full archive network", update.ErrNilMessenger) } if args.ActiveAccountsDBs == nil { return nil, update.ErrNilAccounts @@ -156,8 +165,11 @@ func NewExportHandlerFactory(args ArgsExporter) (*exportHandlerFactory, error) { if check.IfNil(args.WhiteListerVerifiedTxs) { return nil, update.ErrNilWhiteListHandler } - if check.IfNil(args.InterceptorsContainer) { - return nil, update.ErrNilInterceptorsContainer + if check.IfNil(args.MainInterceptorsContainer) { + return nil, fmt.Errorf("%w on main network", update.ErrNilInterceptorsContainer) + } + if check.IfNil(args.FullArchiveInterceptorsContainer) { + return nil, fmt.Errorf("%w on full archive network", update.ErrNilInterceptorsContainer) } if check.IfNil(args.ExistingResolvers) { return nil, update.ErrNilResolverContainer @@ -238,40 +250,43 @@ func NewExportHandlerFactory(args ArgsExporter) (*exportHandlerFactory, error) { } e := &exportHandlerFactory{ - CoreComponents: args.CoreComponents, - CryptoComponents: args.CryptoComponents, - headerValidator: args.HeaderValidator, - dataPool: args.DataPool, - storageService: args.StorageService, - requestHandler: args.RequestHandler, - shardCoordinator: args.ShardCoordinator, - messenger: args.Messenger, - activeAccountsDBs: args.ActiveAccountsDBs, - exportFolder: args.ExportFolder, - exportTriesStorageConfig: args.ExportTriesStorageConfig, - exportStateStorageConfig: args.ExportStateStorageConfig, - exportStateKeysConfig: args.ExportStateKeysConfig, - interceptorsContainer: args.InterceptorsContainer, - whiteListHandler: args.WhiteListHandler, - whiteListerVerifiedTxs: args.WhiteListerVerifiedTxs, - existingResolvers: args.ExistingResolvers, - existingRequesters: args.ExistingRequesters, - accounts: args.ActiveAccountsDBs[state.UserAccountsState], - nodesCoordinator: args.NodesCoordinator, - headerSigVerifier: args.HeaderSigVerifier, - headerIntegrityVerifier: args.HeaderIntegrityVerifier, - validityAttester: args.ValidityAttester, - inputAntifloodHandler: args.InputAntifloodHandler, - outputAntifloodHandler: args.OutputAntifloodHandler, - maxTrieLevelInMemory: args.MaxTrieLevelInMemory, - roundHandler: args.RoundHandler, - peersRatingHandler: args.PeersRatingHandler, - interceptorDebugConfig: args.InterceptorDebugConfig, - maxHardCapForMissingNodes: args.MaxHardCapForMissingNodes, - numConcurrentTrieSyncers: args.NumConcurrentTrieSyncers, - trieSyncerVersion: args.TrieSyncerVersion, - checkNodesOnDisk: args.CheckNodesOnDisk, - statusCoreComponents: args.StatusCoreComponents, + CoreComponents: args.CoreComponents, + CryptoComponents: args.CryptoComponents, + headerValidator: args.HeaderValidator, + dataPool: args.DataPool, + storageService: args.StorageService, + requestHandler: args.RequestHandler, + shardCoordinator: args.ShardCoordinator, + mainMessenger: args.MainMessenger, + fullArchiveMessenger: args.FullArchiveMessenger, + activeAccountsDBs: args.ActiveAccountsDBs, + exportFolder: args.ExportFolder, + exportTriesStorageConfig: args.ExportTriesStorageConfig, + exportStateStorageConfig: args.ExportStateStorageConfig, + exportStateKeysConfig: args.ExportStateKeysConfig, + mainInterceptorsContainer: args.MainInterceptorsContainer, + fullArchiveInterceptorsContainer: args.FullArchiveInterceptorsContainer, + whiteListHandler: args.WhiteListHandler, + whiteListerVerifiedTxs: args.WhiteListerVerifiedTxs, + existingResolvers: args.ExistingResolvers, + existingRequesters: args.ExistingRequesters, + accounts: args.ActiveAccountsDBs[state.UserAccountsState], + nodesCoordinator: args.NodesCoordinator, + headerSigVerifier: args.HeaderSigVerifier, + headerIntegrityVerifier: args.HeaderIntegrityVerifier, + validityAttester: args.ValidityAttester, + inputAntifloodHandler: args.InputAntifloodHandler, + outputAntifloodHandler: args.OutputAntifloodHandler, + maxTrieLevelInMemory: args.MaxTrieLevelInMemory, + roundHandler: args.RoundHandler, + peersRatingHandler: args.PeersRatingHandler, + interceptorDebugConfig: args.InterceptorDebugConfig, + maxHardCapForMissingNodes: args.MaxHardCapForMissingNodes, + numConcurrentTrieSyncers: args.NumConcurrentTrieSyncers, + trieSyncerVersion: args.TrieSyncerVersion, + checkNodesOnDisk: args.CheckNodesOnDisk, + statusCoreComponents: args.StatusCoreComponents, + nodeOperationMode: args.NodeOperationMode, } return e, nil @@ -351,7 +366,7 @@ func (e *exportHandlerFactory) Create() (update.ExportHandler, error) { argsResolvers := ArgsNewResolversContainerFactory{ ShardCoordinator: e.shardCoordinator, - Messenger: e.messenger, + Messenger: e.mainMessenger, Marshalizer: e.CoreComponents.InternalMarshalizer(), DataTrieContainer: dataTries, ExistingResolvers: e.existingResolvers, @@ -379,7 +394,7 @@ func (e *exportHandlerFactory) Create() (update.ExportHandler, error) { argsRequesters := ArgsRequestersContainerFactory{ ShardCoordinator: e.shardCoordinator, - Messenger: e.messenger, + Messenger: e.mainMessenger, Marshaller: e.CoreComponents.InternalMarshalizer(), ExistingRequesters: e.existingRequesters, OutputAntifloodHandler: e.outputAntifloodHandler, @@ -545,7 +560,7 @@ func (e *exportHandlerFactory) Create() (update.ExportHandler, error) { return nil, err } - e.interceptorsContainer.Iterate(func(key string, interceptor process.Interceptor) bool { + e.mainInterceptorsContainer.Iterate(func(key string, interceptor process.Interceptor) bool { errNotCritical = interceptor.SetInterceptedDebugHandler(debugger) if errNotCritical != nil { log.Warn("error setting debugger", "interceptor", key, "error", errNotCritical) @@ -568,38 +583,42 @@ func (e *exportHandlerFactory) prepareFolders(folder string) error { func (e *exportHandlerFactory) createInterceptors() error { argsInterceptors := ArgsNewFullSyncInterceptorsContainerFactory{ - CoreComponents: e.CoreComponents, - CryptoComponents: e.CryptoComponents, - Accounts: e.accounts, - ShardCoordinator: e.shardCoordinator, - NodesCoordinator: e.nodesCoordinator, - Messenger: e.messenger, - Store: e.storageService, - DataPool: e.dataPool, - MaxTxNonceDeltaAllowed: math.MaxInt32, - TxFeeHandler: &disabled.FeeHandler{}, - BlockBlackList: cache.NewTimeCache(time.Second), - HeaderSigVerifier: e.headerSigVerifier, - HeaderIntegrityVerifier: e.headerIntegrityVerifier, - SizeCheckDelta: math.MaxUint32, - ValidityAttester: e.validityAttester, - EpochStartTrigger: e.epochStartTrigger, - WhiteListHandler: e.whiteListHandler, - WhiteListerVerifiedTxs: e.whiteListerVerifiedTxs, - InterceptorsContainer: e.interceptorsContainer, - AntifloodHandler: e.inputAntifloodHandler, + CoreComponents: e.CoreComponents, + CryptoComponents: e.CryptoComponents, + Accounts: e.accounts, + ShardCoordinator: e.shardCoordinator, + NodesCoordinator: e.nodesCoordinator, + MainMessenger: e.mainMessenger, + FullArchiveMessenger: e.fullArchiveMessenger, + Store: e.storageService, + DataPool: e.dataPool, + MaxTxNonceDeltaAllowed: math.MaxInt32, + TxFeeHandler: &disabled.FeeHandler{}, + BlockBlackList: cache.NewTimeCache(time.Second), + HeaderSigVerifier: e.headerSigVerifier, + HeaderIntegrityVerifier: e.headerIntegrityVerifier, + SizeCheckDelta: math.MaxUint32, + ValidityAttester: e.validityAttester, + EpochStartTrigger: e.epochStartTrigger, + WhiteListHandler: e.whiteListHandler, + WhiteListerVerifiedTxs: e.whiteListerVerifiedTxs, + MainInterceptorsContainer: e.mainInterceptorsContainer, + FullArchiveInterceptorsContainer: e.fullArchiveInterceptorsContainer, + NodeOperationMode: e.nodeOperationMode, + AntifloodHandler: e.inputAntifloodHandler, } fullSyncInterceptors, err := NewFullSyncInterceptorsContainerFactory(argsInterceptors) if err != nil { return err } - interceptorsContainer, err := fullSyncInterceptors.Create() + mainInterceptorsContainer, fullArchiveInterceptorsContainer, err := fullSyncInterceptors.Create() if err != nil { return err } - e.interceptorsContainer = interceptorsContainer + e.mainInterceptorsContainer = mainInterceptorsContainer + e.fullArchiveInterceptorsContainer = fullArchiveInterceptorsContainer return nil } diff --git a/update/factory/fullSyncInterceptors.go b/update/factory/fullSyncInterceptors.go index 545b4114f51..4c88c26945b 100644 --- a/update/factory/fullSyncInterceptors.go +++ b/update/factory/fullSyncInterceptors.go @@ -1,12 +1,15 @@ package factory import ( + "fmt" + "github.com/multiversx/mx-chain-core-go/core" "github.com/multiversx/mx-chain-core-go/core/check" "github.com/multiversx/mx-chain-core-go/core/throttler" "github.com/multiversx/mx-chain-core-go/marshal" "github.com/multiversx/mx-chain-go/common" "github.com/multiversx/mx-chain-go/dataRetriever" + "github.com/multiversx/mx-chain-go/p2p" "github.com/multiversx/mx-chain-go/process" "github.com/multiversx/mx-chain-go/process/dataValidators" "github.com/multiversx/mx-chain-go/process/factory" @@ -27,12 +30,14 @@ const numGoRoutines = 2000 // fullSyncInterceptorsContainerFactory will handle the creation the interceptors container for shards type fullSyncInterceptorsContainerFactory struct { - container process.InterceptorsContainer + mainContainer process.InterceptorsContainer + fullArchiveContainer process.InterceptorsContainer shardCoordinator sharding.Coordinator accounts state.AccountsAdapter store dataRetriever.StorageService dataPool dataRetriever.PoolsHolder - messenger process.TopicHandler + mainMessenger process.TopicHandler + fullArchiveMessenger process.TopicHandler nodesCoordinator nodesCoordinator.NodesCoordinator blockBlackList process.TimeCacher argInterceptorFactory *interceptorFactory.ArgInterceptedDataFactory @@ -43,30 +48,34 @@ type fullSyncInterceptorsContainerFactory struct { whiteListerVerifiedTxs update.WhiteListHandler antifloodHandler process.P2PAntifloodHandler preferredPeersHolder update.PreferredPeersHolderHandler + nodeOperationMode p2p.NodeOperation } // ArgsNewFullSyncInterceptorsContainerFactory holds the arguments needed for fullSyncInterceptorsContainerFactory type ArgsNewFullSyncInterceptorsContainerFactory struct { - CoreComponents process.CoreComponentsHolder - CryptoComponents process.CryptoComponentsHolder - Accounts state.AccountsAdapter - ShardCoordinator sharding.Coordinator - NodesCoordinator nodesCoordinator.NodesCoordinator - Messenger process.TopicHandler - Store dataRetriever.StorageService - DataPool dataRetriever.PoolsHolder - MaxTxNonceDeltaAllowed int - TxFeeHandler process.FeeHandler - BlockBlackList process.TimeCacher - HeaderSigVerifier process.InterceptedHeaderSigVerifier - HeaderIntegrityVerifier process.HeaderIntegrityVerifier - SizeCheckDelta uint32 - ValidityAttester process.ValidityAttester - EpochStartTrigger process.EpochStartTriggerHandler - WhiteListHandler update.WhiteListHandler - WhiteListerVerifiedTxs update.WhiteListHandler - InterceptorsContainer process.InterceptorsContainer - AntifloodHandler process.P2PAntifloodHandler + CoreComponents process.CoreComponentsHolder + CryptoComponents process.CryptoComponentsHolder + Accounts state.AccountsAdapter + ShardCoordinator sharding.Coordinator + NodesCoordinator nodesCoordinator.NodesCoordinator + MainMessenger process.TopicHandler + FullArchiveMessenger process.TopicHandler + Store dataRetriever.StorageService + DataPool dataRetriever.PoolsHolder + MaxTxNonceDeltaAllowed int + TxFeeHandler process.FeeHandler + BlockBlackList process.TimeCacher + HeaderSigVerifier process.InterceptedHeaderSigVerifier + HeaderIntegrityVerifier process.HeaderIntegrityVerifier + SizeCheckDelta uint32 + ValidityAttester process.ValidityAttester + EpochStartTrigger process.EpochStartTriggerHandler + WhiteListHandler update.WhiteListHandler + WhiteListerVerifiedTxs update.WhiteListHandler + MainInterceptorsContainer process.InterceptorsContainer + FullArchiveInterceptorsContainer process.InterceptorsContainer + AntifloodHandler process.P2PAntifloodHandler + NodeOperationMode p2p.NodeOperation } // NewFullSyncInterceptorsContainerFactory is responsible for creating a new interceptors factory object @@ -80,7 +89,8 @@ func NewFullSyncInterceptorsContainerFactory( args.Accounts, args.Store, args.DataPool, - args.Messenger, + args.MainMessenger, + args.FullArchiveMessenger, args.NodesCoordinator, args.BlockBlackList, args.WhiteListerVerifiedTxs, @@ -111,8 +121,11 @@ func NewFullSyncInterceptorsContainerFactory( if check.IfNil(args.EpochStartTrigger) { return nil, process.ErrNilEpochStartTrigger } - if check.IfNil(args.InterceptorsContainer) { - return nil, update.ErrNilInterceptorsContainer + if check.IfNil(args.MainInterceptorsContainer) { + return nil, fmt.Errorf("%w on main network", update.ErrNilInterceptorsContainer) + } + if check.IfNil(args.FullArchiveInterceptorsContainer) { + return nil, fmt.Errorf("%w on full archive network", update.ErrNilInterceptorsContainer) } if check.IfNil(args.WhiteListHandler) { return nil, update.ErrNilWhiteListHandler @@ -136,10 +149,12 @@ func NewFullSyncInterceptorsContainerFactory( } icf := &fullSyncInterceptorsContainerFactory{ - container: args.InterceptorsContainer, + mainContainer: args.MainInterceptorsContainer, + fullArchiveContainer: args.FullArchiveInterceptorsContainer, accounts: args.Accounts, shardCoordinator: args.ShardCoordinator, - messenger: args.Messenger, + mainMessenger: args.MainMessenger, + fullArchiveMessenger: args.FullArchiveMessenger, store: args.Store, dataPool: args.DataPool, nodesCoordinator: args.NodesCoordinator, @@ -151,6 +166,7 @@ func NewFullSyncInterceptorsContainerFactory( antifloodHandler: args.AntifloodHandler, //TODO: inject the real peers holder once we have the peers mapping before epoch bootstrap finishes preferredPeersHolder: disabled.NewPreferredPeersHolder(), + nodeOperationMode: args.NodeOperationMode, } icf.globalThrottler, err = throttler.NewNumGoRoutinesThrottler(numGoRoutines) @@ -162,43 +178,43 @@ func NewFullSyncInterceptorsContainerFactory( } // Create returns an interceptor container that will hold all interceptors in the system -func (ficf *fullSyncInterceptorsContainerFactory) Create() (process.InterceptorsContainer, error) { +func (ficf *fullSyncInterceptorsContainerFactory) Create() (process.InterceptorsContainer, process.InterceptorsContainer, error) { err := ficf.generateTxInterceptors() if err != nil { - return nil, err + return nil, nil, err } err = ficf.generateUnsignedTxsInterceptors() if err != nil { - return nil, err + return nil, nil, err } err = ficf.generateRewardTxInterceptors() if err != nil { - return nil, err + return nil, nil, err } err = ficf.generateMiniBlocksInterceptors() if err != nil { - return nil, err + return nil, nil, err } err = ficf.generateMetachainHeaderInterceptors() if err != nil { - return nil, err + return nil, nil, err } err = ficf.generateShardHeaderInterceptors() if err != nil { - return nil, err + return nil, nil, err } err = ficf.generateTrieNodesInterceptors() if err != nil { - return nil, err + return nil, nil, err } - return ficf.container, nil + return ficf.mainContainer, ficf.fullArchiveContainer, nil } func checkBaseParams( @@ -208,7 +224,8 @@ func checkBaseParams( accounts state.AccountsAdapter, store dataRetriever.StorageService, dataPool dataRetriever.PoolsHolder, - messenger process.TopicHandler, + mainMessenger process.TopicHandler, + fullArchiveMessenger process.TopicHandler, nodesCoordinator nodesCoordinator.NodesCoordinator, blockBlackList process.TimeCacher, whiteListerVerifiedTxs update.WhiteListHandler, @@ -256,8 +273,11 @@ func checkBaseParams( if check.IfNil(shardCoordinator) { return process.ErrNilShardCoordinator } - if check.IfNil(messenger) { - return process.ErrNilMessenger + if check.IfNil(mainMessenger) { + return fmt.Errorf("%w on main network", process.ErrNilMessenger) + } + if check.IfNil(fullArchiveMessenger) { + return fmt.Errorf("%w on full archive network", process.ErrNilMessenger) } if check.IfNil(store) { return process.ErrNilStore @@ -282,7 +302,7 @@ func checkBaseParams( } func (ficf *fullSyncInterceptorsContainerFactory) checkIfInterceptorExists(identifier string) bool { - _, err := ficf.container.Get(identifier) + _, err := ficf.mainContainer.Get(identifier) return err == nil } @@ -312,7 +332,7 @@ func (ficf *fullSyncInterceptorsContainerFactory) generateShardHeaderInterceptor interceptorsSlice[int(idx)] = interceptor } - return ficf.container.AddMultiple(keys, interceptorsSlice) + return ficf.addInterceptorsToContainers(keys, interceptorsSlice) } func (ficf *fullSyncInterceptorsContainerFactory) createOneShardHeaderInterceptor(topic string) (process.Interceptor, error) { @@ -338,7 +358,7 @@ func (ficf *fullSyncInterceptorsContainerFactory) createOneShardHeaderIntercepto Throttler: ficf.globalThrottler, AntifloodHandler: ficf.antifloodHandler, WhiteListRequest: ficf.whiteListHandler, - CurrentPeerId: ficf.messenger.ID(), + CurrentPeerId: ficf.mainMessenger.ID(), }, ) if err != nil { @@ -382,7 +402,7 @@ func (ficf *fullSyncInterceptorsContainerFactory) generateUnsignedTxsInterceptor interceptorsSlice[numShards] = interceptor } - return ficf.container.AddMultiple(keys, interceptorsSlice) + return ficf.addInterceptorsToContainers(keys, interceptorsSlice) } func (ficf *fullSyncInterceptorsContainerFactory) generateTrieNodesInterceptors() error { @@ -428,7 +448,7 @@ func (ficf *fullSyncInterceptorsContainerFactory) generateTrieNodesInterceptors( trieInterceptors = append(trieInterceptors, interceptor) } - return ficf.container.AddMultiple(keys, trieInterceptors) + return ficf.addInterceptorsToContainers(keys, trieInterceptors) } func (ficf *fullSyncInterceptorsContainerFactory) createTopicAndAssignHandler( @@ -437,12 +457,34 @@ func (ficf *fullSyncInterceptorsContainerFactory) createTopicAndAssignHandler( createChannel bool, ) (process.Interceptor, error) { - err := ficf.messenger.CreateTopic(topic, createChannel) + err := createTopicAndAssignHandlerOnMessenger(topic, interceptor, createChannel, ficf.mainMessenger) if err != nil { return nil, err } - return interceptor, ficf.messenger.RegisterMessageProcessor(topic, common.HardforkInterceptorsIdentifier, interceptor) + if ficf.nodeOperationMode == p2p.FullArchiveMode { + err = createTopicAndAssignHandlerOnMessenger(topic, interceptor, createChannel, ficf.fullArchiveMessenger) + if err != nil { + return nil, err + } + } + + return interceptor, nil +} + +func createTopicAndAssignHandlerOnMessenger( + topic string, + interceptor process.Interceptor, + createChannel bool, + messenger process.TopicHandler, +) error { + + err := messenger.CreateTopic(topic, createChannel) + if err != nil { + return err + } + + return messenger.RegisterMessageProcessor(topic, common.HardforkInterceptorsIdentifier, interceptor) } func (ficf *fullSyncInterceptorsContainerFactory) generateTxInterceptors() error { @@ -480,7 +522,7 @@ func (ficf *fullSyncInterceptorsContainerFactory) generateTxInterceptors() error interceptorSlice = append(interceptorSlice, interceptor) } - return ficf.container.AddMultiple(keys, interceptorSlice) + return ficf.addInterceptorsToContainers(keys, interceptorSlice) } func (ficf *fullSyncInterceptorsContainerFactory) createOneTxInterceptor(topic string) (process.Interceptor, error) { @@ -519,7 +561,7 @@ func (ficf *fullSyncInterceptorsContainerFactory) createOneTxInterceptor(topic s Throttler: ficf.globalThrottler, AntifloodHandler: ficf.antifloodHandler, WhiteListRequest: ficf.whiteListHandler, - CurrentPeerId: ficf.messenger.ID(), + CurrentPeerId: ficf.mainMessenger.ID(), PreferredPeersHolder: ficf.preferredPeersHolder, }, ) @@ -554,7 +596,7 @@ func (ficf *fullSyncInterceptorsContainerFactory) createOneUnsignedTxInterceptor Throttler: ficf.globalThrottler, AntifloodHandler: ficf.antifloodHandler, WhiteListRequest: ficf.whiteListHandler, - CurrentPeerId: ficf.messenger.ID(), + CurrentPeerId: ficf.mainMessenger.ID(), PreferredPeersHolder: ficf.preferredPeersHolder, }, ) @@ -589,7 +631,7 @@ func (ficf *fullSyncInterceptorsContainerFactory) createOneRewardTxInterceptor(t Throttler: ficf.globalThrottler, AntifloodHandler: ficf.antifloodHandler, WhiteListRequest: ficf.whiteListHandler, - CurrentPeerId: ficf.messenger.ID(), + CurrentPeerId: ficf.mainMessenger.ID(), PreferredPeersHolder: ficf.preferredPeersHolder, }, ) @@ -632,7 +674,7 @@ func (ficf *fullSyncInterceptorsContainerFactory) generateMiniBlocksInterceptors interceptorsSlice[numShards] = interceptor } - return ficf.container.AddMultiple(keys, interceptorsSlice) + return ficf.addInterceptorsToContainers(keys, interceptorsSlice) } func (ficf *fullSyncInterceptorsContainerFactory) createOneMiniBlocksInterceptor(topic string) (process.Interceptor, error) { @@ -661,7 +703,7 @@ func (ficf *fullSyncInterceptorsContainerFactory) createOneMiniBlocksInterceptor Throttler: ficf.globalThrottler, AntifloodHandler: ficf.antifloodHandler, WhiteListRequest: ficf.whiteListHandler, - CurrentPeerId: ficf.messenger.ID(), + CurrentPeerId: ficf.mainMessenger.ID(), PreferredPeersHolder: ficf.preferredPeersHolder, }, ) @@ -701,7 +743,7 @@ func (ficf *fullSyncInterceptorsContainerFactory) generateMetachainHeaderInterce Throttler: ficf.globalThrottler, AntifloodHandler: ficf.antifloodHandler, WhiteListRequest: ficf.whiteListHandler, - CurrentPeerId: ficf.messenger.ID(), + CurrentPeerId: ficf.mainMessenger.ID(), PreferredPeersHolder: ficf.preferredPeersHolder, }, ) @@ -714,7 +756,7 @@ func (ficf *fullSyncInterceptorsContainerFactory) generateMetachainHeaderInterce return err } - return ficf.container.Add(identifierHdr, interceptor) + return ficf.addInterceptorsToContainers([]string{identifierHdr}, []process.Interceptor{interceptor}) } func (ficf *fullSyncInterceptorsContainerFactory) createOneTrieNodesInterceptor(topic string) (process.Interceptor, error) { @@ -737,7 +779,7 @@ func (ficf *fullSyncInterceptorsContainerFactory) createOneTrieNodesInterceptor( Throttler: ficf.globalThrottler, AntifloodHandler: ficf.antifloodHandler, WhiteListRequest: ficf.whiteListHandler, - CurrentPeerId: ficf.messenger.ID(), + CurrentPeerId: ficf.mainMessenger.ID(), PreferredPeersHolder: ficf.preferredPeersHolder, }, ) @@ -775,7 +817,20 @@ func (ficf *fullSyncInterceptorsContainerFactory) generateRewardTxInterceptors() interceptorSlice[int(idx)] = interceptor } - return ficf.container.AddMultiple(keys, interceptorSlice) + return ficf.addInterceptorsToContainers(keys, interceptorSlice) +} + +func (ficf *fullSyncInterceptorsContainerFactory) addInterceptorsToContainers(keys []string, interceptors []process.Interceptor) error { + err := ficf.mainContainer.AddMultiple(keys, interceptors) + if err != nil { + return err + } + + if ficf.nodeOperationMode != p2p.FullArchiveMode { + return nil + } + + return ficf.fullArchiveContainer.AddMultiple(keys, interceptors) } // IsInterfaceNil returns true if there is no value under the interface