-
Notifications
You must be signed in to change notification settings - Fork 10
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
feat: add flag to enable price-feeder on node start #157
Changes from 1 commit
12be611
2187b2e
a916f05
50390ad
35a2f68
8e1ad22
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
@@ -5,6 +5,7 @@ | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
"fmt" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
"io" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
"os" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
"path" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
"path/filepath" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
"time" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
@@ -49,11 +50,17 @@ | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
srvflags "github.com/evmos/evmos/v14/server/flags" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
cmdcfg "github.com/ExocoreNetwork/exocore/cmd/config" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
pricefeeder "github.com/ExocoreNetwork/price-feeder/external" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
evmoskr "github.com/evmos/evmos/v14/crypto/keyring" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
const ( | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
EnvPrefix = "EXOCORE" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
EnvPrefix = "EXOCORE" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
flagOracle = "oracle" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
flagMnemonic = "mnemonic" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
confPath = "config" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
confOracle = "oracle_feeder.yaml" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
cmdStartName = "start" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
// NewRootCmd creates a new root command for exocored. It is called once in the | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
@@ -96,7 +103,6 @@ | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
if err := client.SetCmdClientContextHandler(initClientCtx, cmd); err != nil { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
return err | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
// override the app and tendermint configuration | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
customAppTemplate, customAppConfig := initAppConfig() | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
customTMConfig := initTendermintConfig() | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
@@ -132,7 +138,26 @@ | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
a.appExport, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
addModuleInitFlags, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
startCmd, _, _ := rootCmd.Find([]string{cmdStartName}) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
startCmd.Flags().Bool(flagOracle, false, "enable oracle feeder") | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
startCmd.Flags().String(flagMnemonic, "", "set validator consensus key's mnemonic") | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
preRunE := startCmd.PreRunE | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
// add preRun to run price-feeder first before starting the node | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
startCmd.PreRunE = func(cmd *cobra.Command, args []string) error { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
if enableFeeder, _ := cmd.Flags().GetBool(flagOracle); enableFeeder { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
clientCtx := cmd.Context().Value(client.ClientContextKey).(*client.Context) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
go func() { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
defer func() { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
if err := recover(); err != nil { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
fmt.Println("price-feeder failed", err) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
}() | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
mnemonic, _ := cmd.Flags().GetString(flagMnemonic) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
pricefeeder.StartPriceFeeder(path.Join(clientCtx.HomeDir, confPath, confOracle), mnemonic, path.Join(clientCtx.HomeDir, confPath)) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
}() | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
return preRunE(cmd, args) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Comment on lines
+144
to
+160
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Improve error handling within the goroutine. Spawning a goroutine can introduce non-determinism. Ensure that any panic is logged appropriately to aid in debugging. go func() {
defer func() {
if err := recover(); err != nil {
fmt.Println("price-feeder failed", err)
+ // Log the error with more context
+ log.Printf("price-feeder panic: %v", err)
}
}()
mnemonic, _ := cmd.Flags().GetString(flagMnemonic)
pricefeeder.StartPriceFeeder(path.Join(clientCtx.HomeDir, confPath, confOracle), mnemonic, path.Join(clientCtx.HomeDir, confPath))
}() Committable suggestion
Suggested change
ToolsGitHub Check: CodeQL
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
// add keybase, auxiliary RPC, query, and tx child commands | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
rootCmd.AddCommand( | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
rpc.StatusCommand(), | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Check notice
Code scanning / CodeQL
Spawning a Go routine Note