File: sync.html

package info (click to toggle)
db 2%3A2.4.14-2.7.7.1.c
  • links: PTS
  • area: main
  • in suites: potato
  • size: 12,716 kB
  • ctags: 9,382
  • sloc: ansic: 35,556; tcl: 8,564; cpp: 4,890; sh: 2,075; makefile: 1,723; java: 1,632; sed: 419; awk: 153; asm: 41
file content (134 lines) | stat: -rw-r--r-- 4,371 bytes parent folder | download | duplicates (6)
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
<! "@(#)sync.so	10.8 (Sleepycat) 9/29/98">
<!Copyright 1997, 1998 by Sleepycat Software, Inc.  All rights reserved.>
<html>
<body bgcolor=white>
<head>
<title>Berkeley DB: DbMpool::sync</title>
<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btr
ee,hash,hashing,transaction,transactions,locking,logging,access method,access me
thods,java,C,C++">
</head>
<h1>DbMpool::sync</h1>
<hr size=1 noshade>
<tt>
<h3>
<pre>
#include &lt;db_cxx.h&gt;
<p>
int
DbMpool::sync(LSN *lsn);
</pre>
</h3>
<h1>Description</h1>
<p>
The DbMpool::sync method ensures that all the modified pages in the pool
with log sequence numbers (i.e., <a href="../../api_cxx/DbLsn/class.html">DbLsn</a> objects) less than the
<b>lsn</b> argument are written to disk.
<p>
The DbMpool::sync
method either returns <b>errno</b> or throws an exception that
encapsulates an <b>errno</b> on failure, and 0 on success,
and DB_INCOMPLETE if there were pages which need to be written but which
DbMpool::sync was unable to write immediately.
In addition, if DbMpool::sync returns success, the value of
<b>lsn</b> will be overwritten with the largest LSN from any page which
was written by DbMpool::sync to satisfy this request.
<p>
The purpose of the DbMpool::sync function is to enable a
transaction manager to ensure, as part of a checkpoint, that all pages
modified by a certain time have been written to disk.
Pages in the pool which cannot be written back to disk immediately (e.g.,
are currently pinned) are written to disk as soon as it is possible to do so.
The expected behavior of the transaction manager is to call the
DbMpool::sync function and then, if the return indicates that
some pages could not be written immediately, to wait briefly and retry
again with the same LSN until the DbMpool::sync function returns
that all pages have been written.
<p>
To support the DbMpool::sync functionality, it is necessary that the
pool functions know the location of the LSN on the page for each file type.
This location should be specified when the file is opened using the
<a href="../../api_cxx/DbMpoolFile/open.html">DbMpoolFile::open</a> function.
(Note, it is not required that the LSN be aligned on the page in any way.)
<p>
<h1>Errors</h1>
If a fatal error occurs in Berkeley DB, the DbMpool::sync method may fail and either
return DB_RUNRECOVERY or throw an exception encapsulating DB_RUNRECOVERY,
at which point all subsequent database calls will also fail in the same
way.  Methods marked as returning <b>errno</b> will, by default, throw
an exception that encapsulates the error information.  The default error
behavior can be changed, see <a href="../../api_cxx/DbException/class.html">DbException</a>.
<p>
The DbMpool::sync
method may fail and throw an exception
for any of the errors specified for the following Berkeley DB and C library
functions:
DBmemp->pgin(3),
DBmemp->pgout(3),
abort(3),
close(3),
dbenv->db_paniccall(3),
fcntl(3),
fflush(3),
fprintf(3),
free(3),
fstat(3),
fsync(3),
getenv(3),
getpid(3),
getuid(3),
isdigit(3),
<a href="../../api_cxx/DbLog/compare.html">DbLog::compare</a>,
<a href="../../api_cxx/DbLog/flush.html">DbLog::flush</a>,
lseek(3),
malloc(3),
memcmp(3),
memcpy(3),
memset(3),
mmap(3),
open(3),
pread(3),
pstat_getdynamic(3),
pwrite(3),
qsort(3),
read(3),
realloc(3),
sigfillset(3),
sigprocmask(3),
stat(3),
strerror(3),
strlen(3),
sysconf(3),
time(3),
unlink(3),
vfprintf(3),
vsnprintf(3),
and
write(3).
In addition, the DbMpool::sync
method may fail and throw an exception
or return <b>errno</b>
for the following conditions:
<dl compact>
<p><dt>EINVAL<dd>An invalid flag value or parameter was specified.
<p>
The DbMpool::sync function was called without logging having been
initialized in the environment.
</dl>
<p>
<h1>Class</h1>
<a href="../../api_cxx/DbMpool/class.html">DbMpool</a>
<p>
<h1>See Also</h1>
<a href="../../api_cxx/DbMpool/close.html">DbMpool::close</a>,
<a href="../../api_cxx/DbMpool/open.html">DbMpool::open</a>,
<a href="../../api_cxx/DbMpool/db_register.html">DbMpool::db_register</a>,
<a href="../../api_cxx/DbMpool/stat.html">DbMpool::stat</a>,
DbMpool::sync,
<a href="../../api_cxx/DbMpool/trickle.html">DbMpool::trickle</a>
and
<a href="../../api_cxx/DbMpool/unlink.html">DbMpool::unlink</a>.
</tt>
</body>
</html>