From dddc18fb4d24b4b8ff0069594a54eb699d560e56 Mon Sep 17 00:00:00 2001 From: Denis Kolodin Date: Fri, 8 Oct 2021 14:31:40 +0300 Subject: [PATCH] fix: add details to UnknownError (#3429) Description --- This PR adds (requires) details to `UnknownError`. Motivation and Context --- Related to #3423 Without the fix some errors are indiscernible. Example: ```sh Running `target/debug/tari_base_node` Initializing logging according to "/home/denis/.tari/config/log4rs_base_node.yml" 10:47 ERROR Network discovery errored: Connectivity error: Internal actor response was unexpectedly cancelled. Waiting for 5s 10:47 ERROR DhtConnectivity exited with error: ConnectivityError(ActorDisconnected) UnknownError 10:47 ERROR Exiting with code (102): UnknownError ``` With the fix: ```sh Running `target/debug/tari_base_node` Initializing logging according to "/home/denis/.tari/config/log4rs_base_node.yml" 10:48 ERROR Network discovery errored: Connectivity error: Internal actor response was unexpectedly cancelled. Waiting for 5s UnknownError("Failed to initialize tor hidden service: TorClientError: Command failed: Authentication failed: Wrong length on authentication cookie.") 10:48 ERROR Exiting with code (102): UnknownError("Failed to initialize tor hidden service: TorClientError: Command failed: Authentication failed: Wrong length on authentication cookie.") ``` How Has This Been Tested? --- Manually by activating **CookieAuthentication 1** option in the Tor's settings. --- applications/tari_app_utilities/src/utilities.rs | 6 +++--- applications/tari_base_node/src/main.rs | 4 ++-- applications/tari_base_node/src/recovery.rs | 7 ++++--- 3 files changed, 9 insertions(+), 8 deletions(-) diff --git a/applications/tari_app_utilities/src/utilities.rs b/applications/tari_app_utilities/src/utilities.rs index 36ff5cf060..989c871841 100644 --- a/applications/tari_app_utilities/src/utilities.rs +++ b/applications/tari_app_utilities/src/utilities.rs @@ -52,8 +52,8 @@ pub const LOG_TARGET: &str = "tari::application"; pub enum ExitCodes { #[error("There is an error in the wallet configuration: {0}")] ConfigError(String), - #[error("The application exited because an unknown error occurred. Check the logs for details.")] - UnknownError, + #[error("The application exited because an unknown error occurred: {0}. Check the logs for more details.")] + UnknownError(String), #[error("The application exited because an interface error occurred. Check the logs for details.")] InterfaceError, #[error("The application exited. {0}")] @@ -86,7 +86,7 @@ impl ExitCodes { pub fn as_i32(&self) -> i32 { match self { Self::ConfigError(_) => 101, - Self::UnknownError => 102, + Self::UnknownError(_) => 102, Self::InterfaceError => 103, Self::WalletError(_) => 104, Self::GrpcError(_) => 105, diff --git a/applications/tari_base_node/src/main.rs b/applications/tari_base_node/src/main.rs index 23a15bbf60..6c8d10475d 100644 --- a/applications/tari_base_node/src/main.rs +++ b/applications/tari_base_node/src/main.rs @@ -148,7 +148,7 @@ fn main_inner() -> Result<(), ExitCodes> { // Set up the Tokio runtime let rt = setup_runtime(&node_config).map_err(|e| { error!(target: LOG_TARGET, "{}", e); - ExitCodes::UnknownError + ExitCodes::UnknownError(e) })?; rt.block_on(run_node(node_config.into(), bootstrap))?; @@ -222,7 +222,7 @@ async fn run_node(node_config: Arc, bootstrap: ConfigBootstrap) -> return ExitCodes::ConfigError(boxed_error.to_string()); } } - ExitCodes::UnknownError + ExitCodes::UnknownError(err.to_string()) })?; if node_config.grpc_enabled { diff --git a/applications/tari_base_node/src/recovery.rs b/applications/tari_base_node/src/recovery.rs index 8e0e0786c7..391423c12e 100644 --- a/applications/tari_base_node/src/recovery.rs +++ b/applications/tari_base_node/src/recovery.rs @@ -62,12 +62,13 @@ pub fn initiate_recover_db(node_config: &GlobalConfig) -> Result<(), ExitCodes> DatabaseType::LMDB(p) => { let _backend = create_recovery_lmdb_database(&p).map_err(|err| { error!(target: LOG_TARGET, "{}", err); - ExitCodes::UnknownError + ExitCodes::UnknownError(err.to_string()) })?; }, _ => { - error!(target: LOG_TARGET, "Recovery mode is only available for LMDB"); - return Err(ExitCodes::UnknownError); + const MSG: &str = "Recovery mode is only available for LMDB"; + error!(target: LOG_TARGET, "{}", MSG); + return Err(ExitCodes::UnknownError(MSG.to_string())); }, }; Ok(())