dimitrij.denissenko@blacksquaremedia.com writes:
I found an interesting issue with LMDB. I have populated the DB with a bunch of records and it uses ~30M on disk (after sync). Then I added a background process to my app and populated the database again with the same record set.
mdb_env_create(); fork(); mdb_env_open(); is invalid. An MDB_env may only be used in the process which created it. See Caveats in lmdb.h.
This is because mdb_env_create() sets the pid which the MDB_env will use in the lockfile. We could delay this to mdb_env_open(), then your particular program would work but fork() after mdb_env_open() would not. But I don't see much point in doing so.