mirror of
https://github.com/isar/libmdbx.git
synced 2025-01-04 16:24:12 +08:00
mdbx: backport - ITS#8505 Clarify fork() caveat, mdb_env_get_fd(), flock->fcntl.
Change-Id: I987c4790e3ac590030c847a1f2f9b24048ce136a
This commit is contained in:
parent
38d57e66c6
commit
23389c8f6e
9
lmdb.h
9
lmdb.h
@ -80,11 +80,12 @@
|
||||
* transactions. Each transaction belongs to one thread. See below.
|
||||
* The #MDB_NOTLS flag changes this for read-only transactions.
|
||||
*
|
||||
* - Use an MDB_env* in the process which opened it, without fork()ing.
|
||||
* - Use an MDB_env* in the process which opened it, not after fork().
|
||||
*
|
||||
* - Do not have open an MDBX database twice in the same process at
|
||||
* the same time. Not even from a plain open() call - close()ing it
|
||||
* breaks flock() advisory locking.
|
||||
* breaks fcntl() advisory locking. (It is OK to reopen it after
|
||||
* fork() - exec*(), since the lockfile has FD_CLOEXEC set.)
|
||||
*
|
||||
* - Avoid long-lived transactions. Read transactions prevent
|
||||
* reuse of pages freed by newer write transactions, thus the
|
||||
@ -845,6 +846,10 @@ int mdb_env_get_flags(MDB_env *env, unsigned *flags);
|
||||
int mdb_env_get_path(MDB_env *env, const char **path);
|
||||
|
||||
/** @brief Return the filedescriptor for the given environment.
|
||||
*
|
||||
* This function may be called after fork(), so the descriptor can be
|
||||
* closed before exec*(). Other LMDB file descriptors have FD_CLOEXEC.
|
||||
* (Until LMDB 0.9.18, only the lockfile had that.)
|
||||
*
|
||||
* @param[in] env An environment handle returned by #mdb_env_create()
|
||||
* @param[out] fd Address of a mdb_filehandle_t to contain the descriptor.
|
||||
|
Loading…
x
Reference in New Issue
Block a user