File: envclose.html

package info (click to toggle)
db 5.1.29-9
  • links: PTS, VCS
  • area: main
  • in suites: jessie-kfreebsd
  • size: 150,348 kB
  • sloc: ansic: 400,169; java: 94,399; tcl: 70,967; sh: 37,399; cs: 30,758; cpp: 21,132; perl: 14,227; xml: 9,854; makefile: 3,777; yacc: 1,003; awk: 942; sql: 801; erlang: 461; python: 216; php: 24; asm: 14
file content (210 lines) | stat: -rw-r--r-- 10,174 bytes parent folder | download | duplicates (3)
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
<?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>DB_ENV-&gt;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 DB_ENV Handle" />
    <link rel="prev" href="envadd_data_dir.html" title="DB_ENV-&gt;add_data_dir()" />
    <link rel="next" href="envcreate.html" title="db_env_create" />
  </head>
  <body>
    <div class="navheader">
      <table width="100%" summary="Navigation header">
        <tr>
          <th colspan="3" align="center">DB_ENV-&gt;close()</th>
        </tr>
        <tr>
          <td width="20%" align="left"><a accesskey="p" href="envadd_data_dir.html">Prev</a> </td>
          <th width="60%" align="center">Chapter 5. 
                The DB_ENV 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>DB_ENV-&gt;close()</h2>
          </div>
        </div>
      </div>
      <pre class="programlisting">#include &lt;db.h&gt;

int
DB_ENV-&gt;close(DB_ENV *dbenv, u_int32_t flags);  </pre>
      <p>
         The <code class="methodname">DB_ENV-&gt;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">DB_ENV-&gt;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 DBcursor Handle">DBcursor</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">DB_ENV-&gt;close()</code> method, by default, the database is not synchronized and is similar to calling the <code class="methodname">DB-&gt;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">DB_ENV-&gt;close()</code> method to DB_FORCESYNC. 
This is similar to calling the <code class="methodname">DB-&gt;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 DB_ENV Handle">DB_ENV</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 12.  The DB_TXN Handle">DB_TXN</a>, 
         <a class="link" href="logc.html" title="The DB_LOGC Handle">DB_LOGC</a>  and 
         <a class="link" href="memp.html" title="Chapter 8.  The DB_MPOOLFILE Handle">DB_MPOOLFILE</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">DB_ENV-&gt;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="DB_ENV-&gt;lock_vec()">DB_ENV-&gt;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">DB_ENV-&gt;close()</code> implies calls to 
         <a class="xref" href="mempfclose.html" title="DB_MPOOLFILE-&gt;close()">DB_MPOOLFILE-&gt;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="DB_MPOOLFILE-&gt;open()">DB_MPOOLFILE-&gt;open()</a>.  It does
         not imply a call to <a class="xref" href="mempfsync.html" title="DB_MPOOLFILE-&gt;sync()">DB_MPOOLFILE-&gt;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">DB_ENV-&gt;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">DB_ENV-&gt;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="DB_ENV-&gt;log_cursor()">DB_ENV-&gt;log_cursor()</a>  method,
         calling <code class="methodname">DB_ENV-&gt;close()</code> does not imply closing those cursors.
    </p>
      <p>
         In multithreaded applications, only a single thread may call the
         <code class="methodname">DB_ENV-&gt;close()</code> method.
     </p>
      <p>
         After <code class="methodname">DB_ENV-&gt;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">DB_ENV-&gt;close()</code> <span>
            <span>
                  method returns a non-zero error value on failure and 0 on success.
            </span>
            
        </span>
    </p>
      <div class="sect2" lang="en" xml:lang="en">
        <div class="titlepage">
          <div>
            <div>
              <h3 class="title"><a id="idp51344960"></a>Parameters</h3>
            </div>
          </div>
        </div>
        <div class="sect3" lang="en" xml:lang="en">
          <div class="titlepage">
            <div>
              <div>
                <h4 class="title"><a id="idp51304968"></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>
          <p>
			</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>
          <p>
			</p>
        </div>
      </div>
      <div class="sect2" lang="en" xml:lang="en">
        <div class="titlepage">
          <div>
            <div>
              <h3 class="title"><a id="idp51385496"></a>Class</h3>
            </div>
          </div>
        </div>
        <p>
                <a class="link" href="env.html" title="Chapter 5.  The DB_ENV Handle">DB_ENV</a>  
            </p>
      </div>
      <div class="sect2" lang="en" xml:lang="en">
        <div class="titlepage">
          <div>
            <div>
              <h3 class="title"><a id="idp51381384"></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="envadd_data_dir.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">DB_ENV-&gt;add_data_dir() </td>
          <td width="20%" align="center">
            <a accesskey="h" href="index.html">Home</a>
          </td>
          <td width="40%" align="right" valign="top"> db_env_create</td>
        </tr>
      </table>
    </div>
  </body>
</html>