[Date Prev][Date Next] [Chronological] [Thread] [Top]

Re: openldap.git branch mdb.master updated. 21da623bf40dc21f89c3172c523d094075e0824b

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.