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

397 lines
18 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>RollbackProhibitedException (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="RollbackProhibitedException (Oracle - Berkeley DB Java Edition API)";
}
}
catch(err) {
}
//-->
var methods = {"i0":10,"i1":10,"i2":10,"i3":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/RollbackProhibitedException.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/RollbackException.html" title="class in com.sleepycat.je.rep"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../../com/sleepycat/je/rep/StateChangeEvent.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/RollbackProhibitedException.html" target="_top">Frames</a></li>
<li><a href="RollbackProhibitedException.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>Constr&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>Constr&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 RollbackProhibitedException" class="title">Class RollbackProhibitedException</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li>java.lang.Object</li>
<li>
<ul class="inheritance">
<li>java.lang.Throwable</li>
<li>
<ul class="inheritance">
<li>java.lang.Exception</li>
<li>
<ul class="inheritance">
<li>java.lang.RuntimeException</li>
<li>
<ul class="inheritance">
<li><a href="../../../../com/sleepycat/je/DatabaseException.html" title="class in com.sleepycat.je">com.sleepycat.je.DatabaseException</a></li>
<li>
<ul class="inheritance">
<li><a href="../../../../com/sleepycat/je/RunRecoveryException.html" title="class in com.sleepycat.je">com.sleepycat.je.RunRecoveryException</a></li>
<li>
<ul class="inheritance">
<li><a href="../../../../com/sleepycat/je/EnvironmentFailureException.html" title="class in com.sleepycat.je">com.sleepycat.je.EnvironmentFailureException</a></li>
<li>
<ul class="inheritance">
<li><a href="../../../../com/sleepycat/je/rep/RestartRequiredException.html" title="class in com.sleepycat.je.rep">com.sleepycat.je.rep.RestartRequiredException</a></li>
<li>
<ul class="inheritance">
<li>com.sleepycat.je.rep.RollbackProhibitedException</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt>All Implemented Interfaces:</dt>
<dd>java.io.Serializable</dd>
</dl>
<hr>
<br>
<pre>public class <span class="typeNameLabel">RollbackProhibitedException</span>
extends <a href="../../../../com/sleepycat/je/rep/RestartRequiredException.html" title="class in com.sleepycat.je.rep">RestartRequiredException</a></pre>
<div class="block">This exception may be thrown by a Replica during the <a
href="../../../../../ReplicationGuide/lifecycle.html#lifecycle-nodestartup">
replication stream sync-up</a> phase of startup. It indicates that a syncup
cannot proceed without undoing a number of committed transactions that
exceeds the limit defined by <a href="../../../../com/sleepycat/je/rep/ReplicationConfig.html#TXN_ROLLBACK_LIMIT"><code>ReplicationConfig.TXN_ROLLBACK_LIMIT</code></a>.
<p>
It is rare for committed transactions to be rolled back during a
sync-up. One way this can happen is if a replication group has been
executing with a <a href="../../../../com/sleepycat/je/Durability.html" title="class in com.sleepycat.je"><code>Durability</code></a> policy that specifies a
<a href="../../../../com/sleepycat/je/Durability.ReplicaAckPolicy.html" title="enum in com.sleepycat.je"><code>ReplicaAckPolicy</code></a> of
NONE.
<p>
When ReplicaAckPolicy.NONE is specified, transactions can commit on the
master without receiving any acknowledgments from replica nodes. Using that
policy, it is possible that if the master node crashes at a given time, and
the group fails over and continues on with a new master, the old master's
environment will have transactions on disk that were never replicated and
received by other nodes. When this old master comes back up and rejoins the
group as a replica, it will have committed transactions that need to be
rolled back.
<p>
If the number of committed transactions to be rolled back is less than or
equal to the limit specified by <a href="../../../../com/sleepycat/je/rep/ReplicationConfig.html#TXN_ROLLBACK_LIMIT"><code>ReplicationConfig.TXN_ROLLBACK_LIMIT</code></a>, JE will automatically truncate the
environment log to remove the unreplicated transactions, and will throw a
<a href="../../../../com/sleepycat/je/rep/RollbackException.html" title="class in com.sleepycat.je.rep"><code>RollbackException</code></a>. The application only needs to reinstantiate the
ReplicatedEnvironment and proceed on. If the limit specified by <a href="../../../../com/sleepycat/je/rep/ReplicationConfig.html#TXN_ROLLBACK_LIMIT"><code>ReplicationConfig.TXN_ROLLBACK_LIMIT</code></a> is exceeded, the application will
receive a RollbackProhibitedException to indicate that manual intervention
is required.
<p>
The RollbackProhibitedException lets the user interject application specific
processing before the log is truncated. The exception message and getter
methods indicate the number of transactions that must be rolled back, and
the time and id of the earliest targeted transaction, and the user can use
this information to make any desired application adjustments. The
application may then manually truncate the log using <a href="../../../../com/sleepycat/je/util/DbTruncateLog.html" title="class in com.sleepycat.je.util"><code>DbTruncateLog</code></a>.
<p>
Note that any CommitTokens obtained before restarting this
<code>Replica</code> shouldn't be used after
<a href="../../../../com/sleepycat/je/rep/RollbackProhibitedException.html" title="class in com.sleepycat.je.rep"><code>RollbackProhibitedException</code></a> is thrown because the token may no
longer exist on the current <code>Master</code> node.</div>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../serialized-form.html#com.sleepycat.je.rep.RollbackProhibitedException">Serialized Form</a></dd>
</dl>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- ========== 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>java.lang.Long</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/sleepycat/je/rep/RollbackProhibitedException.html#getEarliestTransactionCommitTime--">getEarliestTransactionCommitTime</a></span>()</code>
<div class="block">Return the time in milliseconds of the earliest transaction commit that
will be rolled back if the log is truncated to the location specified by
<a href="../../../../com/sleepycat/je/rep/RollbackProhibitedException.html#getTruncationFileNumber--"><code>getTruncationFileNumber()</code></a> and <a href="../../../../com/sleepycat/je/rep/RollbackProhibitedException.html#getTruncationFileOffset--"><code>getTruncationFileOffset()</code></a></div>
</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code>long</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/sleepycat/je/rep/RollbackProhibitedException.html#getEarliestTransactionId--">getEarliestTransactionId</a></span>()</code>
<div class="block">Return the id of the earliest transaction commit that will be
rolled back if the log is truncated to the location specified by
<a href="../../../../com/sleepycat/je/rep/RollbackProhibitedException.html#getTruncationFileNumber--"><code>getTruncationFileNumber()</code></a> and <a href="../../../../com/sleepycat/je/rep/RollbackProhibitedException.html#getTruncationFileOffset--"><code>getTruncationFileOffset()</code></a></div>
</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code>long</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/sleepycat/je/rep/RollbackProhibitedException.html#getTruncationFileNumber--">getTruncationFileNumber</a></span>()</code>&nbsp;</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code>long</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/sleepycat/je/rep/RollbackProhibitedException.html#getTruncationFileOffset--">getTruncationFileOffset</a></span>()</code>
<div class="block">The JE log must be truncated to this offset in the specified
file in order for this node to rejoin the group.</div>
</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.com.sleepycat.je.EnvironmentFailureException">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;com.sleepycat.je.<a href="../../../../com/sleepycat/je/EnvironmentFailureException.html" title="class in com.sleepycat.je">EnvironmentFailureException</a></h3>
<code><a href="../../../../com/sleepycat/je/EnvironmentFailureException.html#getMessage--">getMessage</a>, <a href="../../../../com/sleepycat/je/EnvironmentFailureException.html#isCorrupted--">isCorrupted</a></code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.java.lang.Throwable">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;java.lang.Throwable</h3>
<code>addSuppressed, fillInStackTrace, getCause, getLocalizedMessage, getStackTrace, getSuppressed, initCause, printStackTrace, printStackTrace, printStackTrace, setStackTrace, toString</code></li>
</ul>
<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, wait, wait, wait</code></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ============ METHOD DETAIL ========== -->
<ul class="blockList">
<li class="blockList"><a name="method.detail">
<!-- -->
</a>
<h3>Method Detail</h3>
<a name="getTruncationFileNumber--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getTruncationFileNumber</h4>
<pre>public&nbsp;long&nbsp;getTruncationFileNumber()</pre>
</li>
</ul>
<a name="getTruncationFileOffset--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getTruncationFileOffset</h4>
<pre>public&nbsp;long&nbsp;getTruncationFileOffset()</pre>
<div class="block">The JE log must be truncated to this offset in the specified
file in order for this node to rejoin the group.</div>
</li>
</ul>
<a name="getEarliestTransactionCommitTime--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getEarliestTransactionCommitTime</h4>
<pre>public&nbsp;java.lang.Long&nbsp;getEarliestTransactionCommitTime()</pre>
<div class="block">Return the time in milliseconds of the earliest transaction commit that
will be rolled back if the log is truncated to the location specified by
<a href="../../../../com/sleepycat/je/rep/RollbackProhibitedException.html#getTruncationFileNumber--"><code>getTruncationFileNumber()</code></a> and <a href="../../../../com/sleepycat/je/rep/RollbackProhibitedException.html#getTruncationFileOffset--"><code>getTruncationFileOffset()</code></a></div>
</li>
</ul>
<a name="getEarliestTransactionId--">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>getEarliestTransactionId</h4>
<pre>public&nbsp;long&nbsp;getEarliestTransactionId()</pre>
<div class="block">Return the id of the earliest transaction commit that will be
rolled back if the log is truncated to the location specified by
<a href="../../../../com/sleepycat/je/rep/RollbackProhibitedException.html#getTruncationFileNumber--"><code>getTruncationFileNumber()</code></a> and <a href="../../../../com/sleepycat/je/rep/RollbackProhibitedException.html#getTruncationFileOffset--"><code>getTruncationFileOffset()</code></a></div>
</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/RollbackProhibitedException.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/RollbackException.html" title="class in com.sleepycat.je.rep"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../../com/sleepycat/je/rep/StateChangeEvent.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/RollbackProhibitedException.html" target="_top">Frames</a></li>
<li><a href="RollbackProhibitedException.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>Constr&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>Constr&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>