1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227
|
<?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>DbEnv::close()</title>
<link rel="stylesheet" href="apiReference.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.73.2" />
<link rel="start" href="index.html" title="Berkeley DB C++ API Reference" />
<link rel="up" href="env.html" title="Chapter 5. The DbEnv Handle" />
<link rel="prev" href="envbackup.html" title="DbEnv::backup()" />
<link rel="next" href="envcreate.html" title="DbEnv" />
</head>
<body>
<div xmlns="" class="navheader">
<div class="libver">
<p>Library Version 11.2.5.3</p>
</div>
<table width="100%" summary="Navigation header">
<tr>
<th colspan="3" align="center">DbEnv::close()</th>
</tr>
<tr>
<td width="20%" align="left"><a accesskey="p" href="envbackup.html">Prev</a> </td>
<th width="60%" align="center">Chapter 5.
The DbEnv Handle
</th>
<td width="20%" align="right"> <a accesskey="n" href="envcreate.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="envclose"></a>DbEnv::close()</h2>
</div>
</div>
</div>
<pre class="programlisting">#include <db_cxx.h>
DbEnv::close(u_int32_t flags);</pre>
<p>
The <code class="methodname">DbEnv::close()</code> method closes the
Berkeley DB environment, freeing any allocated resources and
closing all database handles opened with this environment handle,
as well as closing any underlying subsystems.
</p>
<p>
When you call the <code class="methodname">DbEnv::close()</code> method,
all open <a class="link" href="db.html" title="Chapter 2. The Db Handle">Db</a> handles and
<a class="link" href="dbc.html" title="Chapter 3. The Dbc Handle">Dbc</a> handles are closed
automatically by this function. And, when you close a database
handle, all cursors opened with it are closed automatically.
</p>
<p>
In multiple threads of control, each thread of control opens a
database environment and the database handles within it. When you
close each database handle using the
<code class="methodname">DbEnv::close()</code> method, by default, the
database is not synchronized and is similar to calling the
<code class="methodname">Db::close(DB_NOSYNC)</code> method. This is to
avoid unncessary database synchronization when there are multiple
environment handles open. To ensure all open database handles are
synchronized when you close the last environment handle, set the
flag parameter value of the <code class="methodname">DbEnv::close()</code>
method to DB_FORCESYNC. This is similar to calling the
<code class="methodname">Db::close(0)</code> method to close each database
handle.
</p>
<p>
If a database close operation fails, the method returns a non-zero
error value for the first instance of such an error, and continues
to close the rest of the database and environment handles.
</p>
<p>
The <a class="link" href="env.html" title="Chapter 5. The DbEnv Handle">DbEnv</a> handle should
not be closed while any other handle that refers to it is not yet
closed; for example, database environment handles must not be closed
while transactions in the environment
have not yet been committed or aborted. Specifically, this includes the
<a class="link" href="txn.html" title="Chapter 13. The DbTxn Handle">DbTxn</a>,
<a class="link" href="logc.html" title="The DbLogc Handle">DbLogc</a> and
<a class="link" href="memp.html" title="Chapter 9. The DbMpoolFile Handle">DbMpoolFile</a> handles.
</p>
<p>
Where the environment was initialized with the
<a class="link" href="envopen.html#envopen_DB_INIT_LOCK">DB_INIT_LOCK</a> flag,
calling <code class="methodname">DbEnv::close()</code> does not release any locks still held by the
closing process, providing functionality for long-lived locks.
Processes that want to have all their locks released can do so by
issuing the appropriate <a class="xref" href="lockvec.html" title="DbEnv::lock_vec()">DbEnv::lock_vec()</a> call.
</p>
<p>
Where the environment was initialized with the
<a class="link" href="envopen.html#envopen_DB_INIT_MPOOL">DB_INIT_MPOOL</a> flag,
calling <code class="methodname">DbEnv::close()</code> implies calls to
<a class="xref" href="mempfclose.html" title="DbMpoolFile::close()">DbMpoolFile::close()</a> for any
remaining open files in the memory pool that were returned to this
process by calls to <a class="xref" href="mempfopen.html" title="DbMpoolFile::open()">DbMpoolFile::open()</a>. It does
not imply a call to <a class="xref" href="mempfsync.html" title="DbMpoolFile::sync()">DbMpoolFile::sync()</a> for those
files.
</p>
<p>
Where the environment was initialized with the
<a class="link" href="envopen.html#envopen_DB_INIT_TXN">DB_INIT_TXN</a>
flag, calling <code class="methodname">DbEnv::close()</code> aborts any
unresolved transactions. Applications should not depend on this
behavior for transactions involving Berkeley DB databases; all
such transactions should be explicitly resolved. The problem with
depending on this semantic is that aborting an unresolved
transaction involving database operations requires a database
handle. Because the database handles should have been closed
before calling <code class="methodname">DbEnv::close()</code>, it will not
be possible to abort the transaction, and recovery will have to be
run on the Berkeley DB environment before further operations are
done.
</p>
<p>
Where log cursors were created using the
<a class="xref" href="logcursor.html" title="DbEnv::log_cursor()">DbEnv::log_cursor()</a> method,
calling <code class="methodname">DbEnv::close()</code> does not imply
closing those cursors.
</p>
<p>
In multithreaded applications, only a single thread may call the
<code class="methodname">DbEnv::close()</code> method.
</p>
<p>
After <code class="methodname">DbEnv::close()</code> has been called,
regardless of its return, the Berkeley DB environment handle may
not be accessed again.
</p>
<p>
The <code class="methodname">DbEnv::close()</code> <span>
<span>
method either returns a non-zero error value or throws an
exception that encapsulates a non-zero error value on
failure, and returns 0 on success.
</span>
</span>
</p>
<div class="sect2" lang="en" xml:lang="en">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="idp6614672"></a>Parameters</h3>
</div>
</div>
</div>
<div class="sect3" lang="en" xml:lang="en">
<div class="titlepage">
<div>
<div>
<h4 class="title"><a id="idp6601736"></a>flags</h4>
</div>
</div>
</div>
<p>
The <span class="bold"><strong>flags</strong></span> parameter must be set to 0
or be set to the following value:
</p>
<div class="itemizedlist">
<ul type="disc">
<li>
<p><a id="dbenvclose_DB_FORCESYNC"></a>
<code class="literal">DB_FORCESYNC</code>
</p>
<p>
When closing each database handle internally,
synchronize the database. If this flag is not
specified, the database handle is closed without
synchronizing the database.
</p>
</li>
</ul>
</div>
</div>
</div>
<div class="sect2" lang="en" xml:lang="en">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="idp6638656"></a>Class</h3>
</div>
</div>
</div>
<p>
<a class="link" href="env.html" title="Chapter 5. The DbEnv Handle">DbEnv</a>
</p>
</div>
<div class="sect2" lang="en" xml:lang="en">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="idp6633896"></a>See Also</h3>
</div>
</div>
</div>
<p>
<a class="xref" href="env.html#envlist" title="Database Environments and Related Methods">Database Environments and Related Methods</a>
</p>
</div>
</div>
<div class="navfooter">
<hr />
<table width="100%" summary="Navigation footer">
<tr>
<td width="40%" align="left"><a accesskey="p" href="envbackup.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="env.html">Up</a>
</td>
<td width="40%" align="right"> <a accesskey="n" href="envcreate.html">Next</a></td>
</tr>
<tr>
<td width="40%" align="left" valign="top">DbEnv::backup() </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
<td width="40%" align="right" valign="top"> DbEnv</td>
</tr>
</table>
</div>
</body>
</html>
|