mirror of
https://github.com/isar/libmdbx.git
synced 2025-01-01 23:34:13 +08:00
mdbx: исправление assert-проверок внутри osal_txn_lock()
.
This commit is contained in:
parent
7a413406be
commit
54920cd07b
@ -956,11 +956,14 @@ MDBX_INTERNAL_FUNC void osal_rdt_unlock(MDBX_env *env) {
|
||||
|
||||
int osal_txn_lock(MDBX_env *env, bool dont_wait) {
|
||||
TRACE("%swait %s", dont_wait ? "dont-" : "", ">>");
|
||||
eASSERT(env, !env->me_txn0->mt_owner);
|
||||
jitter4testing(true);
|
||||
const int err = mdbx_ipclock_lock(env, &env->me_lck->mti_wlock, dont_wait);
|
||||
int rc = err;
|
||||
if (likely(!MDBX_IS_ERROR(err))) {
|
||||
eASSERT(env, !env->me_txn0->mt_owner ||
|
||||
err == /* если другой поток в этом-же процессе завершился
|
||||
не освободив блокировку */
|
||||
MDBX_RESULT_TRUE);
|
||||
env->me_txn0->mt_owner = osal_thread_self();
|
||||
rc = MDBX_SUCCESS;
|
||||
}
|
||||
|
@ -179,7 +179,6 @@ static int funlock(mdbx_filehandle_t fd, size_t offset, size_t bytes) {
|
||||
#define DXB_WHOLE 0, DXB_MAXLEN
|
||||
|
||||
int osal_txn_lock(MDBX_env *env, bool dontwait) {
|
||||
eASSERT(env, !env->me_txn0->mt_owner);
|
||||
if (dontwait) {
|
||||
if (!TryEnterCriticalSection(&env->me_windowsbug_lock))
|
||||
return MDBX_BUSY;
|
||||
@ -195,6 +194,7 @@ int osal_txn_lock(MDBX_env *env, bool dontwait) {
|
||||
}
|
||||
}
|
||||
|
||||
eASSERT(env, !env->me_txn0->mt_owner);
|
||||
if (env->me_flags & MDBX_EXCLUSIVE)
|
||||
goto done;
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user