diff options
author | moneromooo-monero <moneromooo-monero@users.noreply.github.com> | 2017-09-01 11:59:24 +0100 |
---|---|---|
committer | moneromooo-monero <moneromooo-monero@users.noreply.github.com> | 2017-09-01 11:59:24 +0100 |
commit | 5b29e87f8514b537a2ba779f4566015c42130f3a (patch) | |
tree | 1edc1681cf1d743e8011641d5850d29e55bd0132 | |
parent | blockchain_import: do not error out on truncated files (diff) | |
download | monero-5b29e87f8514b537a2ba779f4566015c42130f3a.tar.xz |
blockchain_import: properly cleanup core/db on exit
-rw-r--r-- | src/blockchain_utilities/blockchain_import.cpp | 28 |
1 files changed, 9 insertions, 19 deletions
diff --git a/src/blockchain_utilities/blockchain_import.cpp b/src/blockchain_utilities/blockchain_import.cpp index b5917f9c0..9afad95dc 100644 --- a/src/blockchain_utilities/blockchain_import.cpp +++ b/src/blockchain_utilities/blockchain_import.cpp @@ -692,18 +692,12 @@ int main(int argc, char* argv[]) MINFO("bootstrap file path: " << import_file_path); MINFO("database path: " << m_config_folder); + cryptonote::cryptonote_protocol_stub pr; //TODO: stub only for this kind of test, make real validation of relayed objects + cryptonote::core core(&pr); + try { - // fake_core needed for verification to work when enabled. - // - // NOTE: don't need fake_core method of doing things when we're going to call - // BlockchainDB add_block() directly and have available the 3 block - // properties to do so. Both ways work, but fake core isn't necessary in that - // circumstance. - - cryptonote::cryptonote_protocol_stub pr; //TODO: stub only for this kind of test, make real validation of relayed objects - cryptonote::core core(&pr); core.disable_dns_checkpoints(true); if (!core.init(vm, NULL)) { @@ -731,23 +725,19 @@ int main(int argc, char* argv[]) import_from_file(core, import_file_path, block_stop); + // ensure db closed + // - transactions properly checked and handled + // - disk sync if needed + // + core.deinit(); } catch (const DB_ERROR& e) { std::cout << std::string("Error loading blockchain db: ") + e.what() + " -- shutting down now" << ENDL; + core.deinit(); return 1; } - // destructors called at exit: - // - // ensure db closed - // - transactions properly checked and handled - // - disk sync if needed - // - // fake_core object's destructor is called when it goes out of scope. For an - // LMDB fake_core, it calls Blockchain::deinit() on its object, which in turn - // calls delete on its BlockchainDB derived class' object, which closes its - // files. return 0; CATCH_ENTRY("Import error", 1); |