Skip to content

Commit

Permalink
Merge pull request #6065 from multiversx/MX-15315-refactor-sov-runtyp…
Browse files Browse the repository at this point in the history
…e-comp

Mx 15315 refactor sov runtype comp
  • Loading branch information
axenteoctavian authored Apr 16, 2024
2 parents 5649261 + 9569ac8 commit 462bf36
Show file tree
Hide file tree
Showing 33 changed files with 643 additions and 283 deletions.
2 changes: 1 addition & 1 deletion cmd/sovereignnode/dataCodec/dataCodec_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ import (
"github.com/stretchr/testify/require"
)

func createDataCodec() SovereignDataDecoder {
func createDataCodec() SovereignDataCodec {
codec := abi.NewDefaultCodec()
args := ArgsDataCodec{
Serializer: abi.NewSerializer(codec),
Expand Down
4 changes: 2 additions & 2 deletions cmd/sovereignnode/dataCodec/interface.go
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,8 @@ type OperationDataEncoder interface {
SerializeOperation(operation sovereign.Operation) ([]byte, error)
}

// SovereignDataDecoder is the interface for serializing/deserializing data
type SovereignDataDecoder interface {
// SovereignDataCodec is the interface for serializing/deserializing data
type SovereignDataCodec interface {
SerializeEventData(eventData sovereign.EventData) ([]byte, error)
DeserializeEventData(data []byte) (*sovereign.EventData, error)
SerializeTokenData(tokenData sovereign.EsdtTokenData) ([]byte, error)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ type eventsResult struct {
type incomingEventsProcessor struct {
marshaller marshal.Marshalizer
hasher hashing.Hasher
dataCodec dataCodec.SovereignDataDecoder
dataCodec dataCodec.SovereignDataCodec
topicsChecker TopicsChecker
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ type ArgsIncomingHeaderProcessor struct {
Marshaller marshal.Marshalizer
Hasher hashing.Hasher
MainChainNotarizationStartRound uint64
DataCodec dataCodec.SovereignDataDecoder
DataCodec dataCodec.SovereignDataCodec
TopicsChecker TopicsChecker
}

Expand Down
67 changes: 36 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,36 @@ 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
}

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: incomingHeader.NewTopicsChecker(),
}, 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 +1874,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 +1892,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.DataCodecHandler
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
Loading

0 comments on commit 462bf36

Please sign in to comment.