• Home
  • History
  • Annotate
  • Line#
  • Navigate
  • Raw
  • Download
  • only in /asuswrt-rt-n18u-9.0.0.4.380.2695/release/src-rt-6.x.4708/router/db-4.8.30/docs/programmer_reference/
1<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3<html xmlns="http://www.w3.org/1999/xhtml">
4  <head>
5    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
6    <title>Deadlock detection using timers</title>
7    <link rel="stylesheet" href="gettingStarted.css" type="text/css" />
8    <meta name="generator" content="DocBook XSL Stylesheets V1.73.2" />
9    <link rel="start" href="index.html" title="Berkeley DB Programmer's Reference Guide" />
10    <link rel="up" href="lock.html" title="Chapter��15.�� The Locking Subsystem" />
11    <link rel="prev" href="lock_dead.html" title="Deadlock detection" />
12    <link rel="next" href="lock_deaddbg.html" title="Deadlock debugging" />
13  </head>
14  <body>
15    <div class="navheader">
16      <table width="100%" summary="Navigation header">
17        <tr>
18          <th colspan="3" align="center">Deadlock detection using timers</th>
19        </tr>
20        <tr>
21          <td width="20%" align="left"><a accesskey="p" href="lock_dead.html">Prev</a>��</td>
22          <th width="60%" align="center">Chapter��15.��
23		The Locking Subsystem
24        </th>
25          <td width="20%" align="right">��<a accesskey="n" href="lock_deaddbg.html">Next</a></td>
26        </tr>
27      </table>
28      <hr />
29    </div>
30    <div class="sect1" lang="en" xml:lang="en">
31      <div class="titlepage">
32        <div>
33          <div>
34            <h2 class="title" style="clear: both"><a id="lock_timeout"></a>Deadlock detection using timers</h2>
35          </div>
36        </div>
37      </div>
38      <p>Lock and transaction timeouts may be used in place of, or in addition
39to, regular deadlock detection.  If lock timeouts are set, lock requests
40will return <a class="link" href="program_errorret.html#program_errorret.DB_LOCK_NOTGRANTED">DB_LOCK_NOTGRANTED</a> from a lock call when it is
41detected that the lock's timeout has expired, that is, the lock request
42has blocked, waiting, longer than the specified timeout.  If transaction
43timeouts are set, lock requests will return <a class="link" href="program_errorret.html#program_errorret.DB_LOCK_NOTGRANTED">DB_LOCK_NOTGRANTED</a>
44from a lock call when it has been detected that the transaction has been
45active longer than the specified timeout.</p>
46      <p>If lock or transaction timeouts have been set, database operations will
47return <a class="link" href="program_errorret.html#program_errorret.DB_LOCK_DEADLOCK">DB_LOCK_DEADLOCK</a> when the lock timeout has expired or the
48transaction has been active longer than the specified timeout.
49Applications wanting to distinguish between true deadlock and timeout
50can use the <a href="../api_reference/C/envset_flags.html" class="olink">DB_ENV-&gt;set_flags()</a> configuration flag, which causes
51database operations to instead return <a class="link" href="program_errorret.html#program_errorret.DB_LOCK_NOTGRANTED">DB_LOCK_NOTGRANTED</a> in the
52case of timeout.</p>
53      <p>As lock and transaction timeouts are only checked when lock requests
54first block or when deadlock detection is performed, the accuracy of
55the timeout depends on how often deadlock detection is performed.  More
56specifically, transactions will continue to run after their timeout has
57expired if they do not block on a lock request after that time.
58A separate deadlock detection thread (or process) should always
59be used if the application depends on timeouts; otherwise, if
60there are no new blocked lock requests a pending timeout will
61never trigger.</p>
62      <p>If the database environment deadlock detector has been configured with
63the <a href="../api_reference/C/lockdetect.html#detect_DB_LOCK_EXPIRE" class="olink">DB_LOCK_EXPIRE</a> option, timeouts are the only mechanism by
64which deadlocks will be broken.  If the deadlock detector has been
65configured with a different option, then regular deadlock detection will
66be performed, and in addition, if timeouts have also been specified,
67lock requests and transactions will time out as well.</p>
68      <p>Lock and transaction timeouts may be specified on a database environment
69wide basis using the <a href="../api_reference/C/envset_timeout.html" class="olink">DB_ENV-&gt;set_timeout()</a> method.  Lock timeouts may be
70specified on a per-lock request basis using the <a href="../api_reference/C/lockvec.html" class="olink">DB_ENV-&gt;lock_vec()</a> method.  Lock
71and transaction timeouts may be specified on a per-transaction basis
72using the <a href="../api_reference/C/txnset_timeout.html" class="olink">DB_TXN-&gt;set_timeout()</a> method.  Per-lock and per-transaction
73timeouts supersede environment wide timeouts.</p>
74      <p>For example, consider that the environment wide transaction timeout has
75been set to 20ms, the environment wide lock timeout has been set to
7610ms, a transaction has been created in this environment and its timeout
77value set to 8ms, and a specific lock request has been made on behalf
78of this transaction where the lock timeout was set to 4ms.  By default,
79transactions in this environment will be timed out if they block waiting
80for a lock after 20ms.  The specific transaction described will be timed
81out if it blocks waiting for a lock after 8ms.  By default, any lock
82request in this system will be timed out if it blocks longer than 10ms,
83and the specific lock described will be timed out if it blocks longer
84than 4ms.</p>
85    </div>
86    <div class="navfooter">
87      <hr />
88      <table width="100%" summary="Navigation footer">
89        <tr>
90          <td width="40%" align="left"><a accesskey="p" href="lock_dead.html">Prev</a>��</td>
91          <td width="20%" align="center">
92            <a accesskey="u" href="lock.html">Up</a>
93          </td>
94          <td width="40%" align="right">��<a accesskey="n" href="lock_deaddbg.html">Next</a></td>
95        </tr>
96        <tr>
97          <td width="40%" align="left" valign="top">Deadlock detection��</td>
98          <td width="20%" align="center">
99            <a accesskey="h" href="index.html">Home</a>
100          </td>
101          <td width="40%" align="right" valign="top">��Deadlock debugging</td>
102        </tr>
103      </table>
104    </div>
105  </body>
106</html>
107