Commit e911ad64 authored by Hallvard Furuseth's avatar Hallvard Furuseth
Browse files

ITS#8505 Clarify fork() caveat, mdb_env_get_fd(), flock->fcntl.

parent 6e81d407
...@@ -96,11 +96,12 @@ ...@@ -96,11 +96,12 @@
* transactions. Each transaction belongs to one thread. See below. * transactions. Each transaction belongs to one thread. See below.
* The #MDB_NOTLS flag changes this for read-only transactions. * 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 LMDB database twice in the same process at * - Do not have open an LMDB database twice in the same process at
* the same time. Not even from a plain open() call - close()ing it * 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 * - Avoid long-lived transactions. Read transactions prevent
* reuse of pages freed by newer write transactions, thus the * reuse of pages freed by newer write transactions, thus the
...@@ -794,6 +795,10 @@ int mdb_env_get_flags(MDB_env *env, unsigned int *flags); ...@@ -794,6 +795,10 @@ int mdb_env_get_flags(MDB_env *env, unsigned int *flags);
int mdb_env_get_path(MDB_env *env, const char **path); int mdb_env_get_path(MDB_env *env, const char **path);
/** @brief Return the filedescriptor for the given environment. /** @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[in] env An environment handle returned by #mdb_env_create()
* @param[out] fd Address of a mdb_filehandle_t to contain the descriptor. * @param[out] fd Address of a mdb_filehandle_t to contain the descriptor.
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment