mirror of
https://github.com/isar/libmdbx.git
synced 2025-11-06 19:08:56 +08:00
mdbx: парковка читающих транзакций.
This commit is contained in:
10
src/cogs.h
10
src/cogs.h
@@ -469,8 +469,12 @@ static inline int check_txn(const MDBX_txn *txn, int bad_bits) {
|
||||
if (unlikely(txn->signature != txn_signature))
|
||||
return MDBX_EBADSIGN;
|
||||
|
||||
if (unlikely(txn->flags & bad_bits))
|
||||
return MDBX_BAD_TXN;
|
||||
if (bad_bits && unlikely(txn->flags & bad_bits)) {
|
||||
if ((bad_bits & MDBX_TXN_PARKED) == 0)
|
||||
return MDBX_BAD_TXN;
|
||||
else
|
||||
return txn_check_badbits_parked(txn, bad_bits);
|
||||
}
|
||||
|
||||
tASSERT(txn, (txn->flags & MDBX_TXN_FINISHED) ||
|
||||
(txn->flags & MDBX_NOSTICKYTHREADS) ==
|
||||
@@ -490,7 +494,7 @@ static inline int check_txn(const MDBX_txn *txn, int bad_bits) {
|
||||
}
|
||||
|
||||
static inline int check_txn_rw(const MDBX_txn *txn, int bad_bits) {
|
||||
int err = check_txn(txn, bad_bits);
|
||||
int err = check_txn(txn, bad_bits & ~MDBX_TXN_PARKED);
|
||||
if (unlikely(err))
|
||||
return err;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user