https://bugs.openldap.org/show_bug.cgi?id=9842
Issue ID: 9842 Summary: Page should not be spilled if MDB_RESERVE is used Product: LMDB Version: unspecified Hardware: All OS: All Status: UNCONFIRMED Keywords: needs_review Severity: normal Priority: --- Component: liblmdb Assignee: bugs@openldap.org Reporter: stephan.j.bircher@gmail.com Target Milestone: ---
The documentation for the function mdb_cursor_put states for MDB_RESERVE the following: "return a pointer to the reserved space, which the caller can fill in later". However this seems only to be valid if no other operation is performed on the cursor. Once the cursor is moved the page where the reserved data resides on might become untracked and therefore eligible to be spilled at any time. This problems occurrs however only for large transactions where lmdb starts to spill and flush pages.
I'm using only lmdb and I'm a bit confused as the branches master (https://git.openldap.org/openldap/openldap/-/tree/master/libraries/liblmdb) and mdb.master (https://git.openldap.org/openldap/openldap/-/tree/mdb.master/libraries/liblm...) are not the same. For example the function mdb_pages_xkeep differs and master and mdb.master. Will the branches be consolidated again?