blob: 20040a6906ab0dd5a2f020158d3b6d786f67bf94 [file] [log] [blame]
<!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 -->
<title>SystemFailure (Apache Geode 1.15.0)</title>
<link rel="stylesheet" type="text/css" href="../../../stylesheet.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="SystemFailure (Apache Geode 1.15.0)";
}
}
catch(err) {
}
//-->
var methods = {"i0":41,"i1":41,"i2":41,"i3":41,"i4":41,"i5":41,"i6":41,"i7":41,"i8":41,"i9":41,"i10":41,"i11":41,"i12":41,"i13":41,"i14":41,"i15":41,"i16":41};
var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],8:["t4","Concrete Methods"],32:["t6","Deprecated 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="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>
<div class="subNav">
<ul class="navList">
<li><a href="../../../org/apache/geode/SystemConnectException.html" title="class in org.apache.geode"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../org/apache/geode/SystemIsRunningException.html" title="class in org.apache.geode"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../index.html?org/apache/geode/SystemFailure.html" target="_top">Frames</a></li>
<li><a href="SystemFailure.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><a href="#field.summary">Field</a>&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><a href="#field.detail">Field</a>&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">org.apache.geode</div>
<h2 title="Class SystemFailure" class="title">Class SystemFailure</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">java.lang.Object</a></li>
<li>
<ul class="inheritance">
<li>org.apache.geode.SystemFailure</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<hr>
<div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;
<div class="block"><span class="deprecationComment">since Geode 1.11 because it is potentially counterproductive to try
to mitigate a VirtualMachineError since the JVM (spec) makes no guarantees about the
soundness of the JVM after such an error. In the presence of a VirtualMachineError,
the simplest solution is really the only solution: exit the JVM as soon as possible.</span></div>
</div>
<br>
<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang">@Deprecated</a>
public final class <span class="typeNameLabel">SystemFailure</span>
extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></pre>
<div class="block">Catches and responds to JVM failure
<p>
This class represents a catastrophic failure of the system, especially the Java virtual machine.
Any class may, at any time, indicate that a system failure has occurred by calling
<a href="../../../org/apache/geode/SystemFailure.html#initiateFailure-java.lang.Error-"><code>initiateFailure(Error)</code></a> (or, less commonly, <a href="../../../org/apache/geode/SystemFailure.html#setFailure-java.lang.Error-"><code>setFailure(Error)</code></a>).
<p>
In practice, the most common type of failure that is likely to be reported by an otherwise
healthy JVM is <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/OutOfMemoryError.html?is-external=true" title="class or interface in java.lang"><code>OutOfMemoryError</code></a>. However, GemFire will report any occurrence of
<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/VirtualMachineError.html?is-external=true" title="class or interface in java.lang"><code>VirtualMachineError</code></a> as a JVM failure.
<p>
When a failure is reported, you must assume that the JVM has <em>broken its fundamental execution
contract</em> with your application. No programming invariant can be assumed to be true, and your
entire application must be regarded as corrupted.
<h1>Failure Hooks</h1> GemFire uses this class to disable its distributed system (group
communication) and any open caches. It also provides a hook for you to respond to after GemFire
disables itself.
<h1>Failure WatchDog</h1> When <a href="../../../org/apache/geode/SystemFailure.html#startThreads--"><code>startThreads()</code></a> is called, a "watchdog" <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true" title="class or interface in java.lang"><code>Thread</code></a> is
started that periodically checks to see if system corruption has been reported. When system
corruption is detected, this thread proceeds to:
<ol>
<li><em>Close GemFire</em> -- Group communication is ceased (this cache member recuses itself
from the distributed system) and the cache is further poisoned (it is pointless to try to cleanly
close it at this point.).
<p>
After this has successfully ended, we launch a</li>
<li><em>failure action</em>, a user-defined Runnable <a href="../../../org/apache/geode/SystemFailure.html#setFailureAction-java.lang.Runnable-"><code>setFailureAction(Runnable)</code></a>. By
default, this Runnable performs nothing. If you feel you need to perform an action before exiting
the JVM, this hook gives you a means of attempting some action. Whatever you attempt should be
extremely simple, since your Java execution environment has been corrupted.
<p>
GemStone recommends that you employ
<a href="http://wrapper.tanukisoftware.org/doc/english/introduction.html"> Java Service
Wrapper</a> to detect when your JVM exits and to perform appropriate failure and restart actions.
</li>
<li>Finally, if the application has granted the watchdog permission to exit the JVM (via
<a href="../../../org/apache/geode/SystemFailure.html#setExitOK-boolean-"><code>setExitOK(boolean)</code></a>), the watchdog calls <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/System.html?is-external=true#exit-int-" title="class or interface in java.lang"><code>System.exit(int)</code></a> with an argument of 1.
If you have not granted this class permission to close the JVM, you are <em>strongly</em> advised
to call it in your failure action (in the previous step).</li>
</ol>
<p>
Each of these actions will be run exactly once in the above described order. However, if either
step throws any type of error (<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true" title="class or interface in java.lang"><code>Throwable</code></a>), the watchdog will assume that the JVM is still
under duress (esp. an <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/OutOfMemoryError.html?is-external=true" title="class or interface in java.lang"><code>OutOfMemoryError</code></a>), will wait a bit, and then retry the failed
action.
<p>
It bears repeating that you should be very cautious of any Runnables you ask this class to run.
By definition the JVM is <em>very sick</em> when failure has been signalled.
<h1>Failure Proctor</h1> In addition to the failure watchdog, <a href="../../../org/apache/geode/SystemFailure.html#startThreads--"><code>startThreads()</code></a> creates a
second thread (the "proctor") that monitors free memory. It does this by examining
<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Runtime.html?is-external=true#freeMemory--" title="class or interface in java.lang"><code>free memory</code></a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Runtime.html?is-external=true#totalMemory--" title="class or interface in java.lang"><code>total memory</code></a> and
<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Runtime.html?is-external=true#maxMemory--" title="class or interface in java.lang"><code>maximum memory</code></a>. If the amount of available memory stays below a given
<a href="../../../org/apache/geode/SystemFailure.html#setFailureMemoryThreshold-long-"><code>threshold</code></a>, for more than <a href="../../../org/apache/geode/SystemFailure.html#WATCHDOG_WAIT"><code>WATCHDOG_WAIT</code></a> seconds,
the watchdog is notified.
<p>
Note that the proctor can be effectively disabled by
<a href="../../../org/apache/geode/SystemFailure.html#setFailureMemoryThreshold-long-"><code>setting</code></a> the failure memory threshold to a
negative value.
<p>
The proctor is a second line of defense, attempting to detect OutOfMemoryError conditions in
circumstances where nothing alerted the watchdog. For instance, a third-party jar might
incorrectly handle this error and leave your virtual machine in a "stuck" state.
<p>
Note that the proctor does not relieve you of the obligation to follow the best practices in the
next section.
<h1>Best Practices</h1>
<h2>Catch and Handle VirtualMachineError</h2> If you feel obliged to catch <em>either</em>
<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Error.html?is-external=true" title="class or interface in java.lang"><code>Error</code></a>, or <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true" title="class or interface in java.lang"><code>Throwable</code></a>, you <em>must</em>also check for <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/VirtualMachineError.html?is-external=true" title="class or interface in java.lang"><code>VirtualMachineError</code></a>
like so:
<pre>
catch (VirtualMachineError err) {
SystemFailure.<a href="../../../org/apache/geode/SystemFailure.html#initiateFailure-java.lang.Error-"><code>initiateFailure</code></a>(err);
// If this ever returns, rethrow the error. We're poisoned
// now, so don't let this thread continue.
throw err;
}
</pre>
<h2>Periodically Check For Errors</h2> Check for serious system errors at appropriate points in
your algorithms. You may elect to use the <a href="../../../org/apache/geode/SystemFailure.html#checkFailure--"><code>checkFailure()</code></a> utility function, but you are
not required to (you could just see if <a href="../../../org/apache/geode/SystemFailure.html#getFailure--"><code>getFailure()</code></a> returns a non-null
result).
<p>
A job processing loop is a good candidate, for instance, in
org.apache.org.jgroups.protocols.UDP#run(), which implements <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#run--" title="class or interface in java.lang"><code>Thread.run()</code></a>:
<pre>
for (;;) {
SystemFailure.<a href="../../../org/apache/geode/SystemFailure.html#checkFailure--"><code>checkFailure</code></a>();
if (mcast_recv_sock == null || mcast_recv_sock.isClosed()) break;
if (Thread.currentThread().isInterrupted()) break;
...
</pre>
<h2>Catches of Error and Throwable Should Check for Failure</h2> Keep in mind that peculiar or
flat-out<em>impossible</em> exceptions may ensue after a VirtualMachineError has been thrown
<em>anywhere</em> in your virtual machine. Whenever you catch <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Error.html?is-external=true" title="class or interface in java.lang"><code>Error</code></a> or <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true" title="class or interface in java.lang"><code>Throwable</code></a>,
you should also make sure that you aren't dealing with a corrupted JVM:
<pre>
catch (Throwable t) {
// Whenever you catch Error or Throwable, you must also
// catch VirtualMachineError (see above). However, there is
// _still_ a possibility that you are dealing with a cascading
// error condition, so you also need to check to see if the JVM
// is still usable:
SystemFailure.<a href="../../../org/apache/geode/SystemFailure.html#checkFailure--"><code>checkFailure</code></a>();
...
}
</pre></div>
<dl>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>GemFire 5.1</dd>
</dl>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- =========== FIELD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="field.summary">
<!-- -->
</a>
<h3>Field Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Field Summary table, listing fields, and an explanation">
<caption><span>Fields</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Field and Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>protected static <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Error.html?is-external=true" title="class or interface in java.lang">Error</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../org/apache/geode/SystemFailure.html#failure">failure</a></span></code>
<div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;</div>
<div class="block">the underlying failure
This is usually an instance of <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/VirtualMachineError.html?is-external=true" title="class or interface in java.lang"><code>VirtualMachineError</code></a>, but it is not required to be such.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>static long</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../org/apache/geode/SystemFailure.html#MEMORY_MAX_WAIT">MEMORY_MAX_WAIT</a></span></code>
<div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;</div>
<div class="block">This is the maximum amount of time, in seconds, that the proctor thread will tolerate seeing
free memory stay below <a href="../../../org/apache/geode/SystemFailure.html#setFailureMemoryThreshold-long-"><code>setFailureMemoryThreshold(long)</code></a>, after which point it will
declare a system failure.</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="t1" class="tableTab"><span><a href="javascript:show(1);">Static 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><span id="t6" class="tableTab"><span><a href="javascript:show(32);">Deprecated 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>static void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../org/apache/geode/SystemFailure.html#checkFailure--">checkFailure</a></span>()</code>
<div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;</div>
<div class="block">Utility function to check for failures.</div>
</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code>static void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../org/apache/geode/SystemFailure.html#emergencyClose--">emergencyClose</a></span>()</code>
<div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;</div>
<div class="block">Attempt to close any and all GemFire resources.</div>
</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code>static <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Error.html?is-external=true" title="class or interface in java.lang">Error</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../org/apache/geode/SystemFailure.html#getFailure--">getFailure</a></span>()</code>
<div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;</div>
<div class="block">Returns the catastrophic system failure, if any.</div>
</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code>static void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../org/apache/geode/SystemFailure.html#initiateFailure-java.lang.Error-">initiateFailure</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Error.html?is-external=true" title="class or interface in java.lang">Error</a>&nbsp;f)</code>
<div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;</div>
<div class="block">Signals that a system failure has occurred and then throws an AssertionError.</div>
</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code>static boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../org/apache/geode/SystemFailure.html#isJVMFailureError-java.lang.Error-">isJVMFailureError</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Error.html?is-external=true" title="class or interface in java.lang">Error</a>&nbsp;err)</code>
<div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;</div>
<div class="block">Returns true if the given Error is a fatal to the JVM and it should be shut down.</div>
</td>
</tr>
<tr id="i5" class="rowColor">
<td class="colFirst"><code>static void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../org/apache/geode/SystemFailure.html#loadEmergencyClasses--">loadEmergencyClasses</a></span>()</code>
<div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;</div>
<div class="block">Since it requires object memory to unpack a jar file, make sure this JVM has loaded the classes
necessary for closure <em>before</em> it becomes necessary to use them.</div>
</td>
</tr>
<tr id="i6" class="altColor">
<td class="colFirst"><code>protected static void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../org/apache/geode/SystemFailure.html#logFine-java.lang.String-java.lang.String-">logFine</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;s)</code>
<div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;</div>
<div class="block">Logging can require allocation of objects, so we wrap the logger so that failures are silently
ignored.</div>
</td>
</tr>
<tr id="i7" class="rowColor">
<td class="colFirst"><code>protected static void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../org/apache/geode/SystemFailure.html#logInfo-java.lang.String-java.lang.String-">logInfo</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;s)</code>
<div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;</div>
<div class="block">Logging can require allocation of objects, so we wrap the logger so that failures are silently
ignored.</div>
</td>
</tr>
<tr id="i8" class="altColor">
<td class="colFirst"><code>protected static boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../org/apache/geode/SystemFailure.html#logWarning-java.lang.String-java.lang.String-java.lang.Throwable-">logWarning</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;s,
<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true" title="class or interface in java.lang">Throwable</a>&nbsp;t)</code>
<div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;</div>
<div class="block">Logging can require allocation of objects, so we wrap the logger so that failures are silently
ignored.</div>
</td>
</tr>
<tr id="i9" class="rowColor">
<td class="colFirst"><code>static boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../org/apache/geode/SystemFailure.html#setExitOK-boolean-">setExitOK</a></span>(boolean&nbsp;newVal)</code>
<div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;</div>
<div class="block">Indicate whether it is acceptable to call <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/System.html?is-external=true#exit-int-" title="class or interface in java.lang"><code>System.exit(int)</code></a> after failure processing has
completed.</div>
</td>
</tr>
<tr id="i10" class="altColor">
<td class="colFirst"><code>static void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../org/apache/geode/SystemFailure.html#setFailure-java.lang.Error-">setFailure</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Error.html?is-external=true" title="class or interface in java.lang">Error</a>&nbsp;failure)</code>
<div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;</div>
<div class="block">Set the underlying system failure, if not already set.</div>
</td>
</tr>
<tr id="i11" class="rowColor">
<td class="colFirst"><code>static <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.html?is-external=true" title="class or interface in java.lang">Runnable</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../org/apache/geode/SystemFailure.html#setFailureAction-java.lang.Runnable-">setFailureAction</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.html?is-external=true" title="class or interface in java.lang">Runnable</a>&nbsp;action)</code>
<div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;</div>
<div class="block">Sets a user-defined action that is run in the event that failure has been detected.</div>
</td>
</tr>
<tr id="i12" class="altColor">
<td class="colFirst"><code>static long</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../org/apache/geode/SystemFailure.html#setFailureMemoryThreshold-long-">setFailureMemoryThreshold</a></span>(long&nbsp;newVal)</code>
<div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;</div>
<div class="block">Set the memory threshold under which system failure will be notified.</div>
</td>
</tr>
<tr id="i13" class="rowColor">
<td class="colFirst"><code>static void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../org/apache/geode/SystemFailure.html#signalCacheClose--">signalCacheClose</a></span>()</code>
<div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;</div>
<div class="block">Should be invoked when GemFire cache is closing or closed.</div>
</td>
</tr>
<tr id="i14" class="altColor">
<td class="colFirst"><code>static void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../org/apache/geode/SystemFailure.html#signalCacheCreate--">signalCacheCreate</a></span>()</code>
<div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;</div>
<div class="block">Should be invoked when GemFire cache is being created.</div>
</td>
</tr>
<tr id="i15" class="rowColor">
<td class="colFirst"><code>static void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../org/apache/geode/SystemFailure.html#startThreads--">startThreads</a></span>()</code>
<div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;</div>
<div class="block">This starts up the watchdog and proctor threads.</div>
</td>
</tr>
<tr id="i16" class="altColor">
<td class="colFirst"><code>static void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../org/apache/geode/SystemFailure.html#stopThreads--">stopThreads</a></span>()</code>
<div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;</div>
<div class="block">This stops the threads that implement this service.</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.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3>
<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--" title="class or interface in java.lang">clone</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-" title="class or interface in java.lang">equals</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--" title="class or interface in java.lang">finalize</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--" title="class or interface in java.lang">getClass</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--" title="class or interface in java.lang">hashCode</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--" title="class or interface in java.lang">notify</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--" title="class or interface in java.lang">notifyAll</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--" title="class or interface in java.lang">toString</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--" title="class or interface in java.lang">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-" title="class or interface in java.lang">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-" title="class or interface in java.lang">wait</a></code></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ============ FIELD DETAIL =========== -->
<ul class="blockList">
<li class="blockList"><a name="field.detail">
<!-- -->
</a>
<h3>Field Detail</h3>
<a name="failure">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>failure</h4>
<pre>protected static volatile&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Error.html?is-external=true" title="class or interface in java.lang">Error</a> failure</pre>
<div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;</div>
<div class="block">the underlying failure
This is usually an instance of <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/VirtualMachineError.html?is-external=true" title="class or interface in java.lang"><code>VirtualMachineError</code></a>, but it is not required to be such.</div>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../org/apache/geode/SystemFailure.html#getFailure--"><code>getFailure()</code></a>,
<a href="../../../org/apache/geode/SystemFailure.html#initiateFailure-java.lang.Error-"><code>initiateFailure(Error)</code></a></dd>
</dl>
</li>
</ul>
<a name="MEMORY_MAX_WAIT">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>MEMORY_MAX_WAIT</h4>
<pre>public static final&nbsp;long MEMORY_MAX_WAIT</pre>
<div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;</div>
<div class="block">This is the maximum amount of time, in seconds, that the proctor thread will tolerate seeing
free memory stay below <a href="../../../org/apache/geode/SystemFailure.html#setFailureMemoryThreshold-long-"><code>setFailureMemoryThreshold(long)</code></a>, after which point it will
declare a system failure.
The default is 15 sec. This can be set using the system property
<code>gemfire.SystemFailure.MEMORY_MAX_WAIT</code>.</div>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../org/apache/geode/SystemFailure.html#setFailureMemoryThreshold-long-"><code>setFailureMemoryThreshold(long)</code></a></dd>
</dl>
</li>
</ul>
</li>
</ul>
<!-- ============ METHOD DETAIL ========== -->
<ul class="blockList">
<li class="blockList"><a name="method.detail">
<!-- -->
</a>
<h3>Method Detail</h3>
<a name="setExitOK-boolean-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setExitOK</h4>
<pre>public static&nbsp;boolean&nbsp;setExitOK(boolean&nbsp;newVal)</pre>
<div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;</div>
<div class="block">Indicate whether it is acceptable to call <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/System.html?is-external=true#exit-int-" title="class or interface in java.lang"><code>System.exit(int)</code></a> after failure processing has
completed.
<p>
This may be dynamically modified while the system is running.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>newVal</code> - true if it is OK to exit the process</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the previous value</dd>
</dl>
</li>
</ul>
<a name="isJVMFailureError-java.lang.Error-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isJVMFailureError</h4>
<pre>public static&nbsp;boolean&nbsp;isJVMFailureError(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Error.html?is-external=true" title="class or interface in java.lang">Error</a>&nbsp;err)</pre>
<div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;</div>
<div class="block">Returns true if the given Error is a fatal to the JVM and it should be shut down. Code should
call <a href="../../../org/apache/geode/SystemFailure.html#initiateFailure-java.lang.Error-"><code>initiateFailure(Error)</code></a> or <a href="../../../org/apache/geode/SystemFailure.html#setFailure-java.lang.Error-"><code>setFailure(Error)</code></a> if this returns true.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>err</code> - an Error</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>whether the given error is fatal to the JVM</dd>
</dl>
</li>
</ul>
<a name="signalCacheCreate--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>signalCacheCreate</h4>
<pre>public static&nbsp;void&nbsp;signalCacheCreate()</pre>
<div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;</div>
<div class="block">Should be invoked when GemFire cache is being created.</div>
</li>
</ul>
<a name="signalCacheClose--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>signalCacheClose</h4>
<pre>public static&nbsp;void&nbsp;signalCacheClose()</pre>
<div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;</div>
<div class="block">Should be invoked when GemFire cache is closing or closed.</div>
</li>
</ul>
<a name="loadEmergencyClasses--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>loadEmergencyClasses</h4>
<pre>public static&nbsp;void&nbsp;loadEmergencyClasses()</pre>
<div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;</div>
<div class="block">Since it requires object memory to unpack a jar file, make sure this JVM has loaded the classes
necessary for closure <em>before</em> it becomes necessary to use them.
<p>
Note that just touching the class in order to load it is usually sufficient, so all an
implementation needs to do is to reference the same classes used in <a href="../../../org/apache/geode/SystemFailure.html#emergencyClose--"><code>emergencyClose()</code></a>.
Just make sure to do it while you still have memory to succeed!</div>
</li>
</ul>
<a name="emergencyClose--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>emergencyClose</h4>
<pre>public static&nbsp;void&nbsp;emergencyClose()</pre>
<div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;</div>
<div class="block">Attempt to close any and all GemFire resources.
The contract of this method is that it should not acquire any synchronization mutexes nor
create any objects.
<p>
The former is because the system is in an undefined state and attempting to acquire the mutex
may cause a hang.
<p>
The latter is because the likelihood is that we are invoking this method due to memory
exhaustion, so any attempt to create an object will also cause a hang.
<p>
This method is not meant to be called directly (but, well, I guess it could). It is public to
document the contract that is implemented by <code>emergencyClose</code> in other parts of the
system.</div>
</li>
</ul>
<a name="checkFailure--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>checkFailure</h4>
<pre>public static&nbsp;void&nbsp;checkFailure()
throws <a href="../../../org/apache/geode/InternalGemFireError.html" title="class in org.apache.geode">InternalGemFireError</a>,
<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Error.html?is-external=true" title="class or interface in java.lang">Error</a></pre>
<div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;</div>
<div class="block">Utility function to check for failures. If a failure is detected, this methods throws an
AssertionFailure.</div>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../../org/apache/geode/InternalGemFireError.html" title="class in org.apache.geode">InternalGemFireError</a></code> - if the system has been corrupted</dd>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Error.html?is-external=true" title="class or interface in java.lang">Error</a></code> - if the system has been corrupted and a thread-specific AssertionError cannot be
allocated</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../org/apache/geode/SystemFailure.html#initiateFailure-java.lang.Error-"><code>initiateFailure(Error)</code></a></dd>
</dl>
</li>
</ul>
<a name="initiateFailure-java.lang.Error-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>initiateFailure</h4>
<pre>public static&nbsp;void&nbsp;initiateFailure(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Error.html?is-external=true" title="class or interface in java.lang">Error</a>&nbsp;f)
throws <a href="../../../org/apache/geode/InternalGemFireError.html" title="class in org.apache.geode">InternalGemFireError</a>,
<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Error.html?is-external=true" title="class or interface in java.lang">Error</a></pre>
<div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;</div>
<div class="block">Signals that a system failure has occurred and then throws an AssertionError.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>f</code> - the failure to set</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalArgumentException.html?is-external=true" title="class or interface in java.lang">IllegalArgumentException</a></code> - if f is null</dd>
<dd><code><a href="../../../org/apache/geode/InternalGemFireError.html" title="class in org.apache.geode">InternalGemFireError</a></code> - always; this method does not return normally.</dd>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Error.html?is-external=true" title="class or interface in java.lang">Error</a></code> - if a thread-specific AssertionError cannot be allocated.</dd>
</dl>
</li>
</ul>
<a name="setFailure-java.lang.Error-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setFailure</h4>
<pre>public static&nbsp;void&nbsp;setFailure(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Error.html?is-external=true" title="class or interface in java.lang">Error</a>&nbsp;failure)</pre>
<div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;</div>
<div class="block">Set the underlying system failure, if not already set.
<p>
This method does not generate an error, and should only be used in circumstances where
execution needs to continue, such as when re-implementing
<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/ThreadGroup.html?is-external=true#uncaughtException-java.lang.Thread-java.lang.Throwable-" title="class or interface in java.lang"><code>ThreadGroup.uncaughtException(Thread, Throwable)</code></a>.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>failure</code> - the system failure</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalArgumentException.html?is-external=true" title="class or interface in java.lang">IllegalArgumentException</a></code> - if you attempt to set the failure to null</dd>
</dl>
</li>
</ul>
<a name="getFailure--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getFailure</h4>
<pre>public static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Error.html?is-external=true" title="class or interface in java.lang">Error</a>&nbsp;getFailure()</pre>
<div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;</div>
<div class="block">Returns the catastrophic system failure, if any.
<p>
This is usually (though not necessarily) an instance of <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/VirtualMachineError.html?is-external=true" title="class or interface in java.lang"><code>VirtualMachineError</code></a>.
<p>
A return value of null indicates that no system failure has yet been detected.
<p>
Object synchronization can implicitly require object creation (fat locks in JRockit for
instance), so the underlying value is not synchronized (it is a volatile). This means the
return value from this call is not necessarily the <em>first</em> failure reported by the JVM.
<p>
Note that even if it <em>were</em> synchronized, it would only be a proximal indicator near the
time that the JVM crashed, and may not actually reflect the underlying root cause that
generated the failure. For instance, if your JVM is running short of memory, this Throwable is
probably an innocent victim and <em>not</em> the actual allocation (or series of allocations)
that caused your JVM to exhaust memory.
<p>
If this function returns a non-null value, keep in mind that the JVM is very limited. In
particular, any attempt to allocate objects may fail if the original failure was an
OutOfMemoryError.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the failure, if any</dd>
</dl>
</li>
</ul>
<a name="setFailureAction-java.lang.Runnable-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setFailureAction</h4>
<pre>public static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.html?is-external=true" title="class or interface in java.lang">Runnable</a>&nbsp;setFailureAction(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.html?is-external=true" title="class or interface in java.lang">Runnable</a>&nbsp;action)</pre>
<div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;</div>
<div class="block">Sets a user-defined action that is run in the event that failure has been detected.
<p>
This action is run <em>after</em> the GemFire cache has been shut down. If it throws any error,
it will be reattempted indefinitely until it succeeds. This action may be dynamically modified
while the system is running.
<p>
The default action prints the failure stack trace to System.err.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>action</code> - the Runnable to use</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the previous action</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../org/apache/geode/SystemFailure.html#initiateFailure-java.lang.Error-"><code>initiateFailure(Error)</code></a></dd>
</dl>
</li>
</ul>
<a name="setFailureMemoryThreshold-long-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setFailureMemoryThreshold</h4>
<pre>public static&nbsp;long&nbsp;setFailureMemoryThreshold(long&nbsp;newVal)</pre>
<div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;</div>
<div class="block">Set the memory threshold under which system failure will be notified.
This value may be dynamically modified while the system is running. The default is 1048576
bytes. This can be set using the system property
<code>gemfire.SystemFailure.chronic_memory_threshold</code>.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>newVal</code> - threshold in bytes</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the old threshold</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Runtime.html?is-external=true#freeMemory--" title="class or interface in java.lang"><code>Runtime.freeMemory()</code></a></dd>
</dl>
</li>
</ul>
<a name="logWarning-java.lang.String-java.lang.String-java.lang.Throwable-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>logWarning</h4>
<pre>protected static&nbsp;boolean&nbsp;logWarning(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;s,
<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true" title="class or interface in java.lang">Throwable</a>&nbsp;t)</pre>
<div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;</div>
<div class="block">Logging can require allocation of objects, so we wrap the logger so that failures are silently
ignored.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>name</code> - the name of the logger</dd>
<dd><code>s</code> - string to print</dd>
<dd><code>t</code> - the call stack, if any</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>true if the warning got printed</dd>
</dl>
</li>
</ul>
<a name="logInfo-java.lang.String-java.lang.String-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>logInfo</h4>
<pre>protected static&nbsp;void&nbsp;logInfo(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;s)</pre>
<div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;</div>
<div class="block">Logging can require allocation of objects, so we wrap the logger so that failures are silently
ignored.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>name</code> - the name of the logger</dd>
<dd><code>s</code> - string to print</dd>
</dl>
</li>
</ul>
<a name="logFine-java.lang.String-java.lang.String-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>logFine</h4>
<pre>protected static&nbsp;void&nbsp;logFine(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;s)</pre>
<div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;</div>
<div class="block">Logging can require allocation of objects, so we wrap the logger so that failures are silently
ignored.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>name</code> - the name of the logger</dd>
<dd><code>s</code> - string to print</dd>
</dl>
</li>
</ul>
<a name="startThreads--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>startThreads</h4>
<pre>public static&nbsp;void&nbsp;startThreads()</pre>
<div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;</div>
<div class="block">This starts up the watchdog and proctor threads. This method is called when a Cache is created.</div>
</li>
</ul>
<a name="stopThreads--">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>stopThreads</h4>
<pre>public static&nbsp;void&nbsp;stopThreads()</pre>
<div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;</div>
<div class="block">This stops the threads that implement this service. This method is called when a Cache is
closed.</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="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>
<div class="subNav">
<ul class="navList">
<li><a href="../../../org/apache/geode/SystemConnectException.html" title="class in org.apache.geode"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../org/apache/geode/SystemIsRunningException.html" title="class in org.apache.geode"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../index.html?org/apache/geode/SystemFailure.html" target="_top">Frames</a></li>
<li><a href="SystemFailure.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><a href="#field.summary">Field</a>&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><a href="#field.detail">Field</a>&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 ======= -->
</body>
</html>