Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Mx 15315 refactor sov runtype comp #6065

Merged
Show file tree
Hide file tree
Changes from 24 commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
8a3da80
interfaces renaming
axenteoctavian Mar 25, 2024
010790e
factories added
axenteoctavian Mar 25, 2024
acfef0d
resolve cyclic imports
axenteoctavian Mar 25, 2024
725f2ca
fix tests
axenteoctavian Mar 25, 2024
1ab6435
fix runtype components tests
axenteoctavian Mar 26, 2024
d267d76
new unit tests, runtype tests fixes
axenteoctavian Mar 26, 2024
2a28037
fix unit tests
axenteoctavian Mar 26, 2024
bc66e6d
fix unit tests
axenteoctavian Mar 26, 2024
a710cd7
import fixes
axenteoctavian Mar 26, 2024
7651b29
moved interfaces
axenteoctavian Mar 26, 2024
21aad66
fixed imports
axenteoctavian Mar 26, 2024
9f397cd
fixed imports
axenteoctavian Mar 26, 2024
99b4166
fix imports
axenteoctavian Mar 26, 2024
6bb322e
deleted factories, using only component
axenteoctavian Mar 26, 2024
0ebba8a
errors fixes
axenteoctavian Mar 26, 2024
4f36041
fixes for imports
axenteoctavian Mar 26, 2024
c57bbad
nil checks and unit tests
axenteoctavian Mar 27, 2024
d6bcad4
Merge branch 'feat/refactor-runtype-components' into MX-15315-refacto…
axenteoctavian Apr 1, 2024
cf7fa5c
fixes after merge
axenteoctavian Apr 1, 2024
00a9293
fixes after review
axenteoctavian Apr 9, 2024
58fea75
fixes after review
axenteoctavian Apr 10, 2024
74fdb53
tests fixes
axenteoctavian Apr 10, 2024
0a6dad1
components fixes
axenteoctavian Apr 10, 2024
b0dea1e
components fixes
axenteoctavian Apr 10, 2024
a913adb
renamings and stuff
axenteoctavian Apr 10, 2024
01443e4
consensul model TODO
axenteoctavian Apr 11, 2024
74a3d3f
fixes after review
axenteoctavian Apr 15, 2024
2f96d57
fixes after review, renamed everywhere to DataCodec
axenteoctavian Apr 15, 2024
9569ac8
TODO Added for RunType subcomponents
axenteoctavian Apr 16, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
69 changes: 38 additions & 31 deletions cmd/sovereignnode/sovereignNodeRunner.go
Original file line number Diff line number Diff line change
Expand Up @@ -308,8 +308,14 @@ func (snr *sovereignNodeRunner) executeOneComponentCreationCycle(
return true, err
}

log.Debug("creating args for runType components")
argsSovereignRunTypeComponents, err := snr.CreateArgsRunTypeComponents(managedCoreComponents)
if err != nil {
return true, err
}

