Sindbad~EG File Manager
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Deadlock detection using timers</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.73.2" />
<link rel="start" href="index.html" title="Berkeley DB Programmer's Reference Guide" />
<link rel="up" href="lock.html" title="Chapter 17. The Locking Subsystem" />
<link rel="prev" href="lock_dead.html" title="Deadlock detection" />
<link rel="next" href="lock_deaddbg.html" title="Deadlock debugging" />
</head>
<body>
<div xmlns="" class="navheader">
<div class="libver">
<p>Library Version 18.1.40</p>
</div>
<table width="100%" summary="Navigation header">
<tr>
<th colspan="3" align="center">Deadlock detection using
timers</th>
</tr>
<tr>
<td width="20%" align="left"><a accesskey="p" href="lock_dead.html">Prev</a> </td>
<th width="60%" align="center">Chapter 17. The Locking Subsystem </th>
<td width="20%" align="right"> <a accesskey="n" href="lock_deaddbg.html">Next</a></td>
</tr>
</table>
<hr />
</div>
<div class="sect1" lang="en" xml:lang="en">
<div class="titlepage">
<div>
<div>
<h2 class="title" style="clear: both"><a id="lock_timeout"></a>Deadlock detection using
timers</h2>
</div>
</div>
</div>
<p>
Lock and transaction timeouts may be used in place of, or in
addition to, regular deadlock detection. If lock timeouts are
set, lock requests will return <a class="link" href="program_errorret.html#program_errorret.DB_LOCK_NOTGRANTED">DB_LOCK_NOTGRANTED</a>
from a lock call when it is
detected that the lock's timeout has expired, that is, the
lock request has blocked, waiting, longer than the specified
timeout. If transaction timeouts are set, lock requests will
return <a class="link" href="program_errorret.html#program_errorret.DB_LOCK_NOTGRANTED">DB_LOCK_NOTGRANTED</a>
from a lock call when it has been detected that the transaction has been
active longer than the specified timeout.
</p>
<p>
If lock or transaction timeouts have been set, database
operations will return <a class="link" href="program_errorret.html#program_errorret.DB_LOCK_DEADLOCK">DB_LOCK_DEADLOCK</a>
when the lock timeout has expired
or the transaction has been active longer than the specified
timeout. Applications wanting to distinguish between true
deadlock and timeout can use the <a href="../api_reference/C/envset_flags.html" class="olink">DB_ENV->set_flags()</a> configuration
flag, which causes database operations to instead return <a class="link" href="program_errorret.html#program_errorret.DB_LOCK_NOTGRANTED">DB_LOCK_NOTGRANTED</a>
in the case of timeout.
</p>
<p>
As lock and transaction timeouts are only checked when lock
requests first block or when deadlock detection is performed,
the accuracy of the timeout depends on how often deadlock
detection is performed. More specifically, transactions will
continue to run after their timeout has expired if they do not
block on a lock request after that time. A separate deadlock
detection thread (or process) should always be used if the
application depends on timeouts; otherwise, if there are no
new blocked lock requests a pending timeout will never
trigger.
</p>
<p>
If the database environment deadlock detector has been
configured with the <a href="../api_reference/C/lockdetect.html#detect_DB_LOCK_EXPIRE" class="olink">DB_LOCK_EXPIRE</a> option, timeouts are the
only mechanism by which deadlocks will be broken. If the
deadlock detector has been configured with a different option,
then regular deadlock detection will be performed, and in
addition, if timeouts have also been specified, lock requests
and transactions will time out as well.
</p>
<p>
Lock and transaction timeouts may be specified on a database
environment wide basis using the <a href="../api_reference/C/envset_timeout.html" class="olink">DB_ENV->set_timeout()</a> method. Lock
timeouts may be specified on a per-lock request basis using
the <a href="../api_reference/C/lockvec.html" class="olink">DB_ENV->lock_vec()</a> method. Lock and transaction timeouts may be
specified on a per-transaction basis using the
<a href="../api_reference/C/txnset_timeout.html" class="olink">DB_TXN->set_timeout()</a> method. Per-lock and per-transaction timeouts
supersede environment wide timeouts.
</p>
<p>
For example, consider that the environment wide transaction
timeout has been set to 20ms, the environment wide lock
timeout has been set to 10ms, a transaction has been created
in this environment and its timeout value set to 8ms, and a
specific lock request has been made on behalf of this
transaction where the lock timeout was set to 4ms. By default,
transactions in this environment will be timed out if they
block waiting for a lock after 20ms. The specific transaction
described will be timed out if it blocks waiting for a lock
after 8ms. By default, any lock request in this system will be
timed out if it blocks longer than 10ms, and the specific lock
described will be timed out if it blocks longer than
4ms.
</p>
</div>
<div class="navfooter">
<hr />
<table width="100%" summary="Navigation footer">
<tr>
<td width="40%" align="left"><a accesskey="p" href="lock_dead.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="lock.html">Up</a>
</td>
<td width="40%" align="right"> <a accesskey="n" href="lock_deaddbg.html">Next</a></td>
</tr>
<tr>
<td width="40%" align="left" valign="top">Deadlock detection </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
<td width="40%" align="right" valign="top"> Deadlock debugging</td>
</tr>
</table>
</div>
</body>
</html>
Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists