From a5990a00b7230be86254c8e9c8f50b985696b060 Mon Sep 17 00:00:00 2001 From: sowle Date: Thu, 14 Nov 2019 05:54:52 +0300 Subject: [PATCH] select_db_engine_from_arg improvements and arg_db_engine option fix --- src/common/db_backend_selector.h | 39 +++++++++++-------- src/currency_core/blockchain_storage.cpp | 1 + .../qt-daemon/application/daemon_backend.cpp | 1 - tests/core_tests/chaingen_main.cpp | 1 - 4 files changed, 24 insertions(+), 18 deletions(-) diff --git a/src/common/db_backend_selector.h b/src/common/db_backend_selector.h index afaee01a..cc90af76 100644 --- a/src/common/db_backend_selector.h +++ b/src/common/db_backend_selector.h @@ -15,27 +15,34 @@ namespace tools namespace db { inline - bool select_db_engine_from_arg(const boost::program_options::variables_map& vm, tools::db::basic_db_accessor& rdb) + bool select_db_engine_from_arg(const boost::program_options::variables_map& vm, tools::db::basic_db_accessor& rdb) { - if (command_line::get_arg(vm, command_line::arg_db_engine) == ARG_DB_ENGINE_LMDB) + try { - rdb.reset_backend(std::shared_ptr(new tools::db::lmdb_db_backend)); + if (command_line::get_arg(vm, command_line::arg_db_engine) == ARG_DB_ENGINE_LMDB) + { + rdb.reset_backend(std::shared_ptr(new tools::db::lmdb_db_backend)); + return true; + } + else if (command_line::get_arg(vm, command_line::arg_db_engine) == ARG_DB_ENGINE_MDBX) + { + #ifdef ENABLED_ENGINE_MDBX + rdb.reset_backend(std::shared_ptr(new tools::db::mdbx_db_backend)); + return true; + #else + LOG_PRINT_L0(" DB ENGINE: " << ARG_DB_ENGINE_MDBX << " is not suported by this build(see DISABLE_MDBX cmake option), STOPPING"); + return false; + #endif + } } - else if (command_line::get_arg(vm, command_line::arg_db_engine) == ARG_DB_ENGINE_MDBX) + catch (...) { -#ifdef ENABLED_ENGINE_MDBX - rdb.reset_backend(std::shared_ptr(new tools::db::mdbx_db_backend)); -#else - LOG_PRINT_L0(" DB ENGINE: " << ARG_DB_ENGINE_MDBX << " is not suported by this build(see DISABLE_MDBX cmake option), STOPPING"); - return false; -#endif - } - else - { - LOG_PRINT_RED_L0(" UNKNOWN DB ENGINE: " << command_line::get_arg(vm, command_line::arg_db_engine) << ", STOPPING"); + LOG_ERROR("internal error: arg_db_engine command-line option could not be read (exception caught)"); return false; } - return true; + + LOG_PRINT_RED_L0(" UNKNOWN DB ENGINE: " << command_line::get_arg(vm, command_line::arg_db_engine) << ", STOPPING"); + return false; } } -} \ No newline at end of file +} diff --git a/src/currency_core/blockchain_storage.cpp b/src/currency_core/blockchain_storage.cpp index c3538879..28ab6d1a 100644 --- a/src/currency_core/blockchain_storage.cpp +++ b/src/currency_core/blockchain_storage.cpp @@ -152,6 +152,7 @@ void blockchain_storage::init_options(boost::program_options::options_descriptio { command_line::add_arg(desc, arg_db_cache_l1); command_line::add_arg(desc, arg_db_cache_l2); + command_line::add_arg(desc, command_line::arg_db_engine); } //------------------------------------------------------------------ uint64_t blockchain_storage::get_block_h_older_then(uint64_t timestamp) const diff --git a/src/gui/qt-daemon/application/daemon_backend.cpp b/src/gui/qt-daemon/application/daemon_backend.cpp index 36ac093e..dab77d8b 100644 --- a/src/gui/qt-daemon/application/daemon_backend.cpp +++ b/src/gui/qt-daemon/application/daemon_backend.cpp @@ -120,7 +120,6 @@ bool daemon_backend::init(int argc, char* argv[], view::i_view* pview_handler) command_line::add_arg(desc_cmd_sett, command_line::arg_log_level); command_line::add_arg(desc_cmd_sett, command_line::arg_console); command_line::add_arg(desc_cmd_sett, command_line::arg_show_details); - command_line::add_arg(desc_cmd_sett, command_line::arg_db_engine); command_line::add_arg(desc_cmd_sett, arg_alloc_win_console); command_line::add_arg(desc_cmd_sett, arg_html_folder); command_line::add_arg(desc_cmd_sett, arg_xcode_stub); diff --git a/tests/core_tests/chaingen_main.cpp b/tests/core_tests/chaingen_main.cpp index 30cbeaa4..1a65e246 100644 --- a/tests/core_tests/chaingen_main.cpp +++ b/tests/core_tests/chaingen_main.cpp @@ -655,7 +655,6 @@ int main(int argc, char* argv[]) command_line::add_arg(desc_options, arg_run_single_test); command_line::add_arg(desc_options, arg_enable_debug_asserts); command_line::add_arg(desc_options, command_line::arg_data_dir, std::string(".")); - command_line::add_arg(desc_options, command_line::arg_db_engine); bool r = command_line::handle_error_helper(desc_options, [&]() {