Fix(settings): crash when enabling history archive and disabling logs

fixes #14643
(see more details in the ticket)
This commit is contained in:
Andrey Bocharnikov 2024-05-16 18:03:16 +04:00
parent a776f23965
commit 9d7d3b245e
2 changed files with 21 additions and 7 deletions

View File

@ -72,6 +72,8 @@ proc init*(self: Service) =
return
proc saveConfiguration(self: Service, configuration: NodeConfigDto): bool =
# FIXME: this method should be removed and the configuration should be updated in the status-go
# (see SetLogLevel, #14643)
if(not self.settingsService.saveNodeConfiguration(configuration.toJsonNode())):
error "error saving node configuration "
return false
@ -205,14 +207,16 @@ proc isDebugEnabled*(self: Service): bool =
return logLevel in DEBUG_LOG_LEVELS
proc setLogLevel*(self: Service, logLevel: LogLevel): bool =
var newConfiguration = self.configuration
newConfiguration.LogLevel = $logLevel
if self.saveConfiguration(newConfiguration):
self.events.emit(SIGNAL_NODE_LOG_LEVEL_UPDATE, NodeLogLevelUpdatedArgs(logLevel: logLevel))
return true
else:
let response = status_node_config.setLogLevel(logLevel)
if not response.error.isNil:
error "failed to set log level: ", errDescription = response.error.message
return false
self.configuration.LogLevel = $logLevel
self.events.emit(SIGNAL_NODE_LOG_LEVEL_UPDATE, NodeLogLevelUpdatedArgs(logLevel: logLevel))
return true
proc getNimbusProxyConfig(self: Service): bool =
return self.configuration.NimbusProxyConfig.Enabled

View File

@ -41,3 +41,13 @@ proc disableCommunityHistoryArchiveSupport*(): RpcResponse[JsonNode] =
except RpcException as e:
error "error doing rpc request", methodName = "disableCommunityHistoryArchiveProtocol", exception=e.msg
raise newException(RpcException, e.msg)
proc setLogLevel*(logLevel: LogLevel): RpcResponse[JsonNode] =
try:
let payload = %*[{
"logLevel": $logLevel
}]
result = core.callPrivateRPC("setLogLevel".prefix, payload)
except RpcException as e:
error "error doing rpc request", methodName = "setLogLevel", exception=e.msg
raise newException(RpcException, e.msg)