BlockchainLMDB: Add sanity check for inconsistent state
This hasn't been known to occur in block-level txn abort, but throw exception if it does.
This commit is contained in:
parent
9118d0a44c
commit
c16cc204d3
|
@ -2232,10 +2232,21 @@ void BlockchainLMDB::block_txn_abort()
|
||||||
{
|
{
|
||||||
LOG_PRINT_L3("BlockchainLMDB::" << __func__);
|
LOG_PRINT_L3("BlockchainLMDB::" << __func__);
|
||||||
if (! m_batch_active)
|
if (! m_batch_active)
|
||||||
|
{
|
||||||
|
if (m_write_txn != nullptr)
|
||||||
{
|
{
|
||||||
delete m_write_txn;
|
delete m_write_txn;
|
||||||
m_write_txn = nullptr;
|
m_write_txn = nullptr;
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// This would probably mean an earlier exception was caught, but then we
|
||||||
|
// proceeded further than we should have.
|
||||||
|
throw0(DB_ERROR((std::string("BlockchainLMDB::") + __func__ +
|
||||||
|
std::string(": block-level DB transaction abort called when write txn doesn't exist")
|
||||||
|
).c_str()));
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
uint64_t BlockchainLMDB::add_block(const block& blk, const size_t& block_size, const difficulty_type& cumulative_difficulty, const uint64_t& coins_generated,
|
uint64_t BlockchainLMDB::add_block(const block& blk, const size_t& block_size, const difficulty_type& cumulative_difficulty, const uint64_t& coins_generated,
|
||||||
|
|
Loading…
Reference in New Issue