<?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>Managing Election Times</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
<link rel="home" href="index.html" title="Getting Started with Replicated Berkeley DB Applications" />
<link rel="up" href="repapp.html" title="Chapter 3. The DB Replication Framework" />
<link rel="previous" href="fwrkpermmessage.html" title="Permanent Message Handling" />
<link rel="next" href="fmwrkconnectretry.html" title="Managing Connection Retries" />
</head>
<body>
<div class="navheader">
<table width="100%" summary="Navigation header">
<tr>
<th colspan="3" align="center">Managing Election Times</th>
</tr>
<tr>
<td width="20%" align="left"><a accesskey="p" href="fwrkpermmessage.html">Prev</a> </td>
<th width="60%" align="center">Chapter 3. The DB Replication Framework</th>
<td width="20%" align="right"> <a accesskey="n" href="fmwrkconnectretry.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="electiontimes"></a>Managing Election Times</h2>
</div>
</div>
<div></div>
</div>
<p>
Where it comes to elections, there are two timeout
values with which you should be concerned: election
timeouts and election retries.
</p>
<div class="sect2" lang="en" xml:lang="en">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="electiontimeout"></a>Managing Election Timeouts</h3>
</div>
</div>
<div></div>
</div>
<p>
When a environment calls for an election, it will wait
some amount of time for the other replicas in the
replication group to respond. The amount of time
that the environment will wait before declaring the
election completed is the <span class="emphasis"><em>election timeout</em></span>.
</p>
<p>
If the environment hears from all other known replicas before
the election timeout occurs, the election is considered
a success and a master is elected.
</p>
<p>
If only a subset of replicas respond, then the success
or failure of the election is determined by (1)
how many replicas have responded and (2) the
election policy that is in place at the time.
For example, usually it only takes a simple
majority of replicas to elect a master. If
there are enough votes for a given environment to
meet that standard, then the master has been
elected and the election is considered a
success.
</p>
<p>
However, upon application startup you can
require that all known replicas must participate in the
election. Or, it is possible that not enough
votes are cast to select a master even with a
simple majority. If either of these conditions
occur when the election timeout value is
reached, the election is considered a failure
and a master is not elected. At this point,
your replication group is operating without a
master, which means that, essentially,
your replicated application has been placed in
read-only mode.
</p>
<p>
Note, however, that the replication framework will attempt a
new election after a given amount of time has
passed. See the next section for details.
</p>
<p>
You set the election timeout value using
<span><tt class="methodname">DB_ENV->rep_set_timeout()</tt>.</span>
To do so, specify the
<tt class="literal">DB_REP_ELECTION_TIMEOUT</tt>
flag to the <tt class="literal">which</tt> parameter and then a
timeout value in microseconds to the
<tt class="literal">timeout</tt> parameter.
</p>
</div>
<div class="sect2" lang="en" xml:lang="en">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="electretrytime"></a>Managing Election Retry Times</h3>
</div>
</div>
<div></div>
</div>
<p>
In the event that a election fails (see the
previous section), an election will not be
attempted again until the election retry
timeout value has expired.
</p>
<p>
You set the retry timeout value using
<span><tt class="methodname">DB_ENV->rep_set_timeout()</tt>.</span>
To do so, specify the
<tt class="literal">DB_REP_ELECTION_RETRY</tt>
flag to the <tt class="literal">which</tt> parameter and then a
retry value in microseconds to the
<tt class="literal">timeout</tt> parameter.
</p>
</div>
</div>
<div class="navfooter">
<hr />
<table width="100%" summary="Navigation footer">
<tr>
<td width="40%" align="left"><a accesskey="p" href="fwrkpermmessage.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="repapp.html">Up</a>
</td>
<td width="40%" align="right"> <a accesskey="n" href="fmwrkconnectretry.html">Next</a></td>
</tr>
<tr>
<td width="40%" align="left" valign="top">Permanent Message Handling </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
<td width="40%" align="right" valign="top"> Managing Connection Retries</td>
</tr>
</table>
</div>
</body>
</html>
Copyright 2K16 - 2K18 Indonesian Hacker Rulez