https://bugs.openldap.org/show_bug.cgi?id=9735

          Issue ID: 9735
           Summary: [PATCH] try hard to find free space if database cannot
                    grow
           Product: LMDB
           Version: 0.9.24
          Hardware: All
                OS: Linux
            Status: UNCONFIRMED
          Keywords: needs_review
          Severity: normal
          Priority: ---
         Component: liblmdb
          Assignee: b...@openldap.org
          Reporter: libor.pel...@nic.cz
  Target Milestone: ---

Created attachment 851
  --> https://bugs.openldap.org/attachment.cgi?id=851&action=edit
Patch fixing the issue "try hard to find free space if database cannot grow"

Note:
 - the issue is the same in version 0.9.70 (git)

Situation:
 - the database had already grown to its limit (mapsize) in the past
 - overflow pages are used heavily as stored values are usually several pages
long
 - free space got fragmented

Problem:
 - attempt to insert new value results in MDB_MAP_FULL despite there is free
space available

Cause: there is a heursitic in mdb_page_alloc() that gives up searching for
free space chunk if this would take too much time. This is useful when the
database can still grow, as it balances performance with space usage. However,
if the database can no longer grow, it prevents inserting new values.

Solution: detect early on in mdb_page_alloc() if the database can grow, and if
not, let it try hard to search for free space.

Patch: attached

-- 
You are receiving this mail because:
You are on the CC list for the issue.

Reply via email to