Moved the pruned LMDB table handler to its store class
This commit is contained in:
parent
5edbfc8434
commit
91ab6ec54c
4 changed files with 42 additions and 33 deletions
|
|
@ -1834,6 +1834,10 @@ TEST (mdb_block_store, upgrade_v18_v19)
|
||||||
ASSERT_LT (18, store.version.get (transaction));
|
ASSERT_LT (18, store.version.get (transaction));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
namespace nano
|
||||||
|
{
|
||||||
|
namespace lmdb
|
||||||
|
{
|
||||||
TEST (mdb_block_store, upgrade_v19_v20)
|
TEST (mdb_block_store, upgrade_v19_v20)
|
||||||
{
|
{
|
||||||
if (nano::rocksdb_config::using_rocksdb_in_tests ())
|
if (nano::rocksdb_config::using_rocksdb_in_tests ())
|
||||||
|
|
@ -1850,18 +1854,20 @@ TEST (mdb_block_store, upgrade_v19_v20)
|
||||||
auto transaction (store.tx_begin_write ());
|
auto transaction (store.tx_begin_write ());
|
||||||
store.initialize (transaction, ledger.cache, nano::dev::constants);
|
store.initialize (transaction, ledger.cache, nano::dev::constants);
|
||||||
// Delete pruned table
|
// Delete pruned table
|
||||||
ASSERT_FALSE (mdb_drop (store.env.tx (transaction), store.pruned_handle, 1));
|
ASSERT_FALSE (mdb_drop (store.env.tx (transaction), store.pruned_store.pruned_handle, 1));
|
||||||
store.version.put (transaction, 19);
|
store.version.put (transaction, 19);
|
||||||
}
|
}
|
||||||
// Upgrading should create the table
|
// Upgrading should create the table
|
||||||
nano::lmdb::store store (logger, path, nano::dev::constants);
|
nano::lmdb::store store (logger, path, nano::dev::constants);
|
||||||
ASSERT_FALSE (store.init_error ());
|
ASSERT_FALSE (store.init_error ());
|
||||||
ASSERT_NE (store.pruned_handle, 0);
|
ASSERT_NE (store.pruned_store.pruned_handle, 0);
|
||||||
|
|
||||||
// Version should be correct
|
// Version should be correct
|
||||||
auto transaction (store.tx_begin_read ());
|
auto transaction (store.tx_begin_read ());
|
||||||
ASSERT_LT (19, store.version.get (transaction));
|
ASSERT_LT (19, store.version.get (transaction));
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
TEST (mdb_block_store, upgrade_v20_v21)
|
TEST (mdb_block_store, upgrade_v20_v21)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -215,7 +215,7 @@ void nano::lmdb::store::open_databases (bool & error_a, nano::transaction const
|
||||||
error_a |= mdb_dbi_open (env.tx (transaction_a), "online_weight", flags, &online_weight_store.online_weight_handle) != 0;
|
error_a |= mdb_dbi_open (env.tx (transaction_a), "online_weight", flags, &online_weight_store.online_weight_handle) != 0;
|
||||||
error_a |= mdb_dbi_open (env.tx (transaction_a), "meta", flags, &meta_handle) != 0;
|
error_a |= mdb_dbi_open (env.tx (transaction_a), "meta", flags, &meta_handle) != 0;
|
||||||
error_a |= mdb_dbi_open (env.tx (transaction_a), "peers", flags, &peers_handle) != 0;
|
error_a |= mdb_dbi_open (env.tx (transaction_a), "peers", flags, &peers_handle) != 0;
|
||||||
error_a |= mdb_dbi_open (env.tx (transaction_a), "pruned", flags, &pruned_handle) != 0;
|
error_a |= mdb_dbi_open (env.tx (transaction_a), "pruned", flags, &pruned_store.pruned_handle) != 0;
|
||||||
error_a |= mdb_dbi_open (env.tx (transaction_a), "confirmation_height", flags, &confirmation_height_handle) != 0;
|
error_a |= mdb_dbi_open (env.tx (transaction_a), "confirmation_height", flags, &confirmation_height_handle) != 0;
|
||||||
error_a |= mdb_dbi_open (env.tx (transaction_a), "accounts", flags, &account_store.accounts_v0_handle) != 0;
|
error_a |= mdb_dbi_open (env.tx (transaction_a), "accounts", flags, &account_store.accounts_v0_handle) != 0;
|
||||||
account_store.accounts_handle = account_store.accounts_v0_handle;
|
account_store.accounts_handle = account_store.accounts_v0_handle;
|
||||||
|
|
@ -766,7 +766,7 @@ void nano::lmdb::store::upgrade_v18_to_v19 (nano::write_transaction const & tran
|
||||||
void nano::lmdb::store::upgrade_v19_to_v20 (nano::write_transaction const & transaction_a)
|
void nano::lmdb::store::upgrade_v19_to_v20 (nano::write_transaction const & transaction_a)
|
||||||
{
|
{
|
||||||
logger.always_log ("Preparing v19 to v20 database upgrade...");
|
logger.always_log ("Preparing v19 to v20 database upgrade...");
|
||||||
mdb_dbi_open (env.tx (transaction_a), "pruned", MDB_CREATE, &pruned_handle);
|
mdb_dbi_open (env.tx (transaction_a), "pruned", MDB_CREATE, &pruned_store.pruned_handle);
|
||||||
version.put (transaction_a, 20);
|
version.put (transaction_a, 20);
|
||||||
logger.always_log ("Finished creating new pruned table");
|
logger.always_log ("Finished creating new pruned table");
|
||||||
}
|
}
|
||||||
|
|
@ -877,7 +877,7 @@ MDB_dbi nano::lmdb::store::table_to_dbi (tables table_a) const
|
||||||
case tables::peers:
|
case tables::peers:
|
||||||
return peers_handle;
|
return peers_handle;
|
||||||
case tables::pruned:
|
case tables::pruned:
|
||||||
return pruned_handle;
|
return pruned_store.pruned_handle;
|
||||||
case tables::confirmation_height:
|
case tables::confirmation_height:
|
||||||
return confirmation_height_handle;
|
return confirmation_height_handle;
|
||||||
case tables::final_votes:
|
case tables::final_votes:
|
||||||
|
|
@ -916,7 +916,7 @@ bool nano::lmdb::store::copy_db (boost::filesystem::path const & destination_fil
|
||||||
void nano::lmdb::store::rebuild_db (nano::write_transaction const & transaction_a)
|
void nano::lmdb::store::rebuild_db (nano::write_transaction const & transaction_a)
|
||||||
{
|
{
|
||||||
// Tables with uint256_union key
|
// Tables with uint256_union key
|
||||||
std::vector<MDB_dbi> tables = { account_store.accounts_handle, blocks_handle, pruned_handle, confirmation_height_handle };
|
std::vector<MDB_dbi> tables = { account_store.accounts_handle, blocks_handle, pruned_store.pruned_handle, confirmation_height_handle };
|
||||||
for (auto const & table : tables)
|
for (auto const & table : tables)
|
||||||
{
|
{
|
||||||
MDB_dbi temp;
|
MDB_dbi temp;
|
||||||
|
|
|
||||||
|
|
@ -148,12 +148,6 @@ namespace lmdb
|
||||||
*/
|
*/
|
||||||
MDB_dbi meta_handle{ 0 };
|
MDB_dbi meta_handle{ 0 };
|
||||||
|
|
||||||
/**
|
|
||||||
* Pruned blocks hashes
|
|
||||||
* nano::block_hash -> none
|
|
||||||
*/
|
|
||||||
MDB_dbi pruned_handle{ 0 };
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Endpoints for peers
|
* Endpoints for peers
|
||||||
* nano::endpoint_key -> no_value
|
* nano::endpoint_key -> no_value
|
||||||
|
|
@ -267,6 +261,7 @@ namespace lmdb
|
||||||
friend class mdb_block_store_supported_version_upgrades_Test;
|
friend class mdb_block_store_supported_version_upgrades_Test;
|
||||||
friend class mdb_block_store_upgrade_v14_v15_Test;
|
friend class mdb_block_store_upgrade_v14_v15_Test;
|
||||||
friend class mdb_block_store_upgrade_v15_v16_Test;
|
friend class mdb_block_store_upgrade_v15_v16_Test;
|
||||||
|
friend class mdb_block_store_upgrade_v19_v20_Test;
|
||||||
friend void modify_account_info_to_v14 (nano::lmdb::store &, nano::transaction const &, nano::account const &, uint64_t, nano::block_hash const &);
|
friend void modify_account_info_to_v14 (nano::lmdb::store &, nano::transaction const &, nano::account const &, uint64_t, nano::block_hash const &);
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,8 @@
|
||||||
|
|
||||||
#include <nano/secure/store.hpp>
|
#include <nano/secure/store.hpp>
|
||||||
|
|
||||||
|
#include <lmdb/libraries/liblmdb/lmdb.h>
|
||||||
|
|
||||||
namespace nano
|
namespace nano
|
||||||
{
|
{
|
||||||
namespace lmdb
|
namespace lmdb
|
||||||
|
|
@ -24,6 +26,12 @@ namespace lmdb
|
||||||
nano::store_iterator<nano::block_hash, std::nullptr_t> begin (nano::transaction const & transaction_a) const override;
|
nano::store_iterator<nano::block_hash, std::nullptr_t> begin (nano::transaction const & transaction_a) const override;
|
||||||
nano::store_iterator<nano::block_hash, std::nullptr_t> end () const override;
|
nano::store_iterator<nano::block_hash, std::nullptr_t> end () const override;
|
||||||
void for_each_par (std::function<void (nano::read_transaction const &, nano::store_iterator<nano::block_hash, std::nullptr_t>, nano::store_iterator<nano::block_hash, std::nullptr_t>)> const & action_a) const override;
|
void for_each_par (std::function<void (nano::read_transaction const &, nano::store_iterator<nano::block_hash, std::nullptr_t>, nano::store_iterator<nano::block_hash, std::nullptr_t>)> const & action_a) const override;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Pruned blocks hashes
|
||||||
|
* nano::block_hash -> none
|
||||||
|
*/
|
||||||
|
MDB_dbi pruned_handle{ 0 };
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue