Skip to content

Commit 1dc2b32

Browse files
authored
feat: option to disable price feeder ticks for full nodes (#522)
* feat: option to disable price feeder ticks for full nodes * enable price feeder appconfig setting in e2e tests * e2e typo * price feeder cmd fix
1 parent aa3f85a commit 1dc2b32

File tree

4 files changed

+18
-5
lines changed

4 files changed

+18
-5
lines changed

cmd/ojod/cmd/commands.go

+1
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,7 @@ func initRootCmd(
128128
// add price feeder flags
129129
rootCmd.PersistentFlags().String(pricefeeder.FlagConfigPath, "", "Path to price feeder config file")
130130
rootCmd.PersistentFlags().String(pricefeeder.FlagLogLevel, "", "Log level of price feeder process")
131+
rootCmd.PersistentFlags().Bool(pricefeeder.FlagEnablePriceFeeder, false, "Enable the price feeder")
131132
}
132133

133134
// genesisCommand builds genesis-related `simd genesis` command. Users may

pricefeeder/config.go

+13-2
Original file line numberDiff line numberDiff line change
@@ -15,18 +15,23 @@ config_path = ""
1515
1616
# Log level of price feeder process.
1717
log_level = "info"
18+
19+
# Enable the price feeder.
20+
enable = false
1821
`
1922
)
2023

2124
const (
22-
FlagConfigPath = "pricefeeder.config_path"
23-
FlagLogLevel = "pricefeeder.log_level"
25+
FlagConfigPath = "pricefeeder.config_path"
26+
FlagLogLevel = "pricefeeder.log_level"
27+
FlagEnablePriceFeeder = "pricefeeder.enable"
2428
)
2529

2630
// AppConfig defines the app configuration for the price feeder that must be set in the app.toml file.
2731
type AppConfig struct {
2832
ConfigPath string `mapstructure:"config_path"`
2933
LogLevel string `mapstructure:"log_level"`
34+
Enable bool `mapstructure:"enable"`
3035
}
3136

3237
// ValidateBasic performs basic validation of the price feeder app config.
@@ -57,6 +62,12 @@ func ReadConfigFromAppOpts(opts servertypes.AppOptions) (AppConfig, error) {
5762
}
5863
}
5964

65+
if v := opts.Get(FlagEnablePriceFeeder); v != nil {
66+
if cfg.Enable, err = cast.ToBoolE(v); err != nil {
67+
return cfg, err
68+
}
69+
}
70+
6071
if err := cfg.ValidateBasic(); err != nil {
6172
return cfg, err
6273
}

tests/e2e/orchestrator/orchestrator.go

+1
Original file line numberDiff line numberDiff line change
@@ -335,6 +335,7 @@ func (o *Orchestrator) runValidators(t *testing.T) {
335335
"start",
336336
"--pricefeeder.config_path=/root/pricefeeder/price-feeder.example.toml",
337337
"--pricefeeder.log_level=info",
338+
"--pricefeeder.enable=true",
338339
}
339340

340341
runOpts := &dockertest.RunOptions{

x/oracle/abci/endblocker.go

+3-3
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,8 @@ func EndBlocker(ctx context.Context, k keeper.Keeper) error {
3232

3333
params := k.GetParams(sdkCtx)
3434

35-
// Start price feeder if it hasn't been started.
36-
if k.PriceFeeder.Oracle == nil {
35+
// Start price feeder if it hasn't been started, and it is enabled.
36+
if k.PriceFeeder.Oracle == nil && k.PriceFeeder.AppConfig.Enable {
3737
go func() {
3838
err := k.PriceFeeder.Start(sdkCtx.BlockHeight(), params)
3939
if err != nil {
@@ -51,7 +51,7 @@ func EndBlocker(ctx context.Context, k keeper.Keeper) error {
5151
}
5252

5353
if k.IsPeriodLastBlock(sdkCtx, params.VotePeriod) {
54-
if k.PriceFeeder.Oracle != nil {
54+
if k.PriceFeeder.Oracle != nil && k.PriceFeeder.AppConfig.Enable {
5555
// Update price feeder oracle with latest params.
5656
k.PriceFeeder.Oracle.ParamCache.UpdateParamCache(sdkCtx.BlockHeight(), k.GetParams(sdkCtx), nil)
5757

0 commit comments

Comments
 (0)