mdbx: fix mdbx_update_gc() for retired page list change case.

Change-Id: Ic454262edcda8881182a15d6a521b90990e5551d
This commit is contained in:
Leonid Yuriev 2021-01-08 03:54:50 +03:00
parent b8bb4b4cc4
commit c1fef9b51d

View File

@ -7615,7 +7615,7 @@ retry_noaccount:
txn->mt_txnid, txn->mt_dbs[FREE_DBI].md_root, i);
for (; i; i--)
mdbx_debug_extra_print(" %" PRIaPGNO, txn->tw.retired_pages[i]);
mdbx_debug_extra_print("%s", "\n");
mdbx_debug_extra_print("%s\n", ".");
}
if (unlikely(amount != MDBX_PNL_SIZE(txn->tw.reclaimed_pglist))) {
mdbx_trace("%s.reclaimed-list changed %u -> %u, retry", dbg_prefix_mode,
@ -7988,6 +7988,13 @@ retry_noaccount:
mdbx_notice("%s", "** restart: reclaimed-slots changed");
goto retry;
}
if (unlikely(retired_stored != MDBX_PNL_SIZE(txn->tw.retired_pages))) {
mdbx_tassert(txn,
retired_stored < MDBX_PNL_SIZE(txn->tw.retired_pages));
mdbx_notice("** restart: retired-list growth (%u -> %u)",
retired_stored, MDBX_PNL_SIZE(txn->tw.retired_pages));
goto retry;
}
pgno_t *dst = data.iov_base;
*dst++ = chunk;