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

Re: Growing an LMDB database after MDB_MAP_FULL



Bruno Freudensprung wrote:
Hi,

I have a question regarding growing an LMDB database when a write transaction
hits MDB_MAP_FULL.

I would like to avoid defining a high mapsize value because my application
will contain many MDB_envs, and because I have Windows users

My condolences.

(Windows allocates the whole file on the disk).

See ITS#8324.

Based on the intuition that MDB_MAP_FULL should not leave the database in a
weird state, I have made the following little experiment. When MDB_MAP_FULL is
encountered I tried to:

·copy the current env (mdb_env_copy) into another directory (fine: it does not
seem to contain uncommited data)

·reset the transaction « error  bit » (modified LMDB code to introduce a «
txn->mt_flags &= ~MDB_TXN_ERROR » somewhere)

You're being stupid. You think we add error flags just for the fun of it? When you get an error like this you must abort the current transaction. Does the documentation not state this clearly enough?

--
  -- Howard Chu
  CTO, Symas Corp.           http://www.symas.com
  Director, Highland Sun     http://highlandsun.com/hyc/
  Chief Architect, OpenLDAP  http://www.openldap.org/project/