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

(ITS#7505) liblmdb can fail with MDB_PAGE_FULL on a delete

Full_Name: Howard Chu
Version: RE24/master
URL: ftp://ftp.openldap.org/incoming/
Submission from: (NULL) (
Submitted by: hyc

This is the last remaining FIXME in liblmdb/mdb.c...

mdb_rebalance() is always called after a delete operation. If the tree needs
balancing and it needs to move a node from one page to its sibling, the parent
page's separator keys will need updating. If the new separator key is larger
than the old one, it may not fit into the parent page, and mdb_update_key() will

Instead of giving up, mdb_update_key() should invoke mdb_page_split() to make
room for the new key.