libdb/docs/api_reference/C/repmgrset_ack_policy.html
2012-11-14 16:35:20 -05:00

268 lines
12 KiB
HTML
Raw 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>DB_ENV-&gt;repmgr_set_ack_policy()</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="rep.html" title="Chapter 10.  Replication Methods" />
<link rel="prev" href="repmgr_msg_dispatch.html" title="DB_ENV-&gt;repmgr_msg_dispatch()" />
<link rel="next" href="repmgr_site.html" title="DB_ENV-&gt;repmgr_site()" />
</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">DB_ENV-&gt;repmgr_set_ack_policy()</th>
</tr>
<tr>
<td width="20%" align="left"><a accesskey="p" href="repmgr_msg_dispatch.html">Prev</a> </td>
<th width="60%" align="center">Chapter 10. 
Replication Methods
</th>
<td width="20%" align="right"> <a accesskey="n" href="repmgr_site.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="repmgrset_ack_policy"></a>DB_ENV-&gt;repmgr_set_ack_policy()</h2>
</div>
</div>
</div>
<pre class="programlisting">#include &lt;db.h&gt;
int
DB_ENV-&gt;repmgr_set_ack_policy(DB_ENV *env, int ack_policy); </pre>
<p>
The <code class="methodname">DB_ENV-&gt;repmgr_set_ack_policy()</code> method specifies how master and
client sites will handle acknowledgment of replication messages which are necessary for
"permanent" records. The current implementation requires all sites in a replication group
configure the same acknowledgement policy.
</p>
<p>
The database environment's replication subsystem may also be configured using the
environment's <a href="../../programmer_reference/env_db_config.html#env_db_config.DB_CONFIG" class="olink">DB_CONFIG</a> file. The
syntax of the entry in that file is a single line with the string "repmgr_set_ack_policy",
one or more whitespace characters, and the <span class="bold"><strong>ack_policy</strong></span>
parameter specified as a string. For example, "repmgr_set_ack_policy DB_REPMGR_ACKS_ALL".
Because the <a href="../../programmer_reference/env_db_config.html#env_db_config.DB_CONFIG" class="olink">DB_CONFIG</a> file is read
when the database environment is opened, it will silently overrule configuration done
before that time.
</p>
<p>
Waiting for client acknowledgements is always limited by the
<a class="link" href="repset_timeout.html#set_timeout_DB_REP_ACK_TIMEOUT">DB_REP_ACK_TIMEOUT</a>
specified by the <a class="xref" href="repset_timeout.html" title="DB_ENV-&gt;rep_set_timeout()">DB_ENV-&gt;rep_set_timeout()</a> method.
If an insufficient number of client acknowledgements have been
received, then the master will invoke the event callback function,
if set, with the
<a class="link" href="envevent_notify.html#event_notify_DB_EVENT_REP_PERM_FAILED">DB_EVENT_REP_PERM_FAILED</a>
value.
(See the
<a href="../../programmer_reference/rep_mgr_ack.html" class="olink">
Choosing a Replication Manager Ack Policy
</a>section in the
<em class="citetitle">Berkeley DB Programmer's Reference Guide</em> for more information.)
</p>
<p>
The <code class="methodname">DB_ENV-&gt;repmgr_set_ack_policy()</code> method configures a database
environment, not only operations performed using the specified
<a class="link" href="env.html" title="Chapter 5.  The DB_ENV Handle">DB_ENV</a> handle.
</p>
<p>
The <code class="methodname">DB_ENV-&gt;repmgr_set_ack_policy()</code> method may be called at any time
during the life of the application.
</p>
<p>
The <code class="methodname">DB_ENV-&gt;repmgr_set_ack_policy()</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="idp62331520"></a>Parameters</h3>
</div>
</div>
</div>
<div class="sect3" lang="en" xml:lang="en">
<div class="titlepage">
<div>
<div>
<h4 class="title"><a id="idp62351936"></a>ack_policy</h4>
</div>
</div>
</div>
<p>
Some acknowledgement policies use the concept of an
electable peer, which is a client capable of being
subsequently elected master of the replication
group. The <span class="bold"><strong>ack_policy</strong></span> parameter
must be set to one of the following values:
</p>
<div class="itemizedlist">
<ul type="disc">
<li>
<p><a id="ackspolicy_DB_REPMGR_ACKS_ALL"></a>
<span class="bold"><strong>DB_REPMGR_ACKS_ALL</strong></span>
</p>
<p>
The master should wait until all replication clients have acknowledged
each permanent replication message.
</p>
</li>
<li>
<p><a id="ackspolicy_DB_REPMGR_ACKS_ALL_AVAILABLE"></a>
<span class="bold"><strong>DB_REPMGR_ACKS_ALL_AVAILABLE</strong></span>
</p>
<p>
The master should wait until all currently connected replication clients have acknowledged
each permanent replication message.
This policy will then invoke the
<a class="link" href="envevent_notify.html#event_notify_DB_EVENT_REP_PERM_FAILED">DB_EVENT_REP_PERM_FAILED</a> event if fewer than
a quorum of clients acknowledged
during that time.
</p>
</li>
<li>
<p><a id="ackspolicy_DB_REPMGR_ACKS_ALL_PEERS"></a>
<span class="bold"><strong>DB_REPMGR_ACKS_ALL_PEERS</strong></span>
</p>
<p>
The master should wait until all electable peers have acknowledged
each permanent replication message.
</p>
</li>
<li>
<p><a id="ackspolicy_DB_REPMGR_ACKS_NONE"></a>
<span class="bold"><strong>DB_REPMGR_ACKS_NONE</strong></span>
</p>
<p>
The master should not wait for any client replication message
acknowledgments.
</p>
</li>
<li>
<p><a id="ackspolicy_DB_REPMGR_ACKS_ONE"></a>
<span class="bold"><strong>DB_REPMGR_ACKS_ONE</strong></span>
</p>
<p>
The master should wait until at least one client site has acknowledged
each permanent replication message.
</p>
</li>
<li>
<p><a id="ackspolicy_DB_REPMGR_ACKS_ONE_PEER"></a>
<span class="bold"><strong>DB_REPMGR_ACKS_ONE_PEER</strong></span>
</p>
<p>
The master should wait until at least one electable peer has
acknowledged each permanent replication message.
</p>
</li>
<li>
<p><a id="ackspolicy_DB_REPMGR_ACKS_QUORUM"></a>
<span class="bold"><strong>DB_REPMGR_ACKS_QUORUM</strong></span>
</p>
<p>
The master should wait until it has received acknowledgements from the
minimum number of electable peers sufficient to ensure that the effect
of the permanent record remains durable if an election is held. This is the default acknowledgement
policy.
</p>
</li>
</ul>
</div>
</div>
</div>
<div class="sect2" lang="en" xml:lang="en">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="idp62390696"></a>Errors</h3>
</div>
</div>
</div>
<p>
The <code class="methodname">DB_ENV-&gt;repmgr_set_ack_policy()</code>
<span>
<span>
method may fail and return one of the following non-zero errors:
</span>
</span>
</p>
<div class="sect3" lang="en" xml:lang="en">
<div class="titlepage">
<div>
<div>
<h4 class="title"><a id="idp62382840"></a>EINVAL</h4>
</div>
</div>
</div>
<p>
If this method is called from a base replication API
application; or if an invalid flag value or parameter was
specified.
</p>
</div>
</div>
<div class="sect2" lang="en" xml:lang="en">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="idp62394056"></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="idp62396976"></a>See Also</h3>
</div>
</div>
</div>
<p>
<a class="xref" href="rep.html#replist" title="Replication and Related Methods">Replication 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="repmgr_msg_dispatch.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="rep.html">Up</a>
</td>
<td width="40%" align="right"> <a accesskey="n" href="repmgr_site.html">Next</a></td>
</tr>
<tr>
<td width="40%" align="left" valign="top">DB_ENV-&gt;repmgr_msg_dispatch() </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
<td width="40%" align="right" valign="top"> DB_ENV-&gt;repmgr_site()</td>
</tr>
</table>
</div>
</body>
</html>