mirror of
https://github.com/isar/libmdbx.git
synced 2025-01-20 05:08:21 +08:00
mdbx: remove txnid/me_oldest asserts.
The `mc->mc_txn->mt_txnid >= *mc->mc_txn->mt_env->me_oldest` assertion may fail false-positive, becase me_oldest may be not updated in read-only or exclusive modes. Change-Id: Iad57a38efa30bc9fe2392ac24657727a7ce1f584
This commit is contained in:
parent
0b4c957bd5
commit
d6c954cd43
@ -7071,7 +7071,6 @@ static int mdbx_page_search(MDBX_cursor *mc, MDBX_val *key, int flags) {
|
||||
return MDBX_BAD_TXN;
|
||||
}
|
||||
|
||||
mdbx_cassert(mc, mc->mc_txn->mt_txnid >= *mc->mc_txn->mt_env->me_oldest);
|
||||
/* Make sure we're using an up-to-date root */
|
||||
if (unlikely(*mc->mc_dbflag & DB_STALE)) {
|
||||
MDBX_cursor mc2;
|
||||
@ -7113,7 +7112,6 @@ static int mdbx_page_search(MDBX_cursor *mc, MDBX_val *key, int flags) {
|
||||
return MDBX_NOTFOUND;
|
||||
}
|
||||
|
||||
mdbx_cassert(mc, mc->mc_txn->mt_txnid >= *mc->mc_txn->mt_env->me_oldest);
|
||||
mdbx_cassert(mc, root >= NUM_METAS);
|
||||
if (!mc->mc_pg[0] || mc->mc_pg[0]->mp_pgno != root)
|
||||
if (unlikely((rc = mdbx_page_get(mc, root, &mc->mc_pg[0], NULL)) != 0))
|
||||
@ -7254,7 +7252,6 @@ static __inline int mdbx_node_read(MDBX_cursor *mc, MDBX_node *leaf,
|
||||
pgno_t pgno;
|
||||
int rc;
|
||||
|
||||
mdbx_cassert(mc, mc->mc_txn->mt_txnid >= *mc->mc_txn->mt_env->me_oldest);
|
||||
if (!F_ISSET(leaf->mn_flags, F_BIGDATA)) {
|
||||
data->iov_len = NODEDSZ(leaf);
|
||||
data->iov_base = NODEDATA(leaf);
|
||||
@ -7350,7 +7347,6 @@ static int mdbx_cursor_sibling(MDBX_cursor *mc, int move_right) {
|
||||
MDBX_node *indx;
|
||||
MDBX_page *mp;
|
||||
|
||||
mdbx_cassert(mc, mc->mc_txn->mt_txnid >= *mc->mc_txn->mt_env->me_oldest);
|
||||
if (unlikely(mc->mc_snum < 2)) {
|
||||
return MDBX_NOTFOUND; /* root has no siblings */
|
||||
}
|
||||
@ -7586,7 +7582,6 @@ static int mdbx_cursor_set(MDBX_cursor *mc, MDBX_val *key, MDBX_val *data,
|
||||
MDBX_node *leaf = NULL;
|
||||
DKBUF;
|
||||
|
||||
mdbx_cassert(mc, mc->mc_txn->mt_txnid >= *mc->mc_txn->mt_env->me_oldest);
|
||||
if ((mc->mc_db->md_flags & MDBX_INTEGERKEY) &&
|
||||
unlikely(key->iov_len != sizeof(uint32_t) &&
|
||||
key->iov_len != sizeof(uint64_t))) {
|
||||
@ -7883,7 +7878,6 @@ int mdbx_cursor_get(MDBX_cursor *mc, MDBX_val *key, MDBX_val *data,
|
||||
if (unlikely(mc->mc_txn->mt_flags & MDBX_TXN_BLOCKED))
|
||||
return MDBX_BAD_TXN;
|
||||
|
||||
mdbx_cassert(mc, mc->mc_txn->mt_txnid >= *mc->mc_txn->mt_env->me_oldest);
|
||||
switch (op) {
|
||||
case MDBX_GET_CURRENT: {
|
||||
if (unlikely(!(mc->mc_flags & C_INITIALIZED)))
|
||||
@ -9273,7 +9267,6 @@ static int mdbx_xcursor_init1(MDBX_cursor *mc, MDBX_node *node) {
|
||||
if (unlikely(mx == nullptr))
|
||||
return MDBX_CORRUPTED;
|
||||
|
||||
mdbx_cassert(mc, mc->mc_txn->mt_txnid >= *mc->mc_txn->mt_env->me_oldest);
|
||||
if (node->mn_flags & F_SUBDATA) {
|
||||
memcpy(&mx->mx_db, NODEDATA(node), sizeof(MDBX_db));
|
||||
mx->mx_cursor.mc_pg[0] = 0;
|
||||
@ -9327,7 +9320,6 @@ static int mdbx_xcursor_init2(MDBX_cursor *mc, MDBX_xcursor *src_mx,
|
||||
if (unlikely(mx == nullptr))
|
||||
return MDBX_CORRUPTED;
|
||||
|
||||
mdbx_cassert(mc, mc->mc_txn->mt_txnid >= *mc->mc_txn->mt_env->me_oldest);
|
||||
if (new_dupdata) {
|
||||
mx->mx_cursor.mc_snum = 1;
|
||||
mx->mx_cursor.mc_top = 0;
|
||||
@ -9373,7 +9365,6 @@ static int mdbx_cursor_init(MDBX_cursor *mc, MDBX_txn *txn, MDBX_dbi dbi) {
|
||||
return rc;
|
||||
}
|
||||
|
||||
mdbx_cassert(mc, mc->mc_txn->mt_txnid >= *mc->mc_txn->mt_env->me_oldest);
|
||||
int rc = MDBX_SUCCESS;
|
||||
if (unlikely(*mc->mc_dbflag & DB_STALE)) {
|
||||
rc = mdbx_page_search(mc, NULL, MDBX_PS_ROOTONLY);
|
||||
|
Loading…
x
Reference in New Issue
Block a user