mirror of
https://github.com/isar/libmdbx.git
synced 2025-08-02 22:54:44 +08:00
mdbx: удаление/исправление лишних assert-проверок (backport, squashed).
This commit is contained in:
parent
e8bfffc9f6
commit
230fbd64f5
@ -872,10 +872,8 @@ pgr_t gc_alloc_ex(const MDBX_cursor *const mc, const size_t num, uint8_t flags)
|
|||||||
|
|
||||||
//---------------------------------------------------------------------------
|
//---------------------------------------------------------------------------
|
||||||
|
|
||||||
if (unlikely(!is_gc_usable(txn, mc, flags))) {
|
if (unlikely(!is_gc_usable(txn, mc, flags)))
|
||||||
eASSERT(env, (txn->flags & txn_gc_drained) || num > 1);
|
|
||||||
goto no_gc;
|
goto no_gc;
|
||||||
}
|
|
||||||
|
|
||||||
eASSERT(env, (flags & (ALLOC_COALESCE | ALLOC_LIFO | ALLOC_SHOULD_SCAN)) == 0);
|
eASSERT(env, (flags & (ALLOC_COALESCE | ALLOC_LIFO | ALLOC_SHOULD_SCAN)) == 0);
|
||||||
flags += (env->flags & MDBX_LIFORECLAIM) ? ALLOC_LIFO : 0;
|
flags += (env->flags & MDBX_LIFORECLAIM) ? ALLOC_LIFO : 0;
|
||||||
|
@ -824,7 +824,6 @@ MDBX_INTERNAL void lck_rdt_unlock(MDBX_env *env) {
|
|||||||
|
|
||||||
int lck_txn_lock(MDBX_env *env, bool dont_wait) {
|
int lck_txn_lock(MDBX_env *env, bool dont_wait) {
|
||||||
TRACE("%swait %s", dont_wait ? "dont-" : "", ">>");
|
TRACE("%swait %s", dont_wait ? "dont-" : "", ">>");
|
||||||
eASSERT(env, env->basal_txn || (env->lck == lckless_stub(env) && (env->flags & MDBX_RDONLY)));
|
|
||||||
jitter4testing(true);
|
jitter4testing(true);
|
||||||
const int err = osal_ipclock_lock(env, &env->lck->wrt_lock, dont_wait);
|
const int err = osal_ipclock_lock(env, &env->lck->wrt_lock, dont_wait);
|
||||||
int rc = err;
|
int rc = err;
|
||||||
@ -842,10 +841,8 @@ int lck_txn_lock(MDBX_env *env, bool dont_wait) {
|
|||||||
void lck_txn_unlock(MDBX_env *env) {
|
void lck_txn_unlock(MDBX_env *env) {
|
||||||
TRACE("%s", ">>");
|
TRACE("%s", ">>");
|
||||||
if (env->basal_txn) {
|
if (env->basal_txn) {
|
||||||
eASSERT(env, !env->basal_txn || env->basal_txn->owner == osal_thread_self());
|
eASSERT(env, env->basal_txn->owner == osal_thread_self());
|
||||||
env->basal_txn->owner = 0;
|
env->basal_txn->owner = 0;
|
||||||
} else {
|
|
||||||
eASSERT(env, env->lck == lckless_stub(env) && (env->flags & MDBX_RDONLY));
|
|
||||||
}
|
}
|
||||||
int err = osal_ipclock_unlock(env, &env->lck->wrt_lock);
|
int err = osal_ipclock_unlock(env, &env->lck->wrt_lock);
|
||||||
TRACE("<< err %d", err);
|
TRACE("<< err %d", err);
|
||||||
|
@ -87,7 +87,7 @@ int lck_txn_lock(MDBX_env *env, bool dontwait) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
eASSERT(env, !env->basal_txn->owner);
|
eASSERT(env, !env->basal_txn || !env->basal_txn->owner);
|
||||||
if (env->flags & MDBX_EXCLUSIVE)
|
if (env->flags & MDBX_EXCLUSIVE)
|
||||||
goto done;
|
goto done;
|
||||||
|
|
||||||
@ -104,10 +104,11 @@ int lck_txn_lock(MDBX_env *env, bool dontwait) {
|
|||||||
}
|
}
|
||||||
if (rc == MDBX_SUCCESS) {
|
if (rc == MDBX_SUCCESS) {
|
||||||
done:
|
done:
|
||||||
|
if (env->basal_txn)
|
||||||
|
env->basal_txn->owner = osal_thread_self();
|
||||||
/* Zap: Failing to release lock 'env->windowsbug_lock'
|
/* Zap: Failing to release lock 'env->windowsbug_lock'
|
||||||
* in function 'mdbx_txn_lock' */
|
* in function 'mdbx_txn_lock' */
|
||||||
MDBX_SUPPRESS_GOOFY_MSVC_ANALYZER(26115);
|
MDBX_SUPPRESS_GOOFY_MSVC_ANALYZER(26115);
|
||||||
env->basal_txn->owner = osal_thread_self();
|
|
||||||
return MDBX_SUCCESS;
|
return MDBX_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -116,13 +117,14 @@ int lck_txn_lock(MDBX_env *env, bool dontwait) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void lck_txn_unlock(MDBX_env *env) {
|
void lck_txn_unlock(MDBX_env *env) {
|
||||||
eASSERT(env, env->basal_txn->owner == osal_thread_self());
|
eASSERT(env, !env->basal_txn || env->basal_txn->owner == osal_thread_self());
|
||||||
if ((env->flags & MDBX_EXCLUSIVE) == 0) {
|
if ((env->flags & MDBX_EXCLUSIVE) == 0) {
|
||||||
const HANDLE fd4data = env->ioring.overlapped_fd ? env->ioring.overlapped_fd : env->lazy_fd;
|
const HANDLE fd4data = env->ioring.overlapped_fd ? env->ioring.overlapped_fd : env->lazy_fd;
|
||||||
int err = funlock(fd4data, DXB_BODY);
|
int err = funlock(fd4data, DXB_BODY);
|
||||||
if (err != MDBX_SUCCESS)
|
if (err != MDBX_SUCCESS)
|
||||||
mdbx_panic("%s failed: err %u", __func__, err);
|
mdbx_panic("%s failed: err %u", __func__, err);
|
||||||
}
|
}
|
||||||
|
if (env->basal_txn)
|
||||||
env->basal_txn->owner = 0;
|
env->basal_txn->owner = 0;
|
||||||
LeaveCriticalSection(&env->windowsbug_lock);
|
LeaveCriticalSection(&env->windowsbug_lock);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user