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:
warptangent 2016-02-13 03:50:42 -08:00
parent 9118d0a44c
commit c16cc204d3
No known key found for this signature in database
GPG key ID: 0E490BEBFBE4E92D

View file

@ -2233,8 +2233,19 @@ void BlockchainLMDB::block_txn_abort()
LOG_PRINT_L3("BlockchainLMDB::" << __func__); LOG_PRINT_L3("BlockchainLMDB::" << __func__);
if (! m_batch_active) if (! m_batch_active)
{ {
delete m_write_txn; if (m_write_txn != nullptr)
m_write_txn = nullptr; {
delete m_write_txn;
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()));
}
} }
} }