Thank you for the quick response. But this means that also READ transactions must be closed/reset before using mdb_env_set_mapsize? It is not enough to lock any readers while calling mdb_env_set_mapsize? Would it be hard to support resyncing read transactions and cursors after a map resize directly in the LMDB library?
Thank you and best regards, Ken -----Ursprüngliche Nachricht----- Von: Howard Chu <[email protected]> Gesendet: Montag, 31. Januar 2022 17:42 An: Ken Wenzel <[email protected]>; [email protected] Betreff: Re: [LMDB] mdb_env_set_mapsize and read transactions Ken Wenzel wrote: > Hello, > > > > I like to implement an autogrow functionality for LMDB. > > The documentation for mdb_env_set_mapsize says that no transactions should be active when using this function. > > When looking at the code I can see that the function only checks if there is an active WRITE transaction and in this case it returns an error. > > > > Is it possible to reuse existing READ transactions or even associated cursors after mdb_env_set_mapsize has been called? Yes, you can reuse the existing structures as long as you have done txn_reset / txn_renew / cursor_renew. Naturally you must do txn_reset before the resize, otherwise the read txn is still active. -- -- Howard Chu CTO, Symas Corp. http://www.symas.com Director, Highland Sun http://highlandsun.com/hyc/ Chief Architect, OpenLDAP http://www.openldap.org/project/
