stasis/je-7.5.11/docs/java/com/sleepycat/je/rep/NetworkRestore.html
2019-06-25 16:12:40 -04:00

361 lines
15 KiB
HTML

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (1.8.0_151) on Tue Oct 31 17:36:46 EDT 2017 -->
<title>NetworkRestore (Oracle - Berkeley DB Java Edition API)</title>
<meta name="date" content="2017-10-31">
<link rel="stylesheet" type="text/css" href="../../../../style.css" title="Style">
<script type="text/javascript" src="../../../../script.js"></script>
</head>
<body>
<script type="text/javascript"><!--
try {
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="NetworkRestore (Oracle - Berkeley DB Java Edition API)";
}
}
catch(err) {
}
//-->
var methods = {"i0":10};
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
var tableTab = "tableTab";
var activeTableTab = "activeTableTab";
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a name="navbar.top">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.top.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/NetworkRestore.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../index-all.html">Index</a></li>
<li><a href="../../../../help-doc.html">Help</a></li>
</ul>
<div class="aboutLanguage"><b>Berkeley DB Java Edition</b><br><font size=\"-1\"> version 7.5.11</font>
</div>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../com/sleepycat/je/rep/MemberNotFoundException.html" title="class in com.sleepycat.je.rep"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../../com/sleepycat/je/rep/NetworkRestoreConfig.html" title="class in com.sleepycat.je.rep"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../index.html?com/sleepycat/je/rep/NetworkRestore.html" target="_top">Frames</a></li>
<li><a href="NetworkRestore.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_top");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a name="skip.navbar.top">
<!-- -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="subTitle">com.sleepycat.je.rep</div>
<h2 title="Class NetworkRestore" class="title">Class NetworkRestore</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li>java.lang.Object</li>
<li>
<ul class="inheritance">
<li>com.sleepycat.je.rep.NetworkRestore</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<hr>
<br>
<pre>public class <span class="typeNameLabel">NetworkRestore</span>
extends java.lang.Object</pre>
<div class="block">Obtains log files for a Replica from other members of the replication
group. A Replica may need to do so if it has been offline for some time, and
has fallen behind in its execution of the replication stream.
<p>
During that time, the connected nodes may have reduced their log files by
deleting files after doing log cleaning. When this node rejoins the group,
it is possible that the current Master's log files do not go back far enough
to adequately <a
href="../../../../../ReplicationGuide/lifecycle.html#lifecycle-nodestartup">
sync * up</a> this node. In that case, the node can use a <code>NetworkRestore</code> object to copy the log files from one of the nodes in the
group. The system tries to avoid deleting log files that either would be
needed for replication by current nodes or where replication would be more
efficient than network restore.
<p>
A Replica discovers the need for a NetworkRestore operation when a call to
<code>ReplicatedEnvironment()</code> fails with a <a href="../../../../com/sleepycat/je/rep/InsufficientLogException.html" title="class in com.sleepycat.je.rep"><code>InsufficientLogException</code></a>.
<p>
A call to <code>NetworkRestore.execute()</code> will copy the required log
files from a member of the group who owns the files and seems to be the
least busy. For example:
<pre class=code>
try {
node = new ReplicatedEnvironment(envDir, envConfig, repConfig);
} catch (InsufficientLogException insufficientLogEx) {
NetworkRestore restore = new NetworkRestore();
NetworkRestoreConfig config = new NetworkRestoreConfig();
config.setRetainLogFiles(false); // delete obsolete log files.
// Use the members returned by insufficientLogEx.getLogProviders() to
// select the desired subset of members and pass the resulting list
// as the argument to config.setLogProviders(), if the default selection
// of providers is not suitable.
restore.execute(insufficientLogEx, config);
// retry
node = new ReplicatedEnvironment(envDir, envConfig, repConfig);
}
</pre></div>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../../ReplicationGuide/logfile-restore.html">
Restoring Log Files</a></dd>
</dl>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor.summary">
<!-- -->
</a>
<h3>Constructor Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colOne" scope="col">Constructor and Description</th>
</tr>
<tr class="altColor">
<td class="colOne"><code><span class="memberNameLink"><a href="../../../../com/sleepycat/je/rep/NetworkRestore.html#NetworkRestore--">NetworkRestore</a></span>()</code>
<div class="block">Creates an instance of NetworkRestore suitable for restoring the logs at
this node.</div>
</td>
</tr>
</table>
</li>
</ul>
<!-- ========== METHOD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="method.summary">
<!-- -->
</a>
<h3>Method Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Method and Description</th>
</tr>
<tr id="i0" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/sleepycat/je/rep/NetworkRestore.html#execute-com.sleepycat.je.rep.InsufficientLogException-com.sleepycat.je.rep.NetworkRestoreConfig-">execute</a></span>(<a href="../../../../com/sleepycat/je/rep/InsufficientLogException.html" title="class in com.sleepycat.je.rep">InsufficientLogException</a>&nbsp;logException,
<a href="../../../../com/sleepycat/je/rep/NetworkRestoreConfig.html" title="class in com.sleepycat.je.rep">NetworkRestoreConfig</a>&nbsp;config)</code>
<div class="block">Restores the log files from one of the members of the replication group.</div>
</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;java.lang.Object</h3>
<code>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</code></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor.detail">
<!-- -->
</a>
<h3>Constructor Detail</h3>
<a name="NetworkRestore--">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>NetworkRestore</h4>
<pre>public&nbsp;NetworkRestore()</pre>
<div class="block">Creates an instance of NetworkRestore suitable for restoring the logs at
this node. After the logs are restored, the node can create a new
<a href="../../../../com/sleepycat/je/rep/ReplicatedEnvironment.html" title="class in com.sleepycat.je.rep"><code>ReplicatedEnvironment</code></a> and join the group</div>
</li>
</ul>
</li>
</ul>
<!-- ============ METHOD DETAIL ========== -->
<ul class="blockList">
<li class="blockList"><a name="method.detail">
<!-- -->
</a>
<h3>Method Detail</h3>
<a name="execute-com.sleepycat.je.rep.InsufficientLogException-com.sleepycat.je.rep.NetworkRestoreConfig-">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>execute</h4>
<pre>public&nbsp;void&nbsp;execute(<a href="../../../../com/sleepycat/je/rep/InsufficientLogException.html" title="class in com.sleepycat.je.rep">InsufficientLogException</a>&nbsp;logException,
<a href="../../../../com/sleepycat/je/rep/NetworkRestoreConfig.html" title="class in com.sleepycat.je.rep">NetworkRestoreConfig</a>&nbsp;config)
throws <a href="../../../../com/sleepycat/je/EnvironmentFailureException.html" title="class in com.sleepycat.je">EnvironmentFailureException</a>,
java.lang.IllegalArgumentException</pre>
<div class="block">Restores the log files from one of the members of the replication group.
<p>
If <code>config.getLogProviders()</code> returns null, or an empty list,
it uses the member that is least busy as the provider of the log files.
Otherwise it selects a member from the list, choosing the first member
that's available, to provide the log files. If the members in this list
are not present in <code>logException.getLogProviders()</code>, it will
result in an <code>IllegalArgumentException</code> being thrown.
Exceptions handlers for <code>InsufficientLogException</code> will
typically use <a href="../../../../com/sleepycat/je/rep/InsufficientLogException.html#getLogProviders--"><code>InsufficientLogException.getLogProviders()</code></a> as the
starting point to compute an appropriate list, with which to set up
the <code>config</code> argument.
<p>
Log files that are currently at the node will be retained if they are
part of a consistent set of log files. Obsolete log files are either
deleted, or are renamed based on the the configuration of
<code>config.getRetainLogFiles()</code>.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>logException</code> - the exception thrown by <code>ReplicatedEnvironment()</code> that necessitated this log refresh operation</dd>
<dd><code>config</code> - configures the execution of the network restore operation</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../../../com/sleepycat/je/EnvironmentFailureException.html" title="class in com.sleepycat.je">EnvironmentFailureException</a></code> - if an unexpected, internal or
environment-wide failure occurs.</dd>
<dd><code>java.lang.IllegalArgumentException</code> - if the <code>config</code> is invalid</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../com/sleepycat/je/rep/NetworkRestoreConfig.html" title="class in com.sleepycat.je.rep"><code>NetworkRestoreConfig</code></a></dd>
</dl>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
<!-- ========= END OF CLASS DATA ========= -->
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a name="navbar.bottom">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.bottom.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/NetworkRestore.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../index-all.html">Index</a></li>
<li><a href="../../../../help-doc.html">Help</a></li>
</ul>
<div class="aboutLanguage"><b>Berkeley DB Java Edition</b><br><font size=\"-1\"> version 7.5.11</font>
</div>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../com/sleepycat/je/rep/MemberNotFoundException.html" title="class in com.sleepycat.je.rep"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../../com/sleepycat/je/rep/NetworkRestoreConfig.html" title="class in com.sleepycat.je.rep"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../index.html?com/sleepycat/je/rep/NetworkRestore.html" target="_top">Frames</a></li>
<li><a href="NetworkRestore.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_bottom");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a name="skip.navbar.bottom">
<!-- -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<p class="legalCopy"><small><font size=1>Copyright (c) 2002, 2017 Oracle and/or its affiliates. All rights reserved.</font> </small></p>
</body>
</html>