From 43161cfec9511a8a099e195553567f9b5084fb63 Mon Sep 17 00:00:00 2001 From: Wesley Shillingford Date: Tue, 15 Oct 2019 09:23:07 +0100 Subject: [PATCH] Output error message with qt wallet if RocksDB is enabled but node is not built with it (#2340) --- nano/lib/errors.cpp | 2 ++ nano/lib/errors.hpp | 1 + nano/nano_wallet/entry.cpp | 7 +++++++ nano/node/node.cpp | 2 +- 4 files changed, 11 insertions(+), 1 deletion(-) diff --git a/nano/lib/errors.cpp b/nano/lib/errors.cpp index ef962c22..85185529 100644 --- a/nano/lib/errors.cpp +++ b/nano/lib/errors.cpp @@ -250,6 +250,8 @@ std::string nano::error_config_messages::message (int ev) const return "Invalid configuration value"; case nano::error_config::missing_value: return "Missing value in configuration"; + case nano::error_config::rocksdb_enabled_but_not_supported: + return "RocksDB has been enabled, but the node has not been built with RocksDB support. Set the CMake flag -DNANO_ROCKSDB=ON"; } return "Invalid error code"; diff --git a/nano/lib/errors.hpp b/nano/lib/errors.hpp index 772e148a..5be9663d 100644 --- a/nano/lib/errors.hpp +++ b/nano/lib/errors.hpp @@ -139,6 +139,7 @@ enum class error_config generic = 1, invalid_value, missing_value, + rocksdb_enabled_but_not_supported }; } // nano namespace diff --git a/nano/nano_wallet/entry.cpp b/nano/nano_wallet/entry.cpp index fe34da0a..912b6131 100644 --- a/nano/nano_wallet/entry.cpp +++ b/nano/nano_wallet/entry.cpp @@ -66,6 +66,13 @@ int run_wallet (QApplication & application, int argc, char * const * argv, boost error = read_and_update_wallet_config (wallet_config, data_path); } +#if !NANO_ROCKSDB + if (!error && config.node.rocksdb_config.enable) + { + error = nano::error_config::rocksdb_enabled_but_not_supported; + } +#endif + if (!error) { nano::set_use_memory_pools (config.node.use_memory_pools); diff --git a/nano/node/node.cpp b/nano/node/node.cpp index 8dbd7005..8ffa50d7 100644 --- a/nano/node/node.cpp +++ b/nano/node/node.cpp @@ -1372,7 +1372,7 @@ std::unique_ptr nano::make_store (nano::logger_mt & logger, b #if NANO_ROCKSDB return make_rocksdb (); #else - // Can only use the rocksdb_store if the node has been build with rocksdb support + logger.always_log (std::error_code (nano::error_config::rocksdb_enabled_but_not_supported).message ()); release_assert (false); return nullptr; #endif