Merge pull request #120 from peerplays-network/GRPH-89
Better object database handling
This commit is contained in:
commit
ddc41d680b
2 changed files with 18 additions and 1 deletions
|
|
@ -119,7 +119,9 @@ void database::reindex(fc::path data_dir, const genesis_state_type& initial_allo
|
||||||
void database::wipe(const fc::path& data_dir, bool include_blocks)
|
void database::wipe(const fc::path& data_dir, bool include_blocks)
|
||||||
{
|
{
|
||||||
ilog("Wiping database", ("include_blocks", include_blocks));
|
ilog("Wiping database", ("include_blocks", include_blocks));
|
||||||
close();
|
if (_opened) {
|
||||||
|
close();
|
||||||
|
}
|
||||||
object_database::wipe(data_dir);
|
object_database::wipe(data_dir);
|
||||||
if( include_blocks )
|
if( include_blocks )
|
||||||
fc::remove_all( data_dir / "database" );
|
fc::remove_all( data_dir / "database" );
|
||||||
|
|
@ -148,12 +150,16 @@ void database::open(
|
||||||
("last_block->id", last_block->id())("head_block_num",head_block_num()) );
|
("last_block->id", last_block->id())("head_block_num",head_block_num()) );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
_opened = true;
|
||||||
}
|
}
|
||||||
FC_CAPTURE_LOG_AND_RETHROW( (data_dir) )
|
FC_CAPTURE_LOG_AND_RETHROW( (data_dir) )
|
||||||
}
|
}
|
||||||
|
|
||||||
void database::close(bool rewind)
|
void database::close(bool rewind)
|
||||||
{
|
{
|
||||||
|
if (!_opened)
|
||||||
|
return;
|
||||||
|
|
||||||
// TODO: Save pending tx's on close()
|
// TODO: Save pending tx's on close()
|
||||||
clear_pending();
|
clear_pending();
|
||||||
|
|
||||||
|
|
@ -198,6 +204,8 @@ void database::close(bool rewind)
|
||||||
_block_id_to_block.close();
|
_block_id_to_block.close();
|
||||||
|
|
||||||
_fork_db.reset();
|
_fork_db.reset();
|
||||||
|
|
||||||
|
_opened = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void database::force_slow_replays()
|
void database::force_slow_replays()
|
||||||
|
|
|
||||||
|
|
@ -561,6 +561,15 @@ namespace graphene { namespace chain {
|
||||||
node_property_object _node_property_object;
|
node_property_object _node_property_object;
|
||||||
fc::hash_ctr_rng<secret_hash_type, 20> _random_number_generator;
|
fc::hash_ctr_rng<secret_hash_type, 20> _random_number_generator;
|
||||||
bool _slow_replays = false;
|
bool _slow_replays = false;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Whether database is successfully opened or not.
|
||||||
|
*
|
||||||
|
* The database is considered open when there's no exception
|
||||||
|
* or assertion fail during database::open() method, and
|
||||||
|
* database::close() has not been called, or failed during execution.
|
||||||
|
*/
|
||||||
|
bool _opened = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
namespace detail
|
namespace detail
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue