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

Re: (ITS#7774) LMDB assertion failure during Postfix cache cleanup

Hallvard Breien Furuseth:
> Wietse Venema writes:
> > Why do you talk about map size changes when I delete a database entry??
> That's how Postfix uses lmdb.  It calls mdb_env_set_mapsize().  Looking

As written in the bug report the assertion also failed with
mdb_map_size set to an insanely large value (half a billion) in
which case the map size never changes.

But, it is good to know that the cursor is invalidated by both map
size changes and transactions that change the database.

I can confirm that with LMDB-0.9.10 + ITS#7756 patch, the assertion
failure goes away when I close the cursor (and its read transaction)
before changing the map or the database, and restore the cursor
afterwards. I guess this got broken when things were changed to use
external locks in order to avoid world-writable lockfiles.