[Date Prev][Date Next]
[Chronological]
[Thread]
[Top]
Re: (ITS#8221) getting MDB_PAGE_FULL using mdb_cursor_del
- To: openldap-its@OpenLDAP.org
- Subject: Re: (ITS#8221) getting MDB_PAGE_FULL using mdb_cursor_del
- From: hyc@symas.com
- Date: Sat, 26 Sep 2015 15:52:33 +0000
- Auto-submitted: auto-generated (OpenLDAP-ITS)
hyc@symas.com wrote:
> sergej.jurecko@gmail.com wrote:
>> Full_Name: Sergej Jurečko
>> Version: lmdb 0.9.16
>> OS: osx
>> URL: ftp://ftp.openldap.org/incoming/delerror.zip
>> Submission from: (NULL) (193.189.172.218)
>>
>>
>> Code and lmdb file is uploaded to ftp. Code is also here:
>> https://gist.github.com/SergejJurecko/68979ff6460806581ad5
>>
>> If you run the code on the uploaded lmdb file, it will result in MDB_PAGE_FULL
>> error out of mdb_cursor_del.
>>
>> I use dupsorts a lot in my app. Every value in the dupsort has 2 64bit integers
>> and 1 u8 in the beginning, which are used in the custom comparison function to
>> sort the values.
>>
>> During normal operation values are added to the end of the dupsort and
>> eventually a cleanup operation occurs that deletes unused values.
>>
>> The example app tries to delete the first value in the dupsort. But it will fail
>> the same if it tries to delete the next one instead.
>
> Thanks for the code and data, it shows the problem pretty clearly.
> Unfortunately the solution is less obvious at the moment, still working on it.
Fixed now in mdb.master, please test and followup with results. Thanks.
--
-- Howard Chu
CTO, Symas Corp. http://www.symas.com
Director, Highland Sun http://highlandsun.com/hyc/
Chief Architect, OpenLDAP http://www.openldap.org/project/