Skip to content

Commit

Permalink
engine: Set full state on settings struct (thrasher-corp#697)
Browse files Browse the repository at this point in the history
* engine: Set full state on settings validation before flag check to minimise future work when settings are added.

* engine: purge sillyness comment

* engine: address logic issues with change

* engine: invert boolean check
  • Loading branch information
shazbert authored Jun 23, 2021
1 parent 7a232df commit bbdaae0
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 89 deletions.
17 changes: 8 additions & 9 deletions engine/apiserver_types.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,15 +22,14 @@ const (
)

var (
wsHub *websocketHub
wsHubStarted bool
errNilRemoteConfig = errors.New("received nil remote config")
errNilPProfConfig = errors.New("received nil pprof config")
errNilBot = errors.New("received nil engine bot")
errEmptyConfigPath = errors.New("received empty config path")
errServerDisabled = errors.New("server disabled")
errInvalidListenAddress = errors.New("invalid listen address")
errAlreadyRunning = errors.New("already running")
wsHub *websocketHub
wsHubStarted bool
errNilRemoteConfig = errors.New("received nil remote config")
errNilPProfConfig = errors.New("received nil pprof config")
errNilBot = errors.New("received nil engine bot")
errEmptyConfigPath = errors.New("received empty config path")
errServerDisabled = errors.New("server disabled")
errAlreadyRunning = errors.New("already running")
// ErrWebsocketServiceNotRunning occurs when a message is sent to be broadcast via websocket
// and its not running
ErrWebsocketServiceNotRunning = errors.New("websocket service not started")
Expand Down
100 changes: 20 additions & 80 deletions engine/engine.go
Original file line number Diff line number Diff line change
Expand Up @@ -137,99 +137,52 @@ func loadConfigWithSettings(settings *Settings, flagSet map[string]bool) (*confi

// validateSettings validates and sets all bot settings
func validateSettings(b *Engine, s *Settings, flagSet map[string]bool) {
b.Settings.Verbose = s.Verbose
b.Settings.EnableDryRun = s.EnableDryRun
b.Settings.EnableAllExchanges = s.EnableAllExchanges
b.Settings.EnableAllPairs = s.EnableAllPairs
b.Settings.EnableCoinmarketcapAnalysis = s.EnableCoinmarketcapAnalysis
b.Settings.EnableDatabaseManager = s.EnableDatabaseManager
b.Settings.EnableGCTScriptManager = s.EnableGCTScriptManager && (flagSet["gctscriptmanager"] || b.Config.GCTScript.Enabled)
b.Settings.MaxVirtualMachines = s.MaxVirtualMachines
b.Settings.EnableDispatcher = s.EnableDispatcher
b.Settings.EnablePortfolioManager = s.EnablePortfolioManager
b.Settings.WithdrawCacheSize = s.WithdrawCacheSize
b.Settings = *s

b.Settings.EnableGCTScriptManager = b.Settings.EnableGCTScriptManager &&
(flagSet["gctscriptmanager"] || b.Config.GCTScript.Enabled)

if b.Settings.EnablePortfolioManager {
if b.Settings.PortfolioManagerDelay == time.Duration(0) && s.PortfolioManagerDelay > 0 {
b.Settings.PortfolioManagerDelay = s.PortfolioManagerDelay
} else {
if b.Settings.PortfolioManagerDelay <= 0 {
b.Settings.PortfolioManagerDelay = PortfolioSleepDelay
}
}

if flagSet["grpc"] {
b.Settings.EnableGRPC = s.EnableGRPC
} else {
if !flagSet["grpc"] {
b.Settings.EnableGRPC = b.Config.RemoteControl.GRPC.Enabled
}

if flagSet["grpcproxy"] {
b.Settings.EnableGRPCProxy = s.EnableGRPCProxy
} else {
if !flagSet["grpcproxy"] {
b.Settings.EnableGRPCProxy = b.Config.RemoteControl.GRPC.GRPCProxyEnabled
}

if flagSet["websocketrpc"] {
b.Settings.EnableWebsocketRPC = s.EnableWebsocketRPC
} else {
if !flagSet["websocketrpc"] {
b.Settings.EnableWebsocketRPC = b.Config.RemoteControl.WebsocketRPC.Enabled
}

if flagSet["deprecatedrpc"] {
b.Settings.EnableDeprecatedRPC = s.EnableDeprecatedRPC
} else {
if !flagSet["deprecatedrpc"] {
b.Settings.EnableDeprecatedRPC = b.Config.RemoteControl.DeprecatedRPC.Enabled
}

if flagSet["maxvirtualmachines"] {
maxMachines := uint8(s.MaxVirtualMachines)
maxMachines := uint8(b.Settings.MaxVirtualMachines)
b.gctScriptManager.MaxVirtualMachines = &maxMachines
}

if flagSet["withdrawcachesize"] {
withdraw.CacheSize = s.WithdrawCacheSize
withdraw.CacheSize = b.Settings.WithdrawCacheSize
}

b.Settings.EnableCommsRelayer = s.EnableCommsRelayer
b.Settings.EnableEventManager = s.EnableEventManager

if b.Settings.EnableEventManager {
if b.Settings.EventManagerDelay != time.Duration(0) && s.EventManagerDelay > 0 {
b.Settings.EventManagerDelay = s.EventManagerDelay
} else {
b.Settings.EventManagerDelay = EventSleepDelay
}
}

b.Settings.EnableConnectivityMonitor = s.EnableConnectivityMonitor
b.Settings.EnableNTPClient = s.EnableNTPClient
b.Settings.EnableOrderManager = s.EnableOrderManager
b.Settings.EnableExchangeSyncManager = s.EnableExchangeSyncManager
b.Settings.EnableTickerSyncing = s.EnableTickerSyncing
b.Settings.EnableOrderbookSyncing = s.EnableOrderbookSyncing
b.Settings.EnableTradeSyncing = s.EnableTradeSyncing
b.Settings.SyncWorkers = s.SyncWorkers
b.Settings.SyncTimeoutREST = s.SyncTimeoutREST
b.Settings.SyncTimeoutWebsocket = s.SyncTimeoutWebsocket
b.Settings.SyncContinuously = s.SyncContinuously
b.Settings.EnableDepositAddressManager = s.EnableDepositAddressManager
b.Settings.EnableExchangeAutoPairUpdates = s.EnableExchangeAutoPairUpdates
b.Settings.EnableExchangeWebsocketSupport = s.EnableExchangeWebsocketSupport
b.Settings.EnableExchangeRESTSupport = s.EnableExchangeRESTSupport
b.Settings.EnableExchangeVerbose = s.EnableExchangeVerbose
b.Settings.EnableExchangeHTTPRateLimiter = s.EnableExchangeHTTPRateLimiter
b.Settings.EnableExchangeHTTPDebugging = s.EnableExchangeHTTPDebugging
b.Settings.DisableExchangeAutoPairUpdates = s.DisableExchangeAutoPairUpdates
b.Settings.ExchangePurgeCredentials = s.ExchangePurgeCredentials
b.Settings.EnableWebsocketRoutine = s.EnableWebsocketRoutine
if b.Settings.EnableEventManager && b.Settings.EventManagerDelay <= 0 {
b.Settings.EventManagerDelay = EventSleepDelay
}

// Checks if the flag values are different from the defaults
b.Settings.MaxHTTPRequestJobsLimit = s.MaxHTTPRequestJobsLimit
if b.Settings.MaxHTTPRequestJobsLimit != int(request.DefaultMaxRequestJobs) &&
s.MaxHTTPRequestJobsLimit > 0 {
b.Settings.MaxHTTPRequestJobsLimit > 0 {
request.MaxRequestJobs = int32(b.Settings.MaxHTTPRequestJobsLimit)
}

b.Settings.TradeBufferProcessingInterval = s.TradeBufferProcessingInterval
if b.Settings.TradeBufferProcessingInterval != trade.DefaultProcessorIntervalTime {
if b.Settings.TradeBufferProcessingInterval >= time.Second {
trade.BufferProcessorIntervalTime = b.Settings.TradeBufferProcessingInterval
Expand All @@ -240,36 +193,23 @@ func validateSettings(b *Engine, s *Settings, flagSet map[string]bool) {
}
}

b.Settings.RequestMaxRetryAttempts = s.RequestMaxRetryAttempts
if b.Settings.RequestMaxRetryAttempts != request.DefaultMaxRetryAttempts && s.RequestMaxRetryAttempts > 0 {
if b.Settings.RequestMaxRetryAttempts != request.DefaultMaxRetryAttempts &&
b.Settings.RequestMaxRetryAttempts > 0 {
request.MaxRetryAttempts = b.Settings.RequestMaxRetryAttempts
}

b.Settings.HTTPTimeout = s.HTTPTimeout
if s.HTTPTimeout != time.Duration(0) && s.HTTPTimeout > 0 {
b.Settings.HTTPTimeout = s.HTTPTimeout
} else {
if b.Settings.HTTPTimeout <= 0 {
b.Settings.HTTPTimeout = b.Config.GlobalHTTPTimeout
}

b.Settings.HTTPUserAgent = s.HTTPUserAgent
b.Settings.HTTPProxy = s.HTTPProxy

if s.GlobalHTTPTimeout != time.Duration(0) && s.GlobalHTTPTimeout > 0 {
b.Settings.GlobalHTTPTimeout = s.GlobalHTTPTimeout
} else {
if b.Settings.GlobalHTTPTimeout <= 0 {
b.Settings.GlobalHTTPTimeout = b.Config.GlobalHTTPTimeout
}
common.HTTPClient = common.NewHTTPClientWithTimeout(b.Settings.GlobalHTTPTimeout)

b.Settings.GlobalHTTPUserAgent = s.GlobalHTTPUserAgent
if b.Settings.GlobalHTTPUserAgent != "" {
common.HTTPUserAgent = b.Settings.GlobalHTTPUserAgent
}

b.Settings.GlobalHTTPProxy = s.GlobalHTTPProxy
b.Settings.DispatchMaxWorkerAmount = s.DispatchMaxWorkerAmount
b.Settings.DispatchJobsLimit = s.DispatchJobsLimit
}

// PrintSettings returns the engine settings
Expand Down

0 comments on commit bbdaae0

Please sign in to comment.