]> git.sur5r.net Git - openldap/blobdiff - libraries/liblmdb/lmdb.h
ITS#8321 fix mdb_cursor_chk()
[openldap] / libraries / liblmdb / lmdb.h
index ee302a2365c43dcc043bb020ff4b68150c0ac4ad..19fb1fe07ae74dd495cd3f9da1d3d30e4f711c2d 100644 (file)
  *       stale locks can block further operation.
  *
  *       Fix: Check for stale readers periodically, using the
- *       #mdb_reader_check function or the \ref mdb_stat_1 "mdb_stat" tool. Or just
- *       make all programs using the database close it; the lockfile
- *       is always reset on first open of the environment.
+ *       #mdb_reader_check function or the \ref mdb_stat_1 "mdb_stat" tool.
+ *       Stale writers will be cleared automatically on some systems:
+ *       - Windows - automatic
+ *       - Linux, systems using POSIX mutexes with Robust option - automatic
+ *       - not on BSD, systems using POSIX semaphores.
+ *       Otherwise just make all programs using the database close it;
+ *       the lockfile is always reset on first open of the environment.
  *
  *     - On BSD systems or others configured with MDB_USE_POSIX_SEM,
  *       startup can fail due to semaphores owned by another userid.
  *       for stale readers is performed or the lockfile is reset,
  *       since the process may not remove it from the lockfile.
  *
+ *       This does not apply to write transactions if the system clears
+ *       stale writers, see above.
+ *
  *     - If you do that anyway, do a periodic check for stale readers. Or
  *       close the environment once in a while, so the lockfile can get reset.
  *
@@ -391,7 +398,7 @@ typedef enum MDB_cursor_op {
 #define MDB_PAGE_NOTFOUND      (-30797)
        /** Located page was wrong type */
 #define MDB_CORRUPTED  (-30796)
-       /** Update of meta page failed, probably I/O error */
+       /** Update of meta page failed or environment had fatal error */
 #define MDB_PANIC              (-30795)
        /** Environment version mismatch */
 #define MDB_VERSION_MISMATCH   (-30794)
@@ -424,7 +431,7 @@ typedef enum MDB_cursor_op {
 #define MDB_INCOMPATIBLE       (-30784)
        /** Invalid reuse of reader locktable slot */
 #define MDB_BAD_RSLOT          (-30783)
-       /** Transaction cannot recover - it must be aborted */
+       /** Transaction must abort, has a child, or is invalid */
 #define MDB_BAD_TXN                    (-30782)
        /** Unsupported size of key/DB name/data, or wrong DUPFIXED size */
 #define MDB_BAD_VALSIZE                (-30781)