blob: cca33cafeaa4d7bf2b248ee0aafbbbaf0db5fc19 [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 -->
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Procedure (Apache HBase 3.0.0-alpha-2-SNAPSHOT API)</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="Procedure (Apache HBase 3.0.0-alpha-2-SNAPSHOT API)";
}
}
catch(err) {
}
//-->
var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10,"i10":10,"i11":10,"i12":10,"i13":9};
var tabs = {65535:["t0","All Methods"],1:["t1","Static 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/Procedure.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>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../../org/apache/hadoop/hbase/procedure/MasterProcedureManagerHost.html" title="class in org.apache.hadoop.hbase.procedure"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../../../org/apache/hadoop/hbase/procedure/ProcedureCoordinationManager.html" title="interface in org.apache.hadoop.hbase.procedure"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../index.html?org/apache/hadoop/hbase/procedure/Procedure.html" target="_top">Frames</a></li>
<li><a href="Procedure.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><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><a href="#field.detail">Field</a>&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">org.apache.hadoop.hbase.procedure</div>
<h2 title="Class Procedure" class="title">Class Procedure</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.hadoop.hbase.procedure.Procedure</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt>All Implemented Interfaces:</dt>
<dd><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/Callable.html?is-external=true" title="class or interface in java.util.concurrent">Callable</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a>&gt;, <a href="../../../../../org/apache/hadoop/hbase/errorhandling/ForeignExceptionListener.html" title="interface in org.apache.hadoop.hbase.errorhandling">ForeignExceptionListener</a></dd>
</dl>
<hr>
<br>
<pre>@InterfaceAudience.Private
public class <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure/Procedure.html#line.69">Procedure</a>
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>
implements <a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/Callable.html?is-external=true" title="class or interface in java.util.concurrent">Callable</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a>&gt;, <a href="../../../../../org/apache/hadoop/hbase/errorhandling/ForeignExceptionListener.html" title="interface in org.apache.hadoop.hbase.errorhandling">ForeignExceptionListener</a></pre>
<div class="block">A globally-barriered distributed procedure. This class encapsulates state and methods for
tracking and managing a distributed procedure, as well as aborting if any member encounters
a problem or if a cancellation is requested.
<p>
All procedures first attempt to reach a barrier point with the <a href="../../../../../org/apache/hadoop/hbase/procedure/Procedure.html#sendGlobalBarrierStart--"><code>sendGlobalBarrierStart()</code></a>
method. The procedure contacts all members and waits for all subprocedures to execute
<a href="../../../../../org/apache/hadoop/hbase/procedure/Subprocedure.html#acquireBarrier--"><code>Subprocedure.acquireBarrier()</code></a> to acquire its local piece of the global barrier and then
send acquisition info back to the coordinator. If all acquisitions at subprocedures succeed,
the coordinator then will call <a href="../../../../../org/apache/hadoop/hbase/procedure/Procedure.html#sendGlobalBarrierReached--"><code>sendGlobalBarrierReached()</code></a>. This notifies members to
execute the <a href="../../../../../org/apache/hadoop/hbase/procedure/Subprocedure.html#insideBarrier--"><code>Subprocedure.insideBarrier()</code></a> method. The procedure is blocked until all
<a href="../../../../../org/apache/hadoop/hbase/procedure/Subprocedure.html#insideBarrier--"><code>Subprocedure.insideBarrier()</code></a> executions complete at the members. When
<a href="../../../../../org/apache/hadoop/hbase/procedure/Subprocedure.html#insideBarrier--"><code>Subprocedure.insideBarrier()</code></a> completes at each member, the member sends notification to
the coordinator. Once all members complete, the coordinator calls
<a href="../../../../../org/apache/hadoop/hbase/procedure/Procedure.html#sendGlobalBarrierComplete--"><code>sendGlobalBarrierComplete()</code></a>.
<p>
If errors are encountered remotely, they are forwarded to the coordinator, and
<a href="../../../../../org/apache/hadoop/hbase/procedure/Subprocedure.html#cleanup-java.lang.Exception-"><code>Subprocedure.cleanup(Exception)</code></a> is called.
<p>
Each Procedure and each Subprocedure enforces a time limit on the execution time. If the time
limit expires before the procedure completes the <a href="../../../../../org/apache/hadoop/hbase/errorhandling/TimeoutExceptionInjector.html" title="class in org.apache.hadoop.hbase.errorhandling"><code>TimeoutExceptionInjector</code></a> will trigger
an <a href="../../../../../org/apache/hadoop/hbase/errorhandling/ForeignException.html" title="class in org.apache.hadoop.hbase.errorhandling"><code>ForeignException</code></a> to abort the procedure. This is particularly useful for situations
when running a distributed <a href="../../../../../org/apache/hadoop/hbase/procedure/Subprocedure.html" title="class in org.apache.hadoop.hbase.procedure"><code>Subprocedure</code></a> so participants can avoid blocking for extreme
amounts of time if one of the participants fails or takes a really long time (e.g. GC pause).
<p>
Users should generally not directly create or subclass instances of this. They are created
for them implicitly via <a href="../../../../../org/apache/hadoop/hbase/procedure/ProcedureCoordinator.html#startProcedure-org.apache.hadoop.hbase.errorhandling.ForeignExceptionDispatcher-java.lang.String-byte:A-java.util.List-"><code>ProcedureCoordinator.startProcedure(ForeignExceptionDispatcher,
String, byte[], List)</code></a>}</div>
</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>(package private) <a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CountDownLatch.html?is-external=true" title="class or interface in java.util.concurrent">CountDownLatch</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/procedure/Procedure.html#acquiredBarrierLatch">acquiredBarrierLatch</a></span></code>
<div class="block">latch for waiting until all members have acquire in barrier state</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>private <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<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>&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/procedure/Procedure.html#acquiringMembers">acquiringMembers</a></span></code>&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>private byte[]</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/procedure/Procedure.html#args">args</a></span></code>&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>(package private) <a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CountDownLatch.html?is-external=true" title="class or interface in java.util.concurrent">CountDownLatch</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/procedure/Procedure.html#completedLatch">completedLatch</a></span></code>
<div class="block">latch for waiting until a procedure has completed</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>private <a href="../../../../../org/apache/hadoop/hbase/procedure/ProcedureCoordinator.html" title="class in org.apache.hadoop.hbase.procedure">ProcedureCoordinator</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/procedure/Procedure.html#coord">coord</a></span></code>&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>private <a href="https://docs.oracle.com/javase/8/docs/api/java/util/HashMap.html?is-external=true" title="class or interface in java.util">HashMap</a>&lt;<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>,byte[]&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/procedure/Procedure.html#dataFromFinishedMembers">dataFromFinishedMembers</a></span></code>&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>private <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<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>&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/procedure/Procedure.html#inBarrierMembers">inBarrierMembers</a></span></code>&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>private <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></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/procedure/Procedure.html#joinBarrierLock">joinBarrierLock</a></span></code>
<div class="block">lock to prevent nodes from acquiring and then releasing before we can track them</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>private static org.slf4j.Logger</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/procedure/Procedure.html#LOG">LOG</a></span></code>&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>private <a href="../../../../../org/apache/hadoop/hbase/errorhandling/ForeignExceptionDispatcher.html" title="class in org.apache.hadoop.hbase.errorhandling">ForeignExceptionDispatcher</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/procedure/Procedure.html#monitor">monitor</a></span></code>
<div class="block">monitor to check for errors</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>private <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></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/procedure/Procedure.html#procName">procName</a></span></code>&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>(package private) <a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CountDownLatch.html?is-external=true" title="class or interface in java.util.concurrent">CountDownLatch</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/procedure/Procedure.html#releasedBarrierLatch">releasedBarrierLatch</a></span></code>
<div class="block">latch for waiting until all members have executed and released their in barrier state</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>protected <a href="../../../../../org/apache/hadoop/hbase/errorhandling/TimeoutExceptionInjector.html" title="class in org.apache.hadoop.hbase.errorhandling">TimeoutExceptionInjector</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/procedure/Procedure.html#timeoutInjector">timeoutInjector</a></span></code>&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>protected long</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/procedure/Procedure.html#wakeFrequency">wakeFrequency</a></span></code>
<div class="block">frequency to check for errors (ms)</div>
</td>
</tr>
</table>
</li>
</ul>
<!-- ======== 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="../../../../../org/apache/hadoop/hbase/procedure/Procedure.html#Procedure-org.apache.hadoop.hbase.procedure.ProcedureCoordinator-org.apache.hadoop.hbase.errorhandling.ForeignExceptionDispatcher-long-long-java.lang.String-byte:A-java.util.List-">Procedure</a></span>(<a href="../../../../../org/apache/hadoop/hbase/procedure/ProcedureCoordinator.html" title="class in org.apache.hadoop.hbase.procedure">ProcedureCoordinator</a>&nbsp;coord,
<a href="../../../../../org/apache/hadoop/hbase/errorhandling/ForeignExceptionDispatcher.html" title="class in org.apache.hadoop.hbase.errorhandling">ForeignExceptionDispatcher</a>&nbsp;monitor,
long&nbsp;wakeFreq,
long&nbsp;timeout,
<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;procName,
byte[]&nbsp;args,
<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<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>&gt;&nbsp;expectedMembers)</code>
<div class="block">Creates a procedure.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colOne"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/procedure/Procedure.html#Procedure-org.apache.hadoop.hbase.procedure.ProcedureCoordinator-long-long-java.lang.String-byte:A-java.util.List-">Procedure</a></span>(<a href="../../../../../org/apache/hadoop/hbase/procedure/ProcedureCoordinator.html" title="class in org.apache.hadoop.hbase.procedure">ProcedureCoordinator</a>&nbsp;coord,
long&nbsp;wakeFreq,
long&nbsp;timeout,
<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;procName,
byte[]&nbsp;args,
<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<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>&gt;&nbsp;expectedMembers)</code>
<div class="block">Create a procedure.</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="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="../../../../../org/apache/hadoop/hbase/procedure/Procedure.html#barrierAcquiredByMember-java.lang.String-">barrierAcquiredByMember</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;member)</code>
<div class="block">Call back triggered by an individual member upon successful local barrier acquisition</div>
</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/procedure/Procedure.html#barrierReleasedByMember-java.lang.String-byte:A-">barrierReleasedByMember</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;member,
byte[]&nbsp;dataFromMember)</code>
<div class="block">Call back triggered by a individual member upon successful local in-barrier execution and
release</div>
</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/procedure/Procedure.html#call--">call</a></span>()</code>
<div class="block">This call is the main execution thread of the barriered procedure.</div>
</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/errorhandling/ForeignExceptionDispatcher.html" title="class in org.apache.hadoop.hbase.errorhandling">ForeignExceptionDispatcher</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/procedure/Procedure.html#getErrorMonitor--">getErrorMonitor</a></span>()</code>
<div class="block">Get the ForeignExceptionDispatcher</div>
</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code><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></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/procedure/Procedure.html#getName--">getName</a></span>()</code>&nbsp;</td>
</tr>
<tr id="i5" class="rowColor">
<td class="colFirst"><code><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></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/procedure/Procedure.html#getStatus--">getStatus</a></span>()</code>&nbsp;</td>
</tr>
<tr id="i6" class="altColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/procedure/Procedure.html#isCompleted--">isCompleted</a></span>()</code>
<div class="block">Check if the entire procedure has globally completed, or has been aborted.</div>
</td>
</tr>
<tr id="i7" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/procedure/Procedure.html#receive-org.apache.hadoop.hbase.errorhandling.ForeignException-">receive</a></span>(<a href="../../../../../org/apache/hadoop/hbase/errorhandling/ForeignException.html" title="class in org.apache.hadoop.hbase.errorhandling">ForeignException</a>&nbsp;e)</code>
<div class="block">A callback that handles incoming ForeignExceptions.</div>
</td>
</tr>
<tr id="i8" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/procedure/Procedure.html#sendGlobalBarrierComplete--">sendGlobalBarrierComplete</a></span>()</code>
<div class="block">Sends a message to members that all <a href="../../../../../org/apache/hadoop/hbase/procedure/Subprocedure.html#insideBarrier--"><code>Subprocedure.insideBarrier()</code></a> calls have completed.</div>
</td>
</tr>
<tr id="i9" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/procedure/Procedure.html#sendGlobalBarrierReached--">sendGlobalBarrierReached</a></span>()</code>
<div class="block">Sends a message to all members that the global barrier condition has been satisfied.</div>
</td>
</tr>
<tr id="i10" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/procedure/Procedure.html#sendGlobalBarrierStart--">sendGlobalBarrierStart</a></span>()</code>
<div class="block">Sends a message to Members to create a new <a href="../../../../../org/apache/hadoop/hbase/procedure/Subprocedure.html" title="class in org.apache.hadoop.hbase.procedure"><code>Subprocedure</code></a> for this Procedure and execute
the <a href="../../../../../org/apache/hadoop/hbase/procedure/Subprocedure.html#acquireBarrier--"><code>Subprocedure.acquireBarrier()</code></a> step.</div>
</td>
</tr>
<tr id="i11" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/procedure/Procedure.html#waitForCompleted--">waitForCompleted</a></span>()</code>
<div class="block">Waits until the entire procedure has globally completed, or has been aborted.</div>
</td>
</tr>
<tr id="i12" class="altColor">
<td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/HashMap.html?is-external=true" title="class or interface in java.util">HashMap</a>&lt;<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>,byte[]&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/procedure/Procedure.html#waitForCompletedWithRet--">waitForCompletedWithRet</a></span>()</code>
<div class="block">Waits until the entire procedure has globally completed, or has been aborted.</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/hadoop/hbase/procedure/Procedure.html#waitForLatch-java.util.concurrent.CountDownLatch-org.apache.hadoop.hbase.errorhandling.ForeignExceptionSnare-long-java.lang.String-">waitForLatch</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CountDownLatch.html?is-external=true" title="class or interface in java.util.concurrent">CountDownLatch</a>&nbsp;latch,
<a href="../../../../../org/apache/hadoop/hbase/errorhandling/ForeignExceptionSnare.html" title="interface in org.apache.hadoop.hbase.errorhandling">ForeignExceptionSnare</a>&nbsp;monitor,
long&nbsp;wakeFrequency,
<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;latchDescription)</code>
<div class="block">Wait for latch to count to zero, ignoring any spurious wake-ups, but waking periodically to
check for errors</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="LOG">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>LOG</h4>
<pre>private static final&nbsp;org.slf4j.Logger <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure/Procedure.html#line.70">LOG</a></pre>
</li>
</ul>
<a name="procName">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>procName</h4>
<pre>private final&nbsp;<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> <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure/Procedure.html#line.77">procName</a></pre>
</li>
</ul>
<a name="args">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>args</h4>
<pre>private final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure/Procedure.html#line.79">args</a></pre>
</li>
</ul>
<a name="acquiredBarrierLatch">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>acquiredBarrierLatch</h4>
<pre>final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CountDownLatch.html?is-external=true" title="class or interface in java.util.concurrent">CountDownLatch</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure/Procedure.html#line.85">acquiredBarrierLatch</a></pre>
<div class="block">latch for waiting until all members have acquire in barrier state</div>
</li>
</ul>
<a name="releasedBarrierLatch">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>releasedBarrierLatch</h4>
<pre>final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CountDownLatch.html?is-external=true" title="class or interface in java.util.concurrent">CountDownLatch</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure/Procedure.html#line.87">releasedBarrierLatch</a></pre>
<div class="block">latch for waiting until all members have executed and released their in barrier state</div>
</li>
</ul>
<a name="completedLatch">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>completedLatch</h4>
<pre>final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CountDownLatch.html?is-external=true" title="class or interface in java.util.concurrent">CountDownLatch</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure/Procedure.html#line.89">completedLatch</a></pre>
<div class="block">latch for waiting until a procedure has completed</div>
</li>
</ul>
<a name="monitor">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>monitor</h4>
<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/errorhandling/ForeignExceptionDispatcher.html" title="class in org.apache.hadoop.hbase.errorhandling">ForeignExceptionDispatcher</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure/Procedure.html#line.91">monitor</a></pre>
<div class="block">monitor to check for errors</div>
</li>
</ul>
<a name="wakeFrequency">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>wakeFrequency</h4>
<pre>protected final&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure/Procedure.html#line.98">wakeFrequency</a></pre>
<div class="block">frequency to check for errors (ms)</div>
</li>
</ul>
<a name="timeoutInjector">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>timeoutInjector</h4>
<pre>protected final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/errorhandling/TimeoutExceptionInjector.html" title="class in org.apache.hadoop.hbase.errorhandling">TimeoutExceptionInjector</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure/Procedure.html#line.99">timeoutInjector</a></pre>
</li>
</ul>
<a name="joinBarrierLock">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>joinBarrierLock</h4>
<pre>private final&nbsp;<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> <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure/Procedure.html#line.106">joinBarrierLock</a></pre>
<div class="block">lock to prevent nodes from acquiring and then releasing before we can track them</div>
</li>
</ul>
<a name="acquiringMembers">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>acquiringMembers</h4>
<pre>private final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<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>&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure/Procedure.html#line.107">acquiringMembers</a></pre>
</li>
</ul>
<a name="inBarrierMembers">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>inBarrierMembers</h4>
<pre>private final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<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>&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure/Procedure.html#line.108">inBarrierMembers</a></pre>
</li>
</ul>
<a name="dataFromFinishedMembers">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>dataFromFinishedMembers</h4>
<pre>private final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/HashMap.html?is-external=true" title="class or interface in java.util">HashMap</a>&lt;<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>,byte[]&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure/Procedure.html#line.109">dataFromFinishedMembers</a></pre>
</li>
</ul>
<a name="coord">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>coord</h4>
<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/procedure/ProcedureCoordinator.html" title="class in org.apache.hadoop.hbase.procedure">ProcedureCoordinator</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure/Procedure.html#line.110">coord</a></pre>
</li>
</ul>
</li>
</ul>
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor.detail">
<!-- -->
</a>
<h3>Constructor Detail</h3>
<a name="Procedure-org.apache.hadoop.hbase.procedure.ProcedureCoordinator-org.apache.hadoop.hbase.errorhandling.ForeignExceptionDispatcher-long-long-java.lang.String-byte:A-java.util.List-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>Procedure</h4>
<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure/Procedure.html#line.125">Procedure</a>(<a href="../../../../../org/apache/hadoop/hbase/procedure/ProcedureCoordinator.html" title="class in org.apache.hadoop.hbase.procedure">ProcedureCoordinator</a>&nbsp;coord,
<a href="../../../../../org/apache/hadoop/hbase/errorhandling/ForeignExceptionDispatcher.html" title="class in org.apache.hadoop.hbase.errorhandling">ForeignExceptionDispatcher</a>&nbsp;monitor,
long&nbsp;wakeFreq,
long&nbsp;timeout,
<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;procName,
byte[]&nbsp;args,
<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<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>&gt;&nbsp;expectedMembers)</pre>
<div class="block">Creates a procedure. (FOR TESTING)
<a href="../../../../../org/apache/hadoop/hbase/procedure/Procedure.html" title="class in org.apache.hadoop.hbase.procedure"><code>Procedure</code></a> state to be run by a <a href="../../../../../org/apache/hadoop/hbase/procedure/ProcedureCoordinator.html" title="class in org.apache.hadoop.hbase.procedure"><code>ProcedureCoordinator</code></a>.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>coord</code> - coordinator to call back to for general errors (e.g.
<a href="../../../../../org/apache/hadoop/hbase/procedure/ProcedureCoordinator.html#rpcConnectionFailure-java.lang.String-java.io.IOException-"><code>ProcedureCoordinator.rpcConnectionFailure(String, IOException)</code></a>).</dd>
<dd><code>monitor</code> - error monitor to check for external errors</dd>
<dd><code>wakeFreq</code> - frequency to check for errors while waiting</dd>
<dd><code>timeout</code> - amount of time to allow the procedure to run before cancelling</dd>
<dd><code>procName</code> - name of the procedure instance</dd>
<dd><code>args</code> - argument data associated with the procedure instance</dd>
<dd><code>expectedMembers</code> - names of the expected members</dd>
</dl>
</li>
</ul>
<a name="Procedure-org.apache.hadoop.hbase.procedure.ProcedureCoordinator-long-long-java.lang.String-byte:A-java.util.List-">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>Procedure</h4>
<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure/Procedure.html#line.158">Procedure</a>(<a href="../../../../../org/apache/hadoop/hbase/procedure/ProcedureCoordinator.html" title="class in org.apache.hadoop.hbase.procedure">ProcedureCoordinator</a>&nbsp;coord,
long&nbsp;wakeFreq,
long&nbsp;timeout,
<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;procName,
byte[]&nbsp;args,
<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<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>&gt;&nbsp;expectedMembers)</pre>
<div class="block">Create a procedure.
Users should generally not directly create instances of this. They are created them
implicitly via <a href="../../../../../org/apache/hadoop/hbase/procedure/ProcedureCoordinator.html#createProcedure-org.apache.hadoop.hbase.errorhandling.ForeignExceptionDispatcher-java.lang.String-byte:A-java.util.List-"><code>ProcedureCoordinator.createProcedure(ForeignExceptionDispatcher,
String, byte[], List)</code></a>}</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>coord</code> - coordinator to call back to for general errors (e.g.
<a href="../../../../../org/apache/hadoop/hbase/procedure/ProcedureCoordinator.html#rpcConnectionFailure-java.lang.String-java.io.IOException-"><code>ProcedureCoordinator.rpcConnectionFailure(String, IOException)</code></a>).</dd>
<dd><code>wakeFreq</code> - frequency to check for errors while waiting</dd>
<dd><code>timeout</code> - amount of time to allow the procedure to run before cancelling</dd>
<dd><code>procName</code> - name of the procedure instance</dd>
<dd><code>args</code> - argument data associated with the procedure instance</dd>
<dd><code>expectedMembers</code> - names of the expected members</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="getName--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getName</h4>
<pre>public&nbsp;<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;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure/Procedure.html#line.164">getName</a>()</pre>
</li>
</ul>
<a name="getStatus--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getStatus</h4>
<pre>public&nbsp;<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;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure/Procedure.html#line.171">getStatus</a>()</pre>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>String of the procedure members both trying to enter the barrier and already in barrier</dd>
</dl>
</li>
</ul>
<a name="getErrorMonitor--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getErrorMonitor</h4>
<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/errorhandling/ForeignExceptionDispatcher.html" title="class in org.apache.hadoop.hbase.errorhandling">ForeignExceptionDispatcher</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure/Procedure.html#line.184">getErrorMonitor</a>()</pre>
<div class="block">Get the ForeignExceptionDispatcher</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the Procedure's monitor.</dd>
</dl>
</li>
</ul>
<a name="call--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>call</h4>
<pre>public final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure/Procedure.html#line.195">call</a>()</pre>
<div class="block">This call is the main execution thread of the barriered procedure. It sends messages and
essentially blocks until all procedure members acquire or later complete but periodically
checks for foreign exceptions.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/Callable.html?is-external=true#call--" title="class or interface in java.util.concurrent">call</a></code>&nbsp;in interface&nbsp;<code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/Callable.html?is-external=true" title="class or interface in java.util.concurrent">Callable</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a>&gt;</code></dd>
</dl>
</li>
</ul>
<a name="sendGlobalBarrierStart--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>sendGlobalBarrierStart</h4>
<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure/Procedure.html#line.245">sendGlobalBarrierStart</a>()
throws <a href="../../../../../org/apache/hadoop/hbase/errorhandling/ForeignException.html" title="class in org.apache.hadoop.hbase.errorhandling">ForeignException</a></pre>
<div class="block">Sends a message to Members to create a new <a href="../../../../../org/apache/hadoop/hbase/procedure/Subprocedure.html" title="class in org.apache.hadoop.hbase.procedure"><code>Subprocedure</code></a> for this Procedure and execute
the <a href="../../../../../org/apache/hadoop/hbase/procedure/Subprocedure.html#acquireBarrier--"><code>Subprocedure.acquireBarrier()</code></a> step.</div>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../../../../org/apache/hadoop/hbase/errorhandling/ForeignException.html" title="class in org.apache.hadoop.hbase.errorhandling">ForeignException</a></code></dd>
</dl>
</li>
</ul>
<a name="sendGlobalBarrierReached--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>sendGlobalBarrierReached</h4>
<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure/Procedure.html#line.266">sendGlobalBarrierReached</a>()
throws <a href="../../../../../org/apache/hadoop/hbase/errorhandling/ForeignException.html" title="class in org.apache.hadoop.hbase.errorhandling">ForeignException</a></pre>
<div class="block">Sends a message to all members that the global barrier condition has been satisfied. This
should only be executed after all members have completed its
<a href="../../../../../org/apache/hadoop/hbase/procedure/Subprocedure.html#acquireBarrier--"><code>Subprocedure.acquireBarrier()</code></a> call successfully. This triggers the member
<a href="../../../../../org/apache/hadoop/hbase/procedure/Subprocedure.html#insideBarrier--"><code>Subprocedure.insideBarrier()</code></a> method.</div>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../../../../org/apache/hadoop/hbase/errorhandling/ForeignException.html" title="class in org.apache.hadoop.hbase.errorhandling">ForeignException</a></code></dd>
</dl>
</li>
</ul>
<a name="sendGlobalBarrierComplete--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>sendGlobalBarrierComplete</h4>
<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure/Procedure.html#line.280">sendGlobalBarrierComplete</a>()</pre>
<div class="block">Sends a message to members that all <a href="../../../../../org/apache/hadoop/hbase/procedure/Subprocedure.html#insideBarrier--"><code>Subprocedure.insideBarrier()</code></a> calls have completed.
After this executes, the coordinator can assume that any state resources about this barrier
procedure state has been released.</div>
</li>
</ul>
<a name="barrierAcquiredByMember-java.lang.String-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>barrierAcquiredByMember</h4>
<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure/Procedure.html#line.297">barrierAcquiredByMember</a>(<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;member)</pre>
<div class="block">Call back triggered by an individual member upon successful local barrier acquisition</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>member</code> - </dd>
</dl>
</li>
</ul>
<a name="barrierReleasedByMember-java.lang.String-byte:A-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>barrierReleasedByMember</h4>
<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure/Procedure.html#line.320">barrierReleasedByMember</a>(<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;member,
byte[]&nbsp;dataFromMember)</pre>
<div class="block">Call back triggered by a individual member upon successful local in-barrier execution and
release</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>member</code> - </dd>
<dd><code>dataFromMember</code> - </dd>
</dl>
</li>
</ul>
<a name="waitForCompleted--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>waitForCompleted</h4>
<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure/Procedure.html#line.346">waitForCompleted</a>()
throws <a href="../../../../../org/apache/hadoop/hbase/errorhandling/ForeignException.html" title="class in org.apache.hadoop.hbase.errorhandling">ForeignException</a>,
<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></pre>
<div class="block">Waits until the entire procedure has globally completed, or has been aborted. If an
exception is thrown the procedure may or not have run cleanup to trigger the completion latch
yet.</div>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../../../../org/apache/hadoop/hbase/errorhandling/ForeignException.html" title="class in org.apache.hadoop.hbase.errorhandling">ForeignException</a></code></dd>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></code></dd>
</dl>
</li>
</ul>
<a name="waitForCompletedWithRet--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>waitForCompletedWithRet</h4>
<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/HashMap.html?is-external=true" title="class or interface in java.util">HashMap</a>&lt;<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>,byte[]&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure/Procedure.html#line.358">waitForCompletedWithRet</a>()
throws <a href="../../../../../org/apache/hadoop/hbase/errorhandling/ForeignException.html" title="class in org.apache.hadoop.hbase.errorhandling">ForeignException</a>,
<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></pre>
<div class="block">Waits until the entire procedure has globally completed, or has been aborted. If an
exception is thrown the procedure may or not have run cleanup to trigger the completion latch
yet.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>data returned from procedure members upon successfully completing subprocedure.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../../../../org/apache/hadoop/hbase/errorhandling/ForeignException.html" title="class in org.apache.hadoop.hbase.errorhandling">ForeignException</a></code></dd>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></code></dd>
</dl>
</li>
</ul>
<a name="isCompleted--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isCompleted</h4>
<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure/Procedure.html#line.367">isCompleted</a>()
throws <a href="../../../../../org/apache/hadoop/hbase/errorhandling/ForeignException.html" title="class in org.apache.hadoop.hbase.errorhandling">ForeignException</a></pre>
<div class="block">Check if the entire procedure has globally completed, or has been aborted.</div>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../../../../org/apache/hadoop/hbase/errorhandling/ForeignException.html" title="class in org.apache.hadoop.hbase.errorhandling">ForeignException</a></code></dd>
</dl>
</li>
</ul>
<a name="receive-org.apache.hadoop.hbase.errorhandling.ForeignException-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>receive</h4>
<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure/Procedure.html#line.377">receive</a>(<a href="../../../../../org/apache/hadoop/hbase/errorhandling/ForeignException.html" title="class in org.apache.hadoop.hbase.errorhandling">ForeignException</a>&nbsp;e)</pre>
<div class="block">A callback that handles incoming ForeignExceptions.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../../../org/apache/hadoop/hbase/errorhandling/ForeignExceptionListener.html#receive-org.apache.hadoop.hbase.errorhandling.ForeignException-">receive</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/errorhandling/ForeignExceptionListener.html" title="interface in org.apache.hadoop.hbase.errorhandling">ForeignExceptionListener</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>e</code> - exception causing the error. Implementations must accept and handle null here.</dd>
</dl>
</li>
</ul>
<a name="waitForLatch-java.util.concurrent.CountDownLatch-org.apache.hadoop.hbase.errorhandling.ForeignExceptionSnare-long-java.lang.String-">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>waitForLatch</h4>
<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure/Procedure.html#line.392">waitForLatch</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CountDownLatch.html?is-external=true" title="class or interface in java.util.concurrent">CountDownLatch</a>&nbsp;latch,
<a href="../../../../../org/apache/hadoop/hbase/errorhandling/ForeignExceptionSnare.html" title="interface in org.apache.hadoop.hbase.errorhandling">ForeignExceptionSnare</a>&nbsp;monitor,
long&nbsp;wakeFrequency,
<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;latchDescription)
throws <a href="../../../../../org/apache/hadoop/hbase/errorhandling/ForeignException.html" title="class in org.apache.hadoop.hbase.errorhandling">ForeignException</a>,
<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></pre>
<div class="block">Wait for latch to count to zero, ignoring any spurious wake-ups, but waking periodically to
check for errors</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>latch</code> - latch to wait on</dd>
<dd><code>monitor</code> - monitor to check for errors while waiting</dd>
<dd><code>wakeFrequency</code> - frequency to wake up and check for errors (in
<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/TimeUnit.html?is-external=true#MILLISECONDS" title="class or interface in java.util.concurrent"><code>TimeUnit.MILLISECONDS</code></a>)</dd>
<dd><code>latchDescription</code> - description of the latch, for logging</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../../../../org/apache/hadoop/hbase/errorhandling/ForeignException.html" title="class in org.apache.hadoop.hbase.errorhandling">ForeignException</a></code> - type of error the monitor can throw, if the task fails</dd>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></code> - if we are interrupted while waiting on latch</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/Procedure.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>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../../org/apache/hadoop/hbase/procedure/MasterProcedureManagerHost.html" title="class in org.apache.hadoop.hbase.procedure"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../../../org/apache/hadoop/hbase/procedure/ProcedureCoordinationManager.html" title="interface in org.apache.hadoop.hbase.procedure"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../index.html?org/apache/hadoop/hbase/procedure/Procedure.html" target="_top">Frames</a></li>
<li><a href="Procedure.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><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><a href="#field.detail">Field</a>&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>Copyright &#169; 2007&#x2013;2021 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
</body>
</html>