log.Debug("creating runType components")
managedRunTypeComponents, err := snr.CreateManagedRunTypeComponents(managedCoreComponents, *configs.SovereignExtraConfig)
managedRunTypeComponents, err := snr.CreateManagedRunTypeComponents(*argsSovereignRunTypeComponents)
if err != nil {
return true, err
}
Expand Down Expand Up @@ -444,25 +450,12 @@ func (snr *sovereignNodeRunner) executeOneComponentCreationCycle(
timeToWait := time.Second * time.Duration(snr.configs.SovereignExtraConfig.OutgoingSubscribedEvents.TimeToWaitForUnconfirmedOutGoingOperationInSeconds)
outGoingOperationsPool := sovereignPool.NewOutGoingOperationPool(timeToWait)

codec := abi.NewDefaultCodec()
argsDataCodec := dataCodec.ArgsDataCodec{
Serializer: abi.NewSerializer(codec),
}

dataCodecProcessor, err := dataCodec.NewDataCodec(argsDataCodec)
if err != nil {
return true, err
}

topicsChecker := incomingHeader.NewTopicsChecker()

incomingHeaderHandler, err := createIncomingHeaderProcessor(
&configs.SovereignExtraConfig.NotifierConfig,
managedDataComponents.Datapool(),
configs.SovereignExtraConfig.MainChainNotarization.MainChainNotarizationStartRound,
outGoingOperationsPool,
dataCodecProcessor,
topicsChecker,
managedRunTypeComponents,
)

managedProcessComponents, err := snr.CreateManagedProcessComponents(
Expand All @@ -479,8 +472,6 @@ func (snr *sovereignNodeRunner) executeOneComponentCreationCycle(
nodesCoordinatorInstance,
incomingHeaderHandler,
outGoingOperationsPool,
dataCodecProcessor,
topicsChecker,
)
if err != nil {
return true, err
Expand Down Expand Up @@ -1243,8 +1234,6 @@ func (snr *sovereignNodeRunner) CreateManagedProcessComponents(
nodesCoordinator nodesCoordinator.NodesCoordinator,
incomingHeaderHandler process.IncomingHeaderSubscriber,
outGoingOperationsPool block.OutGoingOperationsPool,
dataCodec dataCodec.SovereignDataDecoder,
topicsChecker incomingHeader.TopicsChecker,
) (mainFactory.ProcessComponentsHandler, error) {
configs := snr.configs
configurationPaths := snr.configs.ConfigurationPathsHolder
Expand Down Expand Up @@ -1375,8 +1364,6 @@ func (snr *sovereignNodeRunner) CreateManagedProcessComponents(
TxPreProcessorCreator: preprocess.NewSovereignTxPreProcessorCreator(),
ExtraHeaderSigVerifierHolder: extraHeaderSigVerifierHolder,
OutGoingOperationsPool: outGoingOperationsPool,
DataCodec: dataCodec,
TopicsChecker: topicsChecker,
}
processComponentsFactory, err := processComp.NewProcessComponentsFactory(processArgs)
if err != nil {
Expand Down Expand Up @@ -1680,17 +1667,38 @@ func (snr *sovereignNodeRunner) CreateManagedCryptoComponents(
return managedCryptoComponents, nil
}

// CreateManagedRunTypeComponents creates the managed runType components
func (snr *sovereignNodeRunner) CreateManagedRunTypeComponents(coreComp mainFactory.CoreComponentsHandler, cfg config.SovereignConfig) (mainFactory.RunTypeComponentsHandler, error) {
// CreateArgsRunTypeComponents creates the arguments for sovereign runType components
func (snr *sovereignNodeRunner) CreateArgsRunTypeComponents(coreComp mainFactory.CoreComponentsHandler) (*runType.ArgsSovereignRunTypeComponents, error) {
sovereignCfg := snr.configs.SovereignExtraConfig

codec := abi.NewDefaultCodec()
argsDataCodec := dataCodec.ArgsDataCodec{
Serializer: abi.NewSerializer(codec),
}

dataCodecHandler, err := dataCodec.NewDataCodec(argsDataCodec)
if err != nil {
return nil, err
}

topicsCheckerHandler := incomingHeader.NewTopicsChecker()

runTypeComponentsFactory, err := runType.NewRunTypeComponentsFactory(coreComp)
if err != nil {
return nil, fmt.Errorf("NewRunTypeComponentsFactory failed: %w", err)
}

sovereignRunTypeComponentsFactory, err := runType.NewSovereignRunTypeComponentsFactory(
runTypeComponentsFactory,
cfg,
)
return &runType.ArgsSovereignRunTypeComponents{
RunTypeComponentsFactory: runTypeComponentsFactory,
Config: *sovereignCfg,
DataCodec: dataCodecHandler,
TopicsChecker: topicsCheckerHandler,
mariusmihaic marked this conversation as resolved.
Show resolved Hide resolved
}, nil
}

// CreateManagedRunTypeComponents creates the managed runType components
func (snr *sovereignNodeRunner) CreateManagedRunTypeComponents(args runType.ArgsSovereignRunTypeComponents) (mainFactory.RunTypeComponentsHandler, error) {
sovereignRunTypeComponentsFactory, err := runType.NewSovereignRunTypeComponentsFactory(args)
if err != nil {
return nil, fmt.Errorf("NewSovereignRunTypeComponentsFactory failed: %w", err)
}
Expand Down Expand Up @@ -1868,8 +1876,7 @@ func createIncomingHeaderProcessor(
dataPool dataRetriever.PoolsHolder,
mainChainNotarizationStartRound uint64,
outGoingOperationsPool block.OutGoingOperationsPool,
dataCodec dataCodec.SovereignDataDecoder,
topicsChecker incomingHeader.TopicsChecker,
runTypeComponents mainFactory.RunTypeComponentsHolder,
) (process.IncomingHeaderSubscriber, error) {
marshaller, err := marshallerFactory.NewMarshalizer(config.WebSocketConfig.MarshallerType)
if err != nil {
Expand All @@ -1887,8 +1894,8 @@ func createIncomingHeaderProcessor(
Hasher: hasher,
MainChainNotarizationStartRound: mainChainNotarizationStartRound,
OutGoingOperationsPool: outGoingOperationsPool,
DataCodec: dataCodec,
TopicsChecker: topicsChecker,
DataCodec: runTypeComponents.DataCodecHandler(),
TopicsChecker: runTypeComponents.TopicsCheckerHandler(),
}

return incomingHeader.NewIncomingHeaderProcessor(argsIncomingHeaderHandler)
Expand Down
12 changes: 12 additions & 0 deletions errors/errors.go
Original file line number Diff line number Diff line change
Expand Up @@ -789,3 +789,15 @@ var ErrNilTopicsChecker = errors.New("nil topics checker")

// ErrNilOperationsHasher signals that a nil outgoing operations hasher has been provided
var ErrNilOperationsHasher = errors.New("nil outgoing operations hasher")

// ErrInvalidConsensusModel signals that an invalid consensus model has been provided
var ErrInvalidConsensusModel = errors.New("invalid consensus model")

// ErrNilVmContainerMetaFactoryCreator signals that a nil vm container meta factory creator has been provided
var ErrNilVmContainerMetaFactoryCreator = errors.New("nil vm container meta factory creator")

// ErrNilVmContainerShardFactoryCreator signals that a nil vm container shard factory creator has been provided
var ErrNilVmContainerShardFactoryCreator = errors.New("nil vm container shard factory creator")

// ErrNilAccountsCreator signals that a nil accoutns creator has been provided
var ErrNilAccountsCreator = errors.New("nil accounts creator")
22 changes: 13 additions & 9 deletions factory/interface.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,15 +5,6 @@ import (
"math/big"
"time"

"github.com/multiversx/mx-chain-core-go/core"
"github.com/multiversx/mx-chain-core-go/data"
"github.com/multiversx/mx-chain-core-go/data/block"
"github.com/multiversx/mx-chain-core-go/data/endProcess"
"github.com/multiversx/mx-chain-core-go/data/transaction"
"github.com/multiversx/mx-chain-core-go/data/typeConverters"
"github.com/multiversx/mx-chain-core-go/hashing"
"github.com/multiversx/mx-chain-core-go/marshal"
crypto "github.com/multiversx/mx-chain-crypto-go"
"github.com/multiversx/mx-chain-go/cmd/node/factory"
"github.com/multiversx/mx-chain-go/common"
cryptoCommon "github.com/multiversx/mx-chain-go/common/crypto"
Expand All @@ -34,6 +25,7 @@ import (
"github.com/multiversx/mx-chain-go/process"
processBlock "github.com/multiversx/mx-chain-go/process/block"
"github.com/multiversx/mx-chain-go/process/block/preprocess"
"github.com/multiversx/mx-chain-go/process/block/sovereign"
"github.com/multiversx/mx-chain-go/process/coordinator"
"github.com/multiversx/mx-chain-go/process/peer"
"github.com/multiversx/mx-chain-go/process/smartContract/hooks"
Expand All @@ -48,6 +40,16 @@ import (
"github.com/multiversx/mx-chain-go/storage"
"github.com/multiversx/mx-chain-go/update"
"github.com/multiversx/mx-chain-go/vm"

"github.com/multiversx/mx-chain-core-go/core"
"github.com/multiversx/mx-chain-core-go/data"
"github.com/multiversx/mx-chain-core-go/data/block"
"github.com/multiversx/mx-chain-core-go/data/endProcess"
"github.com/multiversx/mx-chain-core-go/data/transaction"
"github.com/multiversx/mx-chain-core-go/data/typeConverters"
"github.com/multiversx/mx-chain-core-go/hashing"
"github.com/multiversx/mx-chain-core-go/marshal"
crypto "github.com/multiversx/mx-chain-crypto-go"
vmcommon "github.com/multiversx/mx-chain-vm-common-go"
)

Expand Down Expand Up @@ -593,6 +595,8 @@ type RunTypeComponentsHolder interface {
VmContainerMetaFactoryCreator() factoryVm.VmContainerCreator
VmContainerShardFactoryCreator() factoryVm.VmContainerCreator
AccountsCreator() state.AccountFactory
DataCodecHandler() sovereign.DataDecoderHandler
TopicsCheckerHandler() sovereign.TopicsCheckerHandler
Create() error
Close() error
CheckSubcomponents() error
Expand Down
7 changes: 3 additions & 4 deletions factory/processing/blockProcessorCreator.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,6 @@ import (
"errors"
"fmt"

"github.com/multiversx/mx-chain-core-go/core"
dataBlock "github.com/multiversx/mx-chain-core-go/data/block"
"github.com/multiversx/mx-chain-go/common"
"github.com/multiversx/mx-chain-go/config"
"github.com/multiversx/mx-chain-go/dataRetriever"
Expand Down Expand Up @@ -42,6 +40,9 @@ import (
"github.com/multiversx/mx-chain-go/state/syncer"
"github.com/multiversx/mx-chain-go/storage/txcache"
"github.com/multiversx/mx-chain-go/vm"

"github.com/multiversx/mx-chain-core-go/core"
dataBlock "github.com/multiversx/mx-chain-core-go/data/block"
logger "github.com/multiversx/mx-chain-logger-go"
vmcommon "github.com/multiversx/mx-chain-vm-common-go"
"github.com/multiversx/mx-chain-vm-common-go/parsers"
Expand Down Expand Up @@ -480,8 +481,6 @@ func (pcf *processComponentsFactory) newShardBlockProcessor(
SentSignaturesTracker: sentSignaturesTracker,
ValidatorStatisticsProcessor: validatorStatisticsProcessor,
OutGoingOperationsPool: pcf.outGoingOperationsPool,
DataCodec: pcf.dataCodec,
TopicsChecker: pcf.topicsChecker,
}
blockProcessor, err := pcf.createBlockProcessor(argumentsBaseProcessor)
if err != nil {
Expand Down
77 changes: 49 additions & 28 deletions factory/processing/processComponents.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,14 +8,6 @@ import (
"path/filepath"
"time"

"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/partitioning"
"github.com/multiversx/mx-chain-core-go/data"
"github.com/multiversx/mx-chain-core-go/data/alteredAccount"
dataBlock "github.com/multiversx/mx-chain-core-go/data/block"
"github.com/multiversx/mx-chain-core-go/data/outport"
"github.com/multiversx/mx-chain-core-go/data/receipt"
nodeFactory "github.com/multiversx/mx-chain-go/cmd/node/factory"
"github.com/multiversx/mx-chain-go/common"
"github.com/multiversx/mx-chain-go/common/errChan"
Expand Down Expand Up @@ -50,7 +42,6 @@ import (
"github.com/multiversx/mx-chain-go/process/block/poolsCleaner"
"github.com/multiversx/mx-chain-go/process/block/preprocess"
"github.com/multiversx/mx-chain-go/process/block/processedMb"
"github.com/multiversx/mx-chain-go/process/block/sovereign"
"github.com/multiversx/mx-chain-go/process/factory/interceptorscontainer"
"github.com/multiversx/mx-chain-go/process/headerCheck"
"github.com/multiversx/mx-chain-go/process/heartbeat/validator"
Expand All @@ -76,6 +67,15 @@ import (
updateDisabled "github.com/multiversx/mx-chain-go/update/disabled"
updateFactory "github.com/multiversx/mx-chain-go/update/factory"
"github.com/multiversx/mx-chain-go/update/trigger"

"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/partitioning"
"github.com/multiversx/mx-chain-core-go/data"
"github.com/multiversx/mx-chain-core-go/data/alteredAccount"
dataBlock "github.com/multiversx/mx-chain-core-go/data/block"
"github.com/multiversx/mx-chain-core-go/data/outport"
"github.com/multiversx/mx-chain-core-go/data/receipt"
vmcommon "github.com/multiversx/mx-chain-vm-common-go"
vmcommonBuiltInFunctions "github.com/multiversx/mx-chain-vm-common-go/builtInFunctions"
)
Expand Down Expand Up @@ -178,8 +178,6 @@ type ProcessComponentsFactoryArgs struct {
TxPreProcessorCreator preprocess.TxPreProcessorCreator
ExtraHeaderSigVerifierHolder headerCheck.ExtraHeaderSigVerifierHolder
OutGoingOperationsPool block.OutGoingOperationsPool
DataCodec sovereign.DataCodecProcessor
TopicsChecker sovereign.TopicsChecker
}

type processComponentsFactory struct {
Expand Down Expand Up @@ -232,8 +230,6 @@ type processComponentsFactory struct {
txPreprocessorCreator preprocess.TxPreProcessorCreator
extraHeaderSigVerifierHolder headerCheck.ExtraHeaderSigVerifierHolder
outGoingOperationsPool block.OutGoingOperationsPool
dataCodec sovereign.DataCodecProcessor
topicsChecker sovereign.TopicsChecker
}

// NewProcessComponentsFactory will return a new instance of processComponentsFactory
Expand Down Expand Up @@ -285,8 +281,6 @@ func NewProcessComponentsFactory(args ProcessComponentsFactoryArgs) (*processCom
txPreprocessorCreator: args.TxPreProcessorCreator,
extraHeaderSigVerifierHolder: args.ExtraHeaderSigVerifierHolder,
outGoingOperationsPool: args.OutGoingOperationsPool,
dataCodec: args.DataCodec,
topicsChecker: args.TopicsChecker,
}, nil
}

Expand Down Expand Up @@ -2097,40 +2091,67 @@ func checkProcessComponentsArgs(args ProcessComponentsFactoryArgs) error {
if check.IfNil(args.RunTypeComponents) {
return fmt.Errorf("%s: %w", baseErrMessage, errorsMx.ErrNilRunTypeComponents)
}
if check.IfNil(args.RunTypeComponents.BlockChainHookHandlerCreator()) {
return fmt.Errorf("%s: %w", baseErrMessage, errorsMx.ErrNilBlockChainHookHandlerCreator)
}
if check.IfNil(args.RunTypeComponents.BlockProcessorCreator()) {
return fmt.Errorf("%s: %w", baseErrMessage, errorsMx.ErrNilBlockProcessorCreator)
}
if check.IfNil(args.RunTypeComponents.BlockTrackerCreator()) {
return fmt.Errorf("%s: %w", baseErrMessage, errorsMx.ErrNilBlockTrackerCreator)
}
if check.IfNil(args.RunTypeComponents.BootstrapperFromStorageCreator()) {
return fmt.Errorf("%s: %w", baseErrMessage, errorsMx.ErrNilBootstrapperFromStorageCreator)
}
if check.IfNil(args.RunTypeComponents.BootstrapperCreator()) {
return fmt.Errorf("%s: %w", baseErrMessage, errorsMx.ErrNilBootstrapperCreator)
}
if check.IfNil(args.RunTypeComponents.EpochStartBootstrapperCreator()) {
return fmt.Errorf("%s: %w", baseErrMessage, errorsMx.ErrNilEpochStartBootstrapperCreator)
}
if check.IfNil(args.RunTypeComponents.ForkDetectorCreator()) {
return fmt.Errorf("%s: %w", baseErrMessage, errorsMx.ErrNilForkDetectorCreator)
}
if check.IfNil(args.RunTypeComponents.HeaderValidatorCreator()) {
return fmt.Errorf("%s: %w", baseErrMessage, errorsMx.ErrNilHeaderValidatorCreator)
}
if check.IfNil(args.RunTypeComponents.RequestHandlerCreator()) {
return fmt.Errorf("%s: %w", baseErrMessage, errorsMx.ErrNilRequestHandlerCreator)
}
if check.IfNil(args.RunTypeComponents.ScheduledTxsExecutionCreator()) {
return fmt.Errorf("%s: %w", baseErrMessage, errorsMx.ErrNilScheduledTxsExecutionCreator)
}
if check.IfNil(args.RunTypeComponents.BlockTrackerCreator()) {
return fmt.Errorf("%s: %w", baseErrMessage, errorsMx.ErrNilBlockTrackerCreator)
}
if check.IfNil(args.RunTypeComponents.TransactionCoordinatorCreator()) {
return fmt.Errorf("%s: %w", baseErrMessage, errorsMx.ErrNilTransactionCoordinatorCreator)
}
if check.IfNil(args.RunTypeComponents.HeaderValidatorCreator()) {
return fmt.Errorf("%s: %w", baseErrMessage, errorsMx.ErrNilHeaderValidatorCreator)
}
if check.IfNil(args.RunTypeComponents.ForkDetectorCreator()) {
return fmt.Errorf("%s: %w", baseErrMessage, errorsMx.ErrNilForkDetectorCreator)
}
if check.IfNil(args.RunTypeComponents.ValidatorStatisticsProcessorCreator()) {
return fmt.Errorf("%s: %w", baseErrMessage, errorsMx.ErrNilValidatorStatisticsProcessorCreator)
}
if check.IfNil(args.RunTypeComponents.SCProcessorCreator()) {
return fmt.Errorf("%s: %w", baseErrMessage, errorsMx.ErrNilSCProcessorCreator)
if check.IfNil(args.RunTypeComponents.AdditionalStorageServiceCreator()) {
return fmt.Errorf("%s: %w", baseErrMessage, errorsMx.ErrNilAdditionalStorageServiceCreator)
}
if check.IfNil(args.RunTypeComponents.SCResultsPreProcessorCreator()) {
return fmt.Errorf("%s: %w", baseErrMessage, errorsMx.ErrNilSCResultsPreProcessorCreator)
}
if check.IfNil(args.DataCodec) {
if check.IfNil(args.RunTypeComponents.SCProcessorCreator()) {
return fmt.Errorf("%s: %w", baseErrMessage, errorsMx.ErrNilSCProcessorCreator)
}
if args.RunTypeComponents.ConsensusModel() == consensus.ConsensusModelInvalid {
mariusmihaic marked this conversation as resolved.
Show resolved Hide resolved
return fmt.Errorf("%s: %w", baseErrMessage, errorsMx.ErrInvalidConsensusModel)
}
if check.IfNil(args.RunTypeComponents.VmContainerMetaFactoryCreator()) {
return fmt.Errorf("%s: %w", baseErrMessage, errorsMx.ErrNilVmContainerMetaFactoryCreator)
}
if check.IfNil(args.RunTypeComponents.VmContainerShardFactoryCreator()) {
return fmt.Errorf("%s: %w", baseErrMessage, errorsMx.ErrNilVmContainerShardFactoryCreator)
}
if check.IfNil(args.RunTypeComponents.AccountsCreator()) {
return fmt.Errorf("%s: %w", baseErrMessage, errorsMx.ErrNilAccountsCreator)
}
if check.IfNil(args.RunTypeComponents.DataCodecHandler()) {
return fmt.Errorf("%s: %w", baseErrMessage, errorsMx.ErrNilDataCodec)
}
if check.IfNil(args.TopicsChecker) {
if check.IfNil(args.RunTypeComponents.TopicsCheckerHandler()) {
return fmt.Errorf("%s: %w", baseErrMessage, errorsMx.ErrNilTopicsChecker)
}

Expand Down
Loading
Loading