Moved the unchecked LMDB table handler to its store class
This commit is contained in:
parent
79c695167d
commit
b075c9459b
4 changed files with 40 additions and 31 deletions
|
@ -965,30 +965,36 @@ TEST (block_store, pruned_random)
|
|||
ASSERT_EQ (hash1, random_hash);
|
||||
}
|
||||
|
||||
// Databases need to be dropped in order to convert to dupsort compatible
|
||||
TEST (block_store, DISABLED_change_dupsort) // Unchecked is no longer dupsort table
|
||||
namespace nano
|
||||
{
|
||||
auto path (nano::unique_path ());
|
||||
nano::logger_mt logger{};
|
||||
nano::lmdb::store store{ logger, path, nano::dev::constants };
|
||||
nano::unchecked_map unchecked{ store, false };
|
||||
auto transaction (store.tx_begin_write ());
|
||||
ASSERT_EQ (0, mdb_drop (store.env.tx (transaction), store.unchecked_handle, 1));
|
||||
ASSERT_EQ (0, mdb_dbi_open (store.env.tx (transaction), "unchecked", MDB_CREATE, &store.unchecked_handle));
|
||||
std::shared_ptr<nano::block> send1 = std::make_shared<nano::send_block> (0, 0, 0, nano::dev::genesis_key.prv, nano::dev::genesis_key.pub, 0);
|
||||
std::shared_ptr<nano::block> send2 = std::make_shared<nano::send_block> (1, 0, 0, nano::dev::genesis_key.prv, nano::dev::genesis_key.pub, 0);
|
||||
ASSERT_NE (send1->hash (), send2->hash ());
|
||||
unchecked.put (send1->hash (), send1);
|
||||
unchecked.put (send1->hash (), send2);
|
||||
ASSERT_EQ (0, mdb_drop (store.env.tx (transaction), store.unchecked_handle, 0));
|
||||
mdb_dbi_close (store.env, store.unchecked_handle);
|
||||
ASSERT_EQ (0, mdb_dbi_open (store.env.tx (transaction), "unchecked", MDB_CREATE | MDB_DUPSORT, &store.unchecked_handle));
|
||||
unchecked.put (send1->hash (), send1);
|
||||
unchecked.put (send1->hash (), send2);
|
||||
ASSERT_EQ (0, mdb_drop (store.env.tx (transaction), store.unchecked_handle, 1));
|
||||
ASSERT_EQ (0, mdb_dbi_open (store.env.tx (transaction), "unchecked", MDB_CREATE | MDB_DUPSORT, &store.unchecked_handle));
|
||||
unchecked.put (send1->hash (), send1);
|
||||
unchecked.put (send1->hash (), send2);
|
||||
namespace lmdb
|
||||
{
|
||||
// Databases need to be dropped in order to convert to dupsort compatible
|
||||
TEST (block_store, DISABLED_change_dupsort) // Unchecked is no longer dupsort table
|
||||
{
|
||||
auto path (nano::unique_path ());
|
||||
nano::logger_mt logger{};
|
||||
nano::lmdb::store store{ logger, path, nano::dev::constants };
|
||||
nano::unchecked_map unchecked{ store, false };
|
||||
auto transaction (store.tx_begin_write ());
|
||||
ASSERT_EQ (0, mdb_drop (store.env.tx (transaction), store.unchecked_store.unchecked_handle, 1));
|
||||
ASSERT_EQ (0, mdb_dbi_open (store.env.tx (transaction), "unchecked", MDB_CREATE, &store.unchecked_store.unchecked_handle));
|
||||
std::shared_ptr<nano::block> send1 = std::make_shared<nano::send_block> (0, 0, 0, nano::dev::genesis_key.prv, nano::dev::genesis_key.pub, 0);
|
||||
std::shared_ptr<nano::block> send2 = std::make_shared<nano::send_block> (1, 0, 0, nano::dev::genesis_key.prv, nano::dev::genesis_key.pub, 0);
|
||||
ASSERT_NE (send1->hash (), send2->hash ());
|
||||
unchecked.put (send1->hash (), send1);
|
||||
unchecked.put (send1->hash (), send2);
|
||||
ASSERT_EQ (0, mdb_drop (store.env.tx (transaction), store.unchecked_store.unchecked_handle, 0));
|
||||
mdb_dbi_close (store.env, store.unchecked_store.unchecked_handle);
|
||||
ASSERT_EQ (0, mdb_dbi_open (store.env.tx (transaction), "unchecked", MDB_CREATE | MDB_DUPSORT, &store.unchecked_store.unchecked_handle));
|
||||
unchecked.put (send1->hash (), send1);
|
||||
unchecked.put (send1->hash (), send2);
|
||||
ASSERT_EQ (0, mdb_drop (store.env.tx (transaction), store.unchecked_store.unchecked_handle, 1));
|
||||
ASSERT_EQ (0, mdb_dbi_open (store.env.tx (transaction), "unchecked", MDB_CREATE | MDB_DUPSORT, &store.unchecked_store.unchecked_handle));
|
||||
unchecked.put (send1->hash (), send1);
|
||||
unchecked.put (send1->hash (), send2);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
TEST (block_store, state_block)
|
||||
|
|
|
@ -211,7 +211,7 @@ nano::mdb_txn_callbacks nano::lmdb::store::create_txn_callbacks () const
|
|||
void nano::lmdb::store::open_databases (bool & error_a, nano::transaction const & transaction_a, unsigned flags)
|
||||
{
|
||||
error_a |= mdb_dbi_open (env.tx (transaction_a), "frontiers", flags, &frontier_store.frontiers_handle) != 0;
|
||||
error_a |= mdb_dbi_open (env.tx (transaction_a), "unchecked", flags, &unchecked_handle) != 0;
|
||||
error_a |= mdb_dbi_open (env.tx (transaction_a), "unchecked", flags, &unchecked_store.unchecked_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), "peers", flags, &peer_store.peers_handle) != 0;
|
||||
|
@ -869,7 +869,7 @@ MDB_dbi nano::lmdb::store::table_to_dbi (tables table_a) const
|
|||
case tables::pending:
|
||||
return pending_store.pending_handle;
|
||||
case tables::unchecked:
|
||||
return unchecked_handle;
|
||||
return unchecked_store.unchecked_handle;
|
||||
case tables::online_weight:
|
||||
return online_weight_store.online_weight_handle;
|
||||
case tables::meta:
|
||||
|
|
|
@ -136,12 +136,6 @@ namespace lmdb
|
|||
*/
|
||||
MDB_dbi state_blocks_handle{ 0 };
|
||||
|
||||
/**
|
||||
* Unchecked bootstrap blocks info.
|
||||
* nano::block_hash -> nano::unchecked_info
|
||||
*/
|
||||
MDB_dbi unchecked_handle{ 0 };
|
||||
|
||||
/**
|
||||
* Meta information about block store, such as versions.
|
||||
* nano::uint256_union (arbitrary key) -> blob
|
||||
|
@ -245,6 +239,7 @@ namespace lmdb
|
|||
friend class mdb_block_store_upgrade_v15_v16_Test;
|
||||
friend class mdb_block_store_upgrade_v19_v20_Test;
|
||||
friend class mdb_block_store_upgrade_v20_v21_Test;
|
||||
friend class block_store_DISABLED_change_dupsort_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_confirmation_height_to_v15 (nano::lmdb::store &, nano::transaction const &, nano::account const &, uint64_t);
|
||||
};
|
||||
|
|
|
@ -2,6 +2,8 @@
|
|||
|
||||
#include <nano/secure/store.hpp>
|
||||
|
||||
#include <lmdb/libraries/liblmdb/lmdb.h>
|
||||
|
||||
namespace nano
|
||||
{
|
||||
namespace lmdb
|
||||
|
@ -24,6 +26,12 @@ namespace lmdb
|
|||
nano::store_iterator<nano::unchecked_key, nano::unchecked_info> lower_bound (nano::transaction const & transaction_a, nano::unchecked_key const & key_a) const override;
|
||||
size_t count (nano::transaction const & transaction_a) override;
|
||||
void for_each_par (std::function<void (nano::read_transaction const &, nano::store_iterator<nano::unchecked_key, nano::unchecked_info>, nano::store_iterator<nano::unchecked_key, nano::unchecked_info>)> const & action_a) const override;
|
||||
|
||||
/**
|
||||
* Unchecked bootstrap blocks info.
|
||||
* nano::block_hash -> nano::unchecked_info
|
||||
*/
|
||||
MDB_dbi unchecked_handle{ 0 };
|
||||
};
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue