aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormoneromooo-monero <moneromooo-monero@users.noreply.github.com>2017-09-01 11:59:24 +0100
committermoneromooo-monero <moneromooo-monero@users.noreply.github.com>2017-09-01 11:59:24 +0100
commit5b29e87f8514b537a2ba779f4566015c42130f3a (patch)
tree1edc1681cf1d743e8011641d5850d29e55bd0132
parentblockchain_import: do not error out on truncated files (diff)
downloadmonero-5b29e87f8514b537a2ba779f4566015c42130f3a.tar.xz
blockchain_import: properly cleanup core/db on exit
-rw-r--r--src/blockchain_utilities/blockchain_import.cpp28
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);