Section: BerkeleyDB Utilities (1)
Updated: 06 December 2016
db_deadlock - Detect deadlocks and abort lock requests
[-Vv] [-a e | m | n | o | W | w | y ]
] [-L file
] [-t sec.usec
utility traverses the database environment lock region, and
aborts a lock request each time it detects a deadlock or a lock request that
has timed out. By default, in the case of a deadlock, a random lock request is
chosen to be aborted.
This utility should be run as a background daemon, or the underlying Berkeley
DB deadlock detection interfaces should be called in some other way, whenever
there are multiple threads or processes accessing a database and at least one
of them is modifying it.
When a deadlock is detected, abort the locker:
with the most locks
with the fewest locks
with the oldest lock
with the most write locks
with the fewest write locks
with the youngest lock
When lock or transaction timeouts have been specified:
abort any lock request that has timed out
- -h home
Specify a home directory for the database environment; by
default, the current working directory is used.
- -L file
Log the execution of the db_deadlock utility to the specified file in the
following format, where ### is the process ID, and the date
is the time the utility was started.
db_deadlock: ### Wed Jun 15 01:23:45 EDT 1995
This file will be removed if the db_deadlock utility exits gracefully.
- -t sec.usec
Check the database environment every sec seconds plus
usec microseconds to see if a process has been forced to wait
for a lock; if one has, review the database environment lock
Write the library version number to the standard output, and exit.
Run in verbose mode, generating messages each time the detector runs.
If the -t option is not specified, db_deadlock will
run once and exit.
The db_deadlock utility uses a Berkeley DB environment (as described for the
-h option, the environment variable DB_HOME, or
because the utility was run in a directory containing a Berkeley DB
environment). In order to avoid environment corruption when using a
Berkeley DB environment, db_deadlock should always be given the chance to
detach from the environment and exit gracefully. To cause db_deadlock
to release all environment resources and exit cleanly, send it an
interrupt signal (SIGINT).
The db_deadlock utility does not attempt to create the Berkeley DB
shared memory regions if they do not already exist. The application
which creates the region should be started first, and then, once the
region is created, the db_deadlock utility should be started.
The DB_ENV->lock_detect method is the underlying method used by the
db_deadlock utility. See the db_deadlock utility source code for an
example of using DB_ENV->lock_detect
in a IEEE/ANSI Std 1003.1 (POSIX) environment.
utility exits 0 on success, and >0 if an error occurs.
If the -h option is not specified and the environment variable
DB_HOME is set, it is used as the path of the database home, as described