diff options
author | Riccardo Spagni <ric@spagni.net> | 2018-02-16 14:24:01 +0100 |
---|---|---|
committer | Riccardo Spagni <ric@spagni.net> | 2018-02-16 14:24:01 +0100 |
commit | 260d666cf45c0635f00fe6c3d23c79a27c8a8a4f (patch) | |
tree | 7a17847a8e2270bc8b602b1a84162c92db487539 /src/blockchain_db/lmdb/db_lmdb.cpp | |
parent | Merge pull request #3229 (diff) | |
parent | Don't create readtxn until after txn_safe gate check (diff) | |
download | monero-260d666cf45c0635f00fe6c3d23c79a27c8a8a4f.tar.xz |
Merge pull request #3231
84a8b2da Don't create readtxn until after txn_safe gate check (Howard Chu)
Diffstat (limited to 'src/blockchain_db/lmdb/db_lmdb.cpp')
-rw-r--r-- | src/blockchain_db/lmdb/db_lmdb.cpp | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/src/blockchain_db/lmdb/db_lmdb.cpp b/src/blockchain_db/lmdb/db_lmdb.cpp index 6b81a4c90..5210fc3cd 100644 --- a/src/blockchain_db/lmdb/db_lmdb.cpp +++ b/src/blockchain_db/lmdb/db_lmdb.cpp @@ -338,6 +338,12 @@ mdb_txn_safe::~mdb_txn_safe() num_active_txns--; } +void mdb_txn_safe::uncheck() +{ + num_active_txns--; + m_check = false; +} + void mdb_txn_safe::commit(std::string message) { if (message.size() == 0) @@ -1439,9 +1445,10 @@ void BlockchainLMDB::unlock() #define TXN_PREFIX_RDONLY() \ MDB_txn *m_txn; \ mdb_txn_cursors *m_cursors; \ + mdb_txn_safe auto_txn; \ bool my_rtxn = block_rtxn_start(&m_txn, &m_cursors); \ - mdb_txn_safe auto_txn(my_rtxn); \ - if (my_rtxn) auto_txn.m_tinfo = m_tinfo.get() + if (my_rtxn) auto_txn.m_tinfo = m_tinfo.get(); \ + else auto_txn.uncheck() #define TXN_POSTFIX_RDONLY() #define TXN_POSTFIX_SUCCESS() \ |