mirror of
https://github.com/isar/libmdbx.git
synced 2025-06-23 01:42:36 +08:00
mdbx: допущение нехватки страниц при ранней/не-отложенной очистке GC (продолжение).
This commit is contained in:
parent
d14927366d
commit
fa0cd4d8b3
@ -1096,10 +1096,15 @@ next_gc:
|
|||||||
txn->cursors[FREE_DBI] = gc;
|
txn->cursors[FREE_DBI] = gc;
|
||||||
ret.err = cursor_del(gc, 0);
|
ret.err = cursor_del(gc, 0);
|
||||||
txn->cursors[FREE_DBI] = gc->next;
|
txn->cursors[FREE_DBI] = gc->next;
|
||||||
if (unlikely(ret.err != MDBX_SUCCESS))
|
if (likely(ret.err == MDBX_SUCCESS)) {
|
||||||
goto fail;
|
|
||||||
rkl = &txn->wr.gc.ready4reuse;
|
rkl = &txn->wr.gc.ready4reuse;
|
||||||
rkl_name = "ready4reuse";
|
rkl_name = "ready4reuse";
|
||||||
|
} else {
|
||||||
|
VERBOSE("gc-early-clean: err %d, repnl %zu, gc-height %u (%u branch, %u leafs)", ret.err,
|
||||||
|
MDBX_PNL_GETSIZE(txn->wr.repnl), gc->tree->height, gc->tree->branch_pages, gc->tree->leaf_pages);
|
||||||
|
if (unlikely(txn->flags & MDBX_TXN_ERROR))
|
||||||
|
goto fail;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
ret.err = rkl_push(rkl, id);
|
ret.err = rkl_push(rkl, id);
|
||||||
TRACE("%" PRIaTXN " len %zu pushed to rkl-%s, err %d", id, gc_len, rkl_name, ret.err);
|
TRACE("%" PRIaTXN " len %zu pushed to rkl-%s, err %d", id, gc_len, rkl_name, ret.err);
|
||||||
|
@ -182,8 +182,11 @@ __hot int page_touch_unmodifable(MDBX_txn *txn, MDBX_cursor *mc, const page_t *c
|
|||||||
const pgr_t par = gc_alloc_single(mc);
|
const pgr_t par = gc_alloc_single(mc);
|
||||||
rc = par.err;
|
rc = par.err;
|
||||||
np = par.page;
|
np = par.page;
|
||||||
if (unlikely(rc != MDBX_SUCCESS))
|
if (unlikely(rc != MDBX_SUCCESS)) {
|
||||||
|
if (likely(mc->dbi_state != txn->dbi_state) || (rc != MDBX_MAP_FULL && rc != MDBX_BACKLOG_DEPLETED))
|
||||||
goto fail;
|
goto fail;
|
||||||
|
return rc;
|
||||||
|
}
|
||||||
|
|
||||||
rc = pnl_append(&txn->wr.retired_pages, mp->pgno);
|
rc = pnl_append(&txn->wr.retired_pages, mp->pgno);
|
||||||
if (unlikely(rc != MDBX_SUCCESS))
|
if (unlikely(rc != MDBX_SUCCESS))
|
||||||
|
Loading…
x
Reference in New Issue
Block a user