je/docs/TransactionGettingStarted/maxtxns.html
2021-06-06 13:46:45 -04:00

146 lines
5.9 KiB
HTML
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?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>Configuring the Transaction Subsystem</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="Getting Started with Berkeley DB, Java Edition Transaction Processing" />
<link rel="up" href="usingtxns.html" title="Chapter 3. Transaction Basics" />
<link rel="prev" href="txnindices.html" title="Secondary Indices with Transaction Applications" />
<link rel="next" href="txnconcurrency.html" title="Chapter 4. Concurrency" />
</head>
<body>
<div xmlns="" class="navheader">
<div class="libver">
<p>Library Version 12.2.7.5</p>
</div>
<table width="100%" summary="Navigation header">
<tr>
<th colspan="3" align="center">Configuring the Transaction Subsystem</th>
</tr>
<tr>
<td width="20%" align="left"><a accesskey="p" href="txnindices.html">Prev</a> </td>
<th width="60%" align="center">Chapter 3. Transaction Basics</th>
<td width="20%" align="right"> <a accesskey="n" href="txnconcurrency.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="maxtxns"></a>Configuring the Transaction Subsystem</h2>
</div>
</div>
</div>
<span>
<span>
<p>
<span>
When you configure your transaction subsystem, you need to consider your transaction timeout
value.
</span>
This value represents the longest period of time a
transaction can be active. Note, however, that
transaction timeouts are checked only when JE
examines its lock tables for blocked locks
(see <a class="xref" href="blocking_deadlocks.html" title="Locks, Blocks, and Deadlocks">Locks, Blocks, and Deadlocks</a>
for more information). Therefore, a transaction's timeout can
have expired, but the application will not be notified until JE
has a reason to examine its lock tables.
</p>
<p>
Be aware that some transactions may be
inappropriately timed out before the transaction has a
chance to complete. You should therefore use this
mechanism only if you know your application
might have unacceptably long transactions and
you want to make sure your application will
not stall during their execution.
(This might happen if, for example, your
transaction blocks or requests too much
data.)
</p>
<p>
Note that by default transaction timeouts are set to 0 seconds, which means that they never time
out.
</p>
<p>
To set the maximum timeout value for your transactions,
use the
<span><code class="methodname">EnvironmentConfig.setTxnTimeout()</code></span>
method. This method configures the entire
environment; not just the handle used to set the
configuration. Further, this value may
be set at any time during the application's
lifetime.
</p>
<p>
This value can also be set using the <code class="literal">je.txn.timeout</code> property in your JE
properties file.
</p>
</span>
</span>
<p>
For example:
</p>
<pre class="programlisting">package je.txn;
import com.sleepycat.je.Environment;
import com.sleepycat.je.EnvironmentConfig;
import java.io.File;
...
Environment myEnv = null;
try {
EnvironmentConfig myEnvConfig = new EnvironmentConfig();
myEnvConfig.setTransactional(true);
// Configure a maximum transaction timeout of 1 second.
myEnvConfig.setTxnTimeout(1000000);
myEnv = new Environment(new File("/my/env/home"),
myEnvConfig);
// From here, you open your databases (or store), proceed with your
// database or store operations, and respond to deadlocks as is
// normal (omitted for brevity).
...</pre>
</div>
<div class="navfooter">
<hr />
<table width="100%" summary="Navigation footer">
<tr>
<td width="40%" align="left"><a accesskey="p" href="txnindices.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="usingtxns.html">Up</a>
</td>
<td width="40%" align="right"> <a accesskey="n" href="txnconcurrency.html">Next</a></td>
</tr>
<tr>
<td width="40%" align="left" valign="top">Secondary Indices with Transaction Applications </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
<td width="40%" align="right" valign="top"> Chapter 4. Concurrency</td>
</tr>
</table>
</div>
</body>
</html>