mirror of
https://github.com/isar/libmdbx.git
synced 2025-08-20 07:49:27 +08:00
mdbx: automatically abort errored transaction in mdbx_txn_commit().
Change-Id: I2cfac73c69a8ff46870778f174555724f8363a79
This commit is contained in:
@@ -7669,10 +7669,17 @@ static __always_inline bool mdbx_txn_dbi_exists(MDBX_txn *txn, MDBX_dbi dbi,
|
||||
}
|
||||
|
||||
int mdbx_txn_commit(MDBX_txn *txn) {
|
||||
int rc = check_txn(txn, MDBX_TXN_BLOCKED - MDBX_TXN_HAS_CHILD);
|
||||
STATIC_ASSERT(MDBX_TXN_FINISHED ==
|
||||
MDBX_TXN_BLOCKED - MDBX_TXN_HAS_CHILD - MDBX_TXN_ERROR);
|
||||
int rc = check_txn(txn, MDBX_TXN_FINISHED);
|
||||
if (unlikely(rc != MDBX_SUCCESS))
|
||||
return rc;
|
||||
|
||||
if (unlikely(txn->mt_flags & MDBX_TXN_ERROR)) {
|
||||
rc = MDBX_RESULT_TRUE;
|
||||
goto fail;
|
||||
}
|
||||
|
||||
MDBX_env *env = txn->mt_env;
|
||||
#if MDBX_TXN_CHECKPID
|
||||
if (unlikely(env->me_pid != mdbx_getpid())) {
|
||||
|
Reference in New Issue
Block a user