blob: d7715d002727ea3955d24c4a8b6eee128fcf5b53 [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>Subprocedure (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="Subprocedure (Apache HBase 3.0.0-alpha-2-SNAPSHOT API)";
}
}
catch(err) {
}
//-->
var methods = {"i0":6,"i1":10,"i2":10,"i3":6,"i4":10,"i5":10,"i6":10,"i7":6,"i8":10,"i9":10,"i10":10,"i11":10,"i12":10};
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],4:["t3","Abstract 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/Subprocedure.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/RegionServerProcedureManagerHost.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/Subprocedure.SubprocedureImpl.html" title="class 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/Subprocedure.html" target="_top">Frames</a></li>
<li><a href="Subprocedure.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><a href="#nested.class.summary">Nested</a>&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 Subprocedure" class="title">Class Subprocedure</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.Subprocedure</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;</dd>
</dl>
<dl>
<dt>Direct Known Subclasses:</dt>
<dd><a href="../../../../../org/apache/hadoop/hbase/regionserver/snapshot/FlushSnapshotSubprocedure.html" title="class in org.apache.hadoop.hbase.regionserver.snapshot">FlushSnapshotSubprocedure</a>, <a href="../../../../../org/apache/hadoop/hbase/procedure/flush/FlushTableSubprocedure.html" title="class in org.apache.hadoop.hbase.procedure.flush">FlushTableSubprocedure</a>, <a href="../../../../../org/apache/hadoop/hbase/backup/regionserver/LogRollBackupSubprocedure.html" title="class in org.apache.hadoop.hbase.backup.regionserver">LogRollBackupSubprocedure</a>, <a href="../../../../../org/apache/hadoop/hbase/procedure/Subprocedure.SubprocedureImpl.html" title="class in org.apache.hadoop.hbase.procedure">Subprocedure.SubprocedureImpl</a></dd>
</dl>
<hr>
<br>
<pre>@InterfaceAudience.Private
public abstract class <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure/Subprocedure.html#line.54">Subprocedure</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;</pre>
<div class="block">Distributed procedure member's Subprocedure. A procedure is sarted on a ProcedureCoordinator
which communicates with ProcedureMembers who create and start its part of the Procedure. This
sub part is called a Subprocedure
Users should subclass this and implement <a href="../../../../../org/apache/hadoop/hbase/procedure/Subprocedure.html#acquireBarrier--"><code>acquireBarrier()</code></a> (get local barrier for this
member), <a href="../../../../../org/apache/hadoop/hbase/procedure/Subprocedure.html#insideBarrier--"><code>insideBarrier()</code></a> (execute while globally barriered and release barrier) and
<a href="../../../../../org/apache/hadoop/hbase/procedure/Subprocedure.html#cleanup-java.lang.Exception-"><code>cleanup(Exception)</code></a> (release state associated with subprocedure.)
When submitted to a ProcedureMember, the call method is executed in a separate thread.
Latches are use too block its progress and trigger continuations when barrier conditions are
met.
Exception that makes it out of calls to <a href="../../../../../org/apache/hadoop/hbase/procedure/Subprocedure.html#acquireBarrier--"><code>acquireBarrier()</code></a> or <a href="../../../../../org/apache/hadoop/hbase/procedure/Subprocedure.html#insideBarrier--"><code>insideBarrier()</code></a>
gets converted into <a href="../../../../../org/apache/hadoop/hbase/errorhandling/ForeignException.html" title="class in org.apache.hadoop.hbase.errorhandling"><code>ForeignException</code></a>, which will get propagated to the
<a href="../../../../../org/apache/hadoop/hbase/procedure/ProcedureCoordinator.html" title="class in org.apache.hadoop.hbase.procedure"><code>ProcedureCoordinator</code></a>.
There is a category of procedure (ex: online-snapshots), and a user-specified instance-specific
barrierName. (ex: snapshot121126).</div>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- ======== NESTED CLASS SUMMARY ======== -->
<ul class="blockList">
<li class="blockList"><a name="nested.class.summary">
<!-- -->
</a>
<h3>Nested Class Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Nested Class Summary table, listing nested classes, and an explanation">
<caption><span>Nested Classes</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Class and Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static class&nbsp;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/procedure/Subprocedure.SubprocedureImpl.html" title="class in org.apache.hadoop.hbase.procedure">Subprocedure.SubprocedureImpl</a></span></code>
<div class="block">Empty Subprocedure for testing.</div>
</td>
</tr>
</table>
</li>
</ul>
<!-- =========== 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>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/Subprocedure.html#barrierName">barrierName</a></span></code>&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>private boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/procedure/Subprocedure.html#complete">complete</a></span></code>&nbsp;</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/Subprocedure.html#executionTimeoutTimer">executionTimeoutTimer</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/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/Subprocedure.html#inGlobalBarrier">inGlobalBarrier</a></span></code>
<div class="block">wait on before allowing the in barrier phase to proceed</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/Subprocedure.html#LOG">LOG</a></span></code>&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>protected <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/Subprocedure.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/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/Subprocedure.html#releasedLocalBarrier">releasedLocalBarrier</a></span></code>
<div class="block">counted down when the Subprocedure has completed</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>protected <a href="../../../../../org/apache/hadoop/hbase/procedure/ProcedureMemberRpcs.html" title="interface in org.apache.hadoop.hbase.procedure">ProcedureMemberRpcs</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/procedure/Subprocedure.html#rpcs">rpcs</a></span></code>&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>protected long</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/procedure/Subprocedure.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/Subprocedure.html#Subprocedure-org.apache.hadoop.hbase.procedure.ProcedureMember-java.lang.String-org.apache.hadoop.hbase.errorhandling.ForeignExceptionDispatcher-long-long-">Subprocedure</a></span>(<a href="../../../../../org/apache/hadoop/hbase/procedure/ProcedureMember.html" title="class in org.apache.hadoop.hbase.procedure">ProcedureMember</a>&nbsp;member,
<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,
<a href="../../../../../org/apache/hadoop/hbase/errorhandling/ForeignExceptionDispatcher.html" title="class in org.apache.hadoop.hbase.errorhandling">ForeignExceptionDispatcher</a>&nbsp;monitor,
long&nbsp;wakeFrequency,
long&nbsp;timeout)</code>&nbsp;</td>
</tr>
</table>
</li>
</ul>
<!-- ========== METHOD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="method.summary">
<!-- -->
</a>
<h3>Method Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t3" class="tableTab"><span><a href="javascript:show(4);">Abstract 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>abstract void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/procedure/Subprocedure.html#acquireBarrier--">acquireBarrier</a></span>()</code>
<div class="block">The implementation of this method should gather and hold required resources (locks, disk
space, etc) to satisfy the Procedures barrier condition.</div>
</td>
</tr>
<tr id="i1" class="rowColor">
<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/Subprocedure.html#call--">call</a></span>()</code>
<div class="block">Execute the Subprocedure <a href="../../../../../org/apache/hadoop/hbase/procedure/Subprocedure.html#acquireBarrier--"><code>acquireBarrier()</code></a> and <a href="../../../../../org/apache/hadoop/hbase/procedure/Subprocedure.html#insideBarrier--"><code>insideBarrier()</code></a> methods
while keeping some state for other threads to access.</div>
</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/procedure/Subprocedure.html#cancel-java.lang.String-java.lang.Throwable-">cancel</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;msg,
<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;cause)</code>
<div class="block">Method to cancel the Subprocedure by injecting an exception from and external source.</div>
</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code>abstract void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/procedure/Subprocedure.html#cleanup-java.lang.Exception-">cleanup</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a>&nbsp;e)</code>
<div class="block">Users should override this method.</div>
</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code>(package private) <a href="../../../../../org/apache/hadoop/hbase/errorhandling/ForeignExceptionSnare.html" title="interface in org.apache.hadoop.hbase.errorhandling">ForeignExceptionSnare</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/procedure/Subprocedure.html#getErrorCheckable--">getErrorCheckable</a></span>()</code>
<div class="block">exposed for testing.</div>
</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/Subprocedure.html#getMemberName--">getMemberName</a></span>()</code>&nbsp;</td>
</tr>
<tr id="i6" 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/Subprocedure.html#getName--">getName</a></span>()</code>&nbsp;</td>
</tr>
<tr id="i7" class="rowColor">
<td class="colFirst"><code>abstract byte[]</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/procedure/Subprocedure.html#insideBarrier--">insideBarrier</a></span>()</code>
<div class="block">The implementation of this method should act with the assumption that the barrier condition
has been satisfied.</div>
</td>
</tr>
<tr id="i8" class="altColor">
<td class="colFirst"><code>(package private) boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/procedure/Subprocedure.html#isComplete--">isComplete</a></span>()</code>&nbsp;</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/Subprocedure.html#receiveReachedGlobalBarrier--">receiveReachedGlobalBarrier</a></span>()</code>
<div class="block">Callback for the member rpcs to call when the global barrier has been reached.</div>
</td>
</tr>
<tr id="i10" class="altColor">
<td class="colFirst"><code>private void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/procedure/Subprocedure.html#rethrowException--">rethrowException</a></span>()</code>&nbsp;</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/Subprocedure.html#waitForLocallyCompleted--">waitForLocallyCompleted</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>(package private) void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/procedure/Subprocedure.html#waitForReachedGlobalBarrier--">waitForReachedGlobalBarrier</a></span>()</code>
<div class="block">Wait for the reached global barrier notification.</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/Subprocedure.html#line.55">LOG</a></pre>
</li>
</ul>
<a name="barrierName">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>barrierName</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/Subprocedure.html#line.58">barrierName</a></pre>
</li>
</ul>
<a name="inGlobalBarrier">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>inGlobalBarrier</h4>
<pre>private 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/Subprocedure.html#line.65">inGlobalBarrier</a></pre>
<div class="block">wait on before allowing the in barrier phase to proceed</div>
</li>
</ul>
<a name="releasedLocalBarrier">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>releasedLocalBarrier</h4>
<pre>private 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/Subprocedure.html#line.67">releasedLocalBarrier</a></pre>
<div class="block">counted down when the Subprocedure has completed</div>
</li>
</ul>
<a name="monitor">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>monitor</h4>
<pre>protected 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/Subprocedure.html#line.73">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/Subprocedure.html#line.75">wakeFrequency</a></pre>
<div class="block">frequency to check for errors (ms)</div>
</li>
</ul>
<a name="executionTimeoutTimer">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>executionTimeoutTimer</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/Subprocedure.html#line.76">executionTimeoutTimer</a></pre>
</li>
</ul>
<a name="rpcs">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>rpcs</h4>
<pre>protected final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/procedure/ProcedureMemberRpcs.html" title="interface in org.apache.hadoop.hbase.procedure">ProcedureMemberRpcs</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure/Subprocedure.html#line.77">rpcs</a></pre>
</li>
</ul>
<a name="complete">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>complete</h4>
<pre>private volatile&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure/Subprocedure.html#line.79">complete</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="Subprocedure-org.apache.hadoop.hbase.procedure.ProcedureMember-java.lang.String-org.apache.hadoop.hbase.errorhandling.ForeignExceptionDispatcher-long-long-">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>Subprocedure</h4>
<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure/Subprocedure.html#line.89">Subprocedure</a>(<a href="../../../../../org/apache/hadoop/hbase/procedure/ProcedureMember.html" title="class in org.apache.hadoop.hbase.procedure">ProcedureMember</a>&nbsp;member,
<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,
<a href="../../../../../org/apache/hadoop/hbase/errorhandling/ForeignExceptionDispatcher.html" title="class in org.apache.hadoop.hbase.errorhandling">ForeignExceptionDispatcher</a>&nbsp;monitor,
long&nbsp;wakeFrequency,
long&nbsp;timeout)</pre>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>member</code> - reference to the member managing this subprocedure</dd>
<dd><code>procName</code> - name of the procedure this subprocedure is associated with</dd>
<dd><code>monitor</code> - notified if there is an error in the subprocedure</dd>
<dd><code>wakeFrequency</code> - time in millis to wake to check if there is an error via the monitor (in
milliseconds).</dd>
<dd><code>timeout</code> - time in millis that will trigger a subprocedure abort if it has not completed</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/Subprocedure.html#line.134">getName</a>()</pre>
</li>
</ul>
<a name="getMemberName--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getMemberName</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/Subprocedure.html#line.138">getMemberName</a>()</pre>
</li>
</ul>
<a name="rethrowException--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>rethrowException</h4>
<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure/Subprocedure.html#line.142">rethrowException</a>()
throws <a href="../../../../../org/apache/hadoop/hbase/errorhandling/ForeignException.html" title="class in org.apache.hadoop.hbase.errorhandling">ForeignException</a></pre>
<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="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/Subprocedure.html#line.158">call</a>()</pre>
<div class="block">Execute the Subprocedure <a href="../../../../../org/apache/hadoop/hbase/procedure/Subprocedure.html#acquireBarrier--"><code>acquireBarrier()</code></a> and <a href="../../../../../org/apache/hadoop/hbase/procedure/Subprocedure.html#insideBarrier--"><code>insideBarrier()</code></a> methods
while keeping some state for other threads to access.
This would normally be executed by the ProcedureMember when a acquire message comes from the
coordinator. Rpcs are used to spend message back to the coordinator after different phases
are executed. Any exceptions caught during the execution (except for InterruptedException) get
converted and propagated to coordinator via <a href="../../../../../org/apache/hadoop/hbase/procedure/ProcedureMemberRpcs.html#sendMemberAborted-org.apache.hadoop.hbase.procedure.Subprocedure-org.apache.hadoop.hbase.errorhandling.ForeignException-"><code>ProcedureMemberRpcs.sendMemberAborted(
Subprocedure, ForeignException)</code></a>.</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="isComplete--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isComplete</h4>
<pre>boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure/Subprocedure.html#line.225">isComplete</a>()</pre>
</li>
</ul>
<a name="getErrorCheckable--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getErrorCheckable</h4>
<pre><a href="../../../../../org/apache/hadoop/hbase/errorhandling/ForeignExceptionSnare.html" title="interface in org.apache.hadoop.hbase.errorhandling">ForeignExceptionSnare</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure/Subprocedure.html#line.232">getErrorCheckable</a>()</pre>
<div class="block">exposed for testing.</div>
</li>
</ul>
<a name="acquireBarrier--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>acquireBarrier</h4>
<pre>public abstract&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure/Subprocedure.html#line.247">acquireBarrier</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">The implementation of this method should gather and hold required resources (locks, disk
space, etc) to satisfy the Procedures barrier condition. For example, this would be where
to make all the regions on a RS on the quiescent for an procedure that required all regions
to be globally quiesed.
Users should override this method. If a quiescent is not required, this is overkill but
can still be used to execute a procedure on all members and to propagate any exceptions.</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="insideBarrier--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>insideBarrier</h4>
<pre>public abstract&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure/Subprocedure.html#line.260">insideBarrier</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">The implementation of this method should act with the assumption that the barrier condition
has been satisfied. Continuing the previous example, a condition could be that all RS's
globally have been quiesced, and procedures that require this precondition could be
implemented here.
The implementation should also collect the result of the subprocedure as data to be returned
to the coordinator upon successful completion.
Users should override this method.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the data the subprocedure wants to return to coordinator side.</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>
</dl>
</li>
</ul>
<a name="cleanup-java.lang.Exception-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>cleanup</h4>
<pre>public abstract&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure/Subprocedure.html#line.268">cleanup</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a>&nbsp;e)</pre>
<div class="block">Users should override this method. This implementation of this method should rollback and
cleanup any temporary or partially completed state that the <a href="../../../../../org/apache/hadoop/hbase/procedure/Subprocedure.html#acquireBarrier--"><code>acquireBarrier()</code></a> may have
created.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>e</code> - </dd>
</dl>
</li>
</ul>
<a name="cancel-java.lang.String-java.lang.Throwable-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>cancel</h4>
<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure/Subprocedure.html#line.274">cancel</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;msg,
<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;cause)</pre>
<div class="block">Method to cancel the Subprocedure by injecting an exception from and external source.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>cause</code> - </dd>
</dl>
</li>
</ul>
<a name="receiveReachedGlobalBarrier--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>receiveReachedGlobalBarrier</h4>
<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure/Subprocedure.html#line.289">receiveReachedGlobalBarrier</a>()</pre>
<div class="block">Callback for the member rpcs to call when the global barrier has been reached. This
unblocks the main subprocedure exectuion thread so that the Subprocedure's
<a href="../../../../../org/apache/hadoop/hbase/procedure/Subprocedure.html#insideBarrier--"><code>insideBarrier()</code></a> method can be run.</div>
</li>
</ul>
<a name="waitForReachedGlobalBarrier--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>waitForReachedGlobalBarrier</h4>
<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure/Subprocedure.html#line.305">waitForReachedGlobalBarrier</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">Wait for the reached global barrier notification.
Package visibility for testing</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="waitForLocallyCompleted--">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>waitForLocallyCompleted</h4>
<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure/Subprocedure.html#line.315">waitForLocallyCompleted</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.</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>
</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/Subprocedure.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/RegionServerProcedureManagerHost.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/Subprocedure.SubprocedureImpl.html" title="class 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/Subprocedure.html" target="_top">Frames</a></li>
<li><a href="Subprocedure.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><a href="#nested.class.summary">Nested</a>&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>