openldap-commit2devel@OpenLDAP.org writes:
Allow reading freelist while working on it The circular dependency issues appear to have been resolved. Still, need to watch closely, maybe revert this change if problems arise.
IIRC this could get page-hungry when I tried that with a fragented DB, and with large changes which needed overflow pages and used them up for non-freelist items. One of those big LDIFs at ada, I think.
Something like: Commit wants a big enough range for an overflow page for mt_free_pgs, maybe finds and allocates one, but the freelist changes eat too many freelist items and will need a bigger page one later. It doesn't free the useless overflow page it already allocated. Repeat.
Anyway, I think this change needs code to give pages back to me_pghead, or revert to an earlier {me_pglast, me_pghead}, or something like that. Or maybe someday clean up nested txns, support them with WRITEMAP, and use those for the freelist loop since they support reverting a change.