Skip to content

Commit 988508b

Browse files
committed
refactor(services): simplify services lifecycle protocol
1 parent 5815b3c commit 988508b

45 files changed

Lines changed: 1218 additions & 1597 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

cmd/cartesi-rollups-advancer/root/root.go

Lines changed: 46 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@ import (
99
"github.com/cartesi/rollups-node/internal/advancer"
1010
"github.com/cartesi/rollups-node/internal/cli"
1111
"github.com/cartesi/rollups-node/internal/config"
12+
"github.com/cartesi/rollups-node/internal/inspect"
13+
"github.com/cartesi/rollups-node/internal/manager"
1214
"github.com/cartesi/rollups-node/internal/repository/factory"
1315
"github.com/cartesi/rollups-node/internal/version"
1416
"github.com/cartesi/rollups-node/pkg/service"
@@ -79,41 +81,57 @@ func run(cmd *cobra.Command, args []string) {
7981
ctx, cancel := context.WithTimeout(context.Background(), cfg.MaxStartupTime)
8082
defer cancel()
8183

82-
svcName := config.ServiceAdvancer
83-
logLevel := config.ResolveServiceLogLevel(config.ServiceAdvancer, cfg.LogLevel)
84-
logColor := cfg.LogColor
85-
logger := service.NewLogger(logLevel, logColor).With("service", svcName)
86-
87-
createInfo := advancer.CreateInfo{
88-
TickServiceConfigs: service.TickServiceConfigs{
89-
PollInterval: cfg.AdvancerPollingInterval,
90-
BaseConfigs: service.BaseConfigs{
91-
Name: svcName,
92-
Logger: logger,
93-
},
94-
},
95-
Config: *cfg,
96-
}
84+
// Create shared components
9785

98-
var err error
99-
createInfo.Repository, err = factory.NewRepositoryFromConnectionString(ctx, cfg.DatabaseConnection.Raw())
100-
cli.CheckErr(logger, err)
101-
defer createInfo.Repository.Close()
86+
name := config.ServiceAdvancer
87+
logger := service.NewLogger(name, cfg.LogLevel, cfg.LogColor)
10288

103-
services, err := advancer.Create(ctx, &createInfo)
89+
repo, err := factory.NewRepositoryFromConnectionString(ctx, cfg.DatabaseConnection.Raw())
10490
cli.CheckErr(logger, err)
91+
defer repo.Close()
92+
93+
machineManager := manager.NewMachineManager(
94+
repo,
95+
logger,
96+
cfg.FeatureMachineHashCheckEnabled,
97+
cfg.AdvancerInputBatchSize,
98+
)
99+
defer machineManager.Close()
100+
101+
// Create factories of services
102+
103+
factories := []service.FactoryFunction{
104+
func(ctx context.Context, sup *service.Supervisor) (service.SupervisedService, error) {
105+
return advancer.Create(ctx, &advancer.CreateInfo{
106+
Config: *cfg,
107+
Repository: repo,
108+
Machines: machineManager,
109+
Supervisor: sup,
110+
Logger: sup.Logger,
111+
})
112+
},
113+
}
114+
115+
if cfg.FeatureInspectEnabled {
116+
factories = append(factories,
117+
func(ctx context.Context, sup *service.Supervisor) (service.SupervisedService, error) {
118+
return inspect.Create(ctx, &inspect.CreateInfo{
119+
Config: *cfg,
120+
Repository: repo,
121+
Machines: machineManager,
122+
})
123+
},
124+
)
125+
}
105126

106127
supCfg := &service.SupervisorConfigs{
107-
BaseConfigs: service.BaseConfigs{Logger: logger},
128+
BaseConfigs: service.BaseConfigs{Name: name, Logger: logger},
108129
EnableSignalHandling: true,
109130
TelemetryCreate: true,
110131
TelemetryAddress: cfg.AdvancerTelemetryAddress,
111-
Services: services,
132+
Factories: factories,
112133
}
113-
supervisor, err := service.NewSupervisor(supCfg)
114-
cli.CheckErr(logger, err)
115-
116-
logger.Info("Starting service", "config", cfg)
117-
118-
cli.CheckErr(logger, supervisor.Serve())
134+
sup := service.NewSupervisor(supCfg)
135+
defer sup.Close()
136+
cli.CheckErr(logger, sup.Serve(ctx))
119137
}

cmd/cartesi-rollups-claimer/root/root.go

Lines changed: 17 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ import (
1111
"github.com/cartesi/rollups-node/internal/config"
1212
"github.com/cartesi/rollups-node/internal/repository/factory"
1313
"github.com/cartesi/rollups-node/internal/version"
14-
"github.com/cartesi/rollups-node/pkg/ethutil"
1514
"github.com/cartesi/rollups-node/pkg/service"
1615

1716
"github.com/spf13/cobra"
@@ -80,52 +79,29 @@ func run(cmd *cobra.Command, args []string) {
8079
ctx, cancel := context.WithTimeout(context.Background(), cfg.MaxStartupTime)
8180
defer cancel()
8281

83-
svcName := config.ServiceClaimer
84-
logLevel := config.ResolveServiceLogLevel(config.ServiceClaimer, cfg.LogLevel)
85-
logColor := cfg.LogColor
86-
logger := service.NewLogger(logLevel, logColor).With("service", svcName)
82+
name := config.ServiceClaimer
83+
logger := service.NewLogger(name, cfg.LogLevel, cfg.LogColor)
8784

88-
createInfo := claimer.CreateInfo{
89-
TickServiceConfigs: service.TickServiceConfigs{
90-
PollInterval: cfg.ClaimerPollingInterval,
91-
BaseConfigs: service.BaseConfigs{
92-
Name: svcName,
93-
Logger: logger,
94-
},
95-
},
96-
Config: *cfg,
97-
}
98-
99-
authOpt, err := config.HTTPAuthorizationOption()
100-
cli.CheckErr(logger, err)
101-
createInfo.EthConn, err = ethutil.NewEthClient(
102-
ctx, cfg.BlockchainHttpEndpoint.Raw(), logger,
103-
ethutil.RetryConfig{
104-
MaxRetries: cfg.BlockchainHttpMaxRetries,
105-
RetryMinWait: cfg.BlockchainHttpRetryMinWait,
106-
RetryMaxWait: cfg.BlockchainHttpRetryMaxWait,
107-
RequestTimeout: cfg.BlockchainHttpRequestTimeout,
108-
}, authOpt)
109-
cli.CheckErr(logger, err)
110-
111-
createInfo.Repository, err = factory.NewRepositoryFromConnectionString(ctx, cfg.DatabaseConnection.Raw())
112-
cli.CheckErr(logger, err)
113-
defer createInfo.Repository.Close()
114-
115-
claimerService, err := claimer.Create(ctx, &createInfo)
85+
repo, err := factory.NewRepositoryFromConnectionString(ctx, cfg.DatabaseConnection.Raw())
11686
cli.CheckErr(logger, err)
87+
defer repo.Close()
11788

11889
supCfg := &service.SupervisorConfigs{
119-
BaseConfigs: service.BaseConfigs{Logger: logger},
90+
BaseConfigs: service.BaseConfigs{Name: name, Logger: logger},
12091
EnableSignalHandling: true,
12192
TelemetryCreate: true,
12293
TelemetryAddress: cfg.ClaimerTelemetryAddress,
123-
Services: []service.SupervisedService{claimerService},
94+
Factories: []service.FactoryFunction{
95+
func(ctx context.Context, sup *service.Supervisor) (service.SupervisedService, error) {
96+
return claimer.Create(ctx, &claimer.CreateInfo{
97+
Config: *cfg,
98+
Logger: sup.Logger,
99+
Repository: repo,
100+
})
101+
},
102+
},
124103
}
125-
supervisor, err := service.NewSupervisor(supCfg)
126-
cli.CheckErr(logger, err)
127-
128-
logger.Info("Starting service", "config", cfg)
129-
130-
cli.CheckErr(logger, supervisor.Serve())
104+
sup := service.NewSupervisor(supCfg)
105+
defer sup.Close()
106+
cli.CheckErr(logger, sup.Serve(ctx))
131107
}

cmd/cartesi-rollups-evm-reader/root/root.go

Lines changed: 15 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ import (
1111
"github.com/cartesi/rollups-node/internal/evmreader"
1212
"github.com/cartesi/rollups-node/internal/repository/factory"
1313
"github.com/cartesi/rollups-node/internal/version"
14-
"github.com/cartesi/rollups-node/pkg/ethutil"
1514
"github.com/cartesi/rollups-node/pkg/service"
1615

1716
"github.com/spf13/cobra"
@@ -80,53 +79,29 @@ func run(cmd *cobra.Command, args []string) {
8079
ctx, cancel := context.WithTimeout(context.Background(), cfg.MaxStartupTime)
8180
defer cancel()
8281

83-
svcName := config.ServiceEvmReader
84-
logLevel := config.ResolveServiceLogLevel(config.ServiceEvmReader, cfg.LogLevel)
85-
logColor := cfg.LogColor
86-
logger := service.NewLogger(logLevel, logColor).With("service", svcName)
87-
88-
createInfo := evmreader.CreateInfo{
89-
TickServiceConfigs: service.TickServiceConfigs{
90-
BaseConfigs: service.BaseConfigs{
91-
Name: svcName,
92-
Logger: logger,
93-
},
94-
},
95-
Config: *cfg,
96-
}
97-
98-
var err error
99-
authOpt, err := config.HTTPAuthorizationOption()
100-
cli.CheckErr(logger, err)
101-
createInfo.EthClient, err = ethutil.NewEthClient(
102-
ctx, cfg.BlockchainHttpEndpoint.Raw(), logger,
103-
ethutil.RetryConfig{
104-
MaxRetries: cfg.BlockchainHttpMaxRetries,
105-
RetryMinWait: cfg.BlockchainHttpRetryMinWait,
106-
RetryMaxWait: cfg.BlockchainHttpRetryMaxWait,
107-
RequestTimeout: cfg.BlockchainHttpRequestTimeout,
108-
}, authOpt)
109-
cli.CheckErr(logger, err)
82+
name := config.ServiceEvmReader
83+
logger := service.NewLogger(name, cfg.LogLevel, cfg.LogColor)
11084

11185
repo, err := factory.NewRepositoryFromConnectionString(ctx, cfg.DatabaseConnection.Raw())
11286
cli.CheckErr(logger, err)
11387
defer repo.Close()
114-
createInfo.Repository = repo
115-
116-
readerService, err := evmreader.Create(ctx, &createInfo)
117-
cli.CheckErr(logger, err)
11888

11989
supCfg := &service.SupervisorConfigs{
120-
BaseConfigs: service.BaseConfigs{Logger: logger},
90+
BaseConfigs: service.BaseConfigs{Name: name, Logger: logger},
12191
EnableSignalHandling: true,
12292
TelemetryCreate: true,
12393
TelemetryAddress: cfg.EvmReaderTelemetryAddress,
124-
Services: []service.SupervisedService{readerService},
94+
Factories: []service.FactoryFunction{
95+
func(ctx context.Context, sup *service.Supervisor) (service.SupervisedService, error) {
96+
return evmreader.Create(ctx, &evmreader.CreateInfo{
97+
Config: *cfg,
98+
Logger: sup.Logger,
99+
Repository: repo,
100+
})
101+
},
102+
},
125103
}
126-
supervisor, err := service.NewSupervisor(supCfg)
127-
cli.CheckErr(logger, err)
128-
129-
logger.Info("Starting service", "config", cfg)
130-
131-
cli.CheckErr(logger, supervisor.Serve())
104+
sup := service.NewSupervisor(supCfg)
105+
defer sup.Close()
106+
cli.CheckErr(logger, sup.Serve(ctx))
132107
}

cmd/cartesi-rollups-jsonrpc-api/root/root.go

Lines changed: 17 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -67,38 +67,29 @@ func run(cmd *cobra.Command, args []string) {
6767
ctx, cancel := context.WithTimeout(context.Background(), cfg.MaxStartupTime)
6868
defer cancel()
6969

70-
svcName := config.ServiceJsonrpc
71-
logLevel := config.ResolveServiceLogLevel(config.ServiceJsonrpc, cfg.LogLevel)
72-
logColor := cfg.LogColor
73-
logger := service.NewLogger(logLevel, logColor).With("service", svcName)
70+
name := config.ServiceJsonrpc
71+
logger := service.NewLogger(name, cfg.LogLevel, cfg.LogColor)
7472

75-
createInfo := jsonrpc.CreateInfo{
76-
BaseConfigs: service.BaseConfigs{
77-
Name: svcName,
78-
Logger: logger,
79-
},
80-
Config: *cfg,
81-
}
82-
83-
var err error
84-
createInfo.Repository, err = factory.NewRepositoryFromConnectionString(ctx, cfg.DatabaseConnection.Raw())
85-
cli.CheckErr(logger, err)
86-
defer createInfo.Repository.Close()
87-
88-
jsonrpcService, err := jsonrpc.Create(ctx, &createInfo)
73+
repo, err := factory.NewRepositoryFromConnectionString(ctx, cfg.DatabaseConnection.Raw())
8974
cli.CheckErr(logger, err)
75+
defer repo.Close()
9076

9177
supCfg := &service.SupervisorConfigs{
92-
BaseConfigs: service.BaseConfigs{Logger: logger},
78+
BaseConfigs: service.BaseConfigs{Name: name, Logger: logger},
9379
EnableSignalHandling: true,
9480
TelemetryCreate: true,
9581
TelemetryAddress: cfg.JsonrpcTelemetryAddress,
96-
Services: []service.SupervisedService{jsonrpcService},
82+
Factories: []service.FactoryFunction{
83+
func(ctx context.Context, sup *service.Supervisor) (service.SupervisedService, error) {
84+
return jsonrpc.Create(ctx, &jsonrpc.CreateInfo{
85+
Config: *cfg,
86+
Logger: sup.Logger,
87+
Repository: repo,
88+
})
89+
},
90+
},
9791
}
98-
supervisor, err := service.NewSupervisor(supCfg)
99-
cli.CheckErr(logger, err)
100-
101-
logger.Info("Starting service", "config", cfg)
102-
103-
cli.CheckErr(logger, supervisor.Serve())
92+
sup := service.NewSupervisor(supCfg)
93+
defer sup.Close()
94+
cli.CheckErr(logger, sup.Serve(ctx))
10495
}

0 commit comments

Comments
 (0)