blob: 834c124c50ad6b40df29871bed7b5cc71e50b77c [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>StateMachineProcedure (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="StateMachineProcedure (Apache HBase 3.0.0-alpha-2-SNAPSHOT API)";
}
}
catch(err) {
}
//-->
var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":6,"i5":10,"i6":10,"i7":10,"i8":10,"i9":6,"i10":6,"i11":6,"i12":10,"i13":10,"i14":10,"i15":10,"i16":10,"i17":10,"i18":6,"i19":10,"i20":10,"i21":10,"i22":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/StateMachineProcedure.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/procedure2/SimpleProcedureScheduler.html" title="class in org.apache.hadoop.hbase.procedure2"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.Flow.html" title="enum in org.apache.hadoop.hbase.procedure2"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../index.html?org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html" target="_top">Frames</a></li>
<li><a href="StateMachineProcedure.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.procedure2</div>
<h2 title="Class StateMachineProcedure" class="title">Class StateMachineProcedure&lt;TEnvironment,TState&gt;</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><a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">org.apache.hadoop.hbase.procedure2.Procedure</a>&lt;TEnvironment&gt;</li>
<li>
<ul class="inheritance">
<li>org.apache.hadoop.hbase.procedure2.StateMachineProcedure&lt;TEnvironment,TState&gt;</li>
</ul>
</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/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>&lt;TEnvironment&gt;&gt;</dd>
</dl>
<dl>
<dt>Direct Known Subclasses:</dt>
<dd><a href="../../../../../org/apache/hadoop/hbase/master/replication/AbstractPeerNoLockProcedure.html" title="class in org.apache.hadoop.hbase.master.replication">AbstractPeerNoLockProcedure</a>, <a href="../../../../../org/apache/hadoop/hbase/master/procedure/AbstractStateMachineNamespaceProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">AbstractStateMachineNamespaceProcedure</a>, <a href="../../../../../org/apache/hadoop/hbase/master/procedure/AbstractStateMachineTableProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">AbstractStateMachineTableProcedure</a>, <a href="../../../../../org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">RecoverMetaProcedure</a>, <a href="../../../../../org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">ServerCrashProcedure</a>, <a href="../../../../../org/apache/hadoop/hbase/master/procedure/SplitWALProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">SplitWALProcedure</a>, <a href="../../../../../org/apache/hadoop/hbase/master/procedure/SwitchRpcThrottleProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">SwitchRpcThrottleProcedure</a></dd>
</dl>
<hr>
<br>
<pre>@InterfaceAudience.Private
@InterfaceStability.Evolving
public abstract class <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#line.45">StateMachineProcedure</a>&lt;TEnvironment,TState&gt;
extends <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>&lt;TEnvironment&gt;</pre>
<div class="block">Procedure described by a series of steps.
<p>The procedure implementor must have an enum of 'states', describing
the various step of the procedure.
Once the procedure is running, the procedure-framework will call executeFromState()
using the 'state' provided by the user. The first call to executeFromState()
will be performed with 'state = null'. The implementor can jump between
states using setNextState(MyStateEnum.ordinal()).
The rollback will call rollbackState() for each state that was executed, in reverse order.</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/procedure2/StateMachineProcedure.Flow.html" title="enum in org.apache.hadoop.hbase.procedure2">StateMachineProcedure.Flow</a></span></code>&nbsp;</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a name="nested.classes.inherited.from.class.org.apache.hadoop.hbase.procedure2.Procedure">
<!-- -->
</a>
<h3>Nested classes/interfaces inherited from class&nbsp;org.apache.hadoop.hbase.procedure2.<a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a></h3>
<code><a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.LockState.html" title="enum in org.apache.hadoop.hbase.procedure2">Procedure.LockState</a></code></li>
</ul>
</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/util/concurrent/atomic/AtomicBoolean.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicBoolean</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#aborted">aborted</a></span></code>&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>private int</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#cycles">cycles</a></span></code>
<div class="block">Cycles on same state.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>private static int</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#EOF_STATE">EOF_STATE</a></span></code>&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>private static org.slf4j.Logger</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#LOG">LOG</a></span></code>&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>private int</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#previousState">previousState</a></span></code>
<div class="block">Ordinal of the previous state.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>protected int</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#stateCount">stateCount</a></span></code>&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>private <a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.Flow.html" title="enum in org.apache.hadoop.hbase.procedure2">StateMachineProcedure.Flow</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#stateFlow">stateFlow</a></span></code>&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>private int[]</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#states">states</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="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html" title="type parameter in StateMachineProcedure">TEnvironment</a>&gt;&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#subProcList">subProcList</a></span></code>&nbsp;</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a name="fields.inherited.from.class.org.apache.hadoop.hbase.procedure2.Procedure">
<!-- -->
</a>
<h3>Fields inherited from class&nbsp;org.apache.hadoop.hbase.procedure2.<a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a></h3>
<code><a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#NO_PROC_ID">NO_PROC_ID</a>, <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#NO_TIMEOUT">NO_TIMEOUT</a></code></li>
</ul>
</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/procedure2/StateMachineProcedure.html#StateMachineProcedure--">StateMachineProcedure</a></span>()</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>protected boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#abort-TEnvironment-">abort</a></span>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html" title="type parameter in StateMachineProcedure">TEnvironment</a>&nbsp;env)</code>
<div class="block">The abort() call is asynchronous and each procedure must decide how to deal
with it, if they want to be abortable.</div>
</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code>protected &lt;T extends <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html" title="type parameter in StateMachineProcedure">TEnvironment</a>&gt;&gt;<br>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#addChildProcedure-T...-">addChildProcedure</a></span>(T...&nbsp;subProcedure)</code>
<div class="block">Add a child procedure to execute</div>
</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code>protected void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#deserializeStateData-org.apache.hadoop.hbase.procedure2.ProcedureStateSerializer-">deserializeStateData</a></span>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/ProcedureStateSerializer.html" title="interface in org.apache.hadoop.hbase.procedure2">ProcedureStateSerializer</a>&nbsp;serializer)</code>
<div class="block">Called on store load to allow the user to decode the previously serialized
state.</div>
</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code>protected <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>[]</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#execute-TEnvironment-">execute</a></span>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html" title="type parameter in StateMachineProcedure">TEnvironment</a>&nbsp;env)</code>
<div class="block">The main code of the procedure.</div>
</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code>protected abstract <a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.Flow.html" title="enum in org.apache.hadoop.hbase.procedure2">StateMachineProcedure.Flow</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#executeFromState-TEnvironment-TState-">executeFromState</a></span>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html" title="type parameter in StateMachineProcedure">TEnvironment</a>&nbsp;env,
<a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html" title="type parameter in StateMachineProcedure">TState</a>&nbsp;state)</code>
<div class="block">called to perform a single step of the specified 'state' of the procedure</div>
</td>
</tr>
<tr id="i5" class="rowColor">
<td class="colFirst"><code>protected void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#failIfAborted--">failIfAborted</a></span>()</code>
<div class="block">If procedure has more states then abort it otherwise procedure is finished and abort can be
ignored.</div>
</td>
</tr>
<tr id="i6" class="altColor">
<td class="colFirst"><code>protected <a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html" title="type parameter in StateMachineProcedure">TState</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#getCurrentState--">getCurrentState</a></span>()</code>&nbsp;</td>
</tr>
<tr id="i7" class="rowColor">
<td class="colFirst"><code>int</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#getCurrentStateId--">getCurrentStateId</a></span>()</code>
<div class="block">This method is used from test code as it cannot be assumed that state transition will happen
sequentially.</div>
</td>
</tr>
<tr id="i8" class="altColor">
<td class="colFirst"><code>protected int</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#getCycles--">getCycles</a></span>()</code>&nbsp;</td>
</tr>
<tr id="i9" class="rowColor">
<td class="colFirst"><code>protected abstract <a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html" title="type parameter in StateMachineProcedure">TState</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#getInitialState--">getInitialState</a></span>()</code>
<div class="block">Return the initial state object that will be used for the first call to executeFromState().</div>
</td>
</tr>
<tr id="i10" class="altColor">
<td class="colFirst"><code>protected abstract <a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html" title="type parameter in StateMachineProcedure">TState</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#getState-int-">getState</a></span>(int&nbsp;stateId)</code>
<div class="block">Convert an ordinal (or state id) to an Enum (or more descriptive) state object.</div>
</td>
</tr>
<tr id="i11" class="rowColor">
<td class="colFirst"><code>protected abstract int</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#getStateId-TState-">getStateId</a></span>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html" title="type parameter in StateMachineProcedure">TState</a>&nbsp;state)</code>
<div class="block">Convert the Enum (or more descriptive) state object to an ordinal (or state id).</div>
</td>
</tr>
<tr id="i12" class="altColor">
<td class="colFirst"><code>private boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#hasMoreState--">hasMoreState</a></span>()</code>&nbsp;</td>
</tr>
<tr id="i13" class="rowColor">
<td class="colFirst"><code>protected boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#isEofState--">isEofState</a></span>()</code>&nbsp;</td>
</tr>
<tr id="i14" class="altColor">
<td class="colFirst"><code>protected boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#isRollbackSupported-TState-">isRollbackSupported</a></span>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html" title="type parameter in StateMachineProcedure">TState</a>&nbsp;state)</code>
<div class="block">Used by the default implementation of abort() to know if the current state can be aborted
and rollback can be triggered.</div>
</td>
</tr>
<tr id="i15" class="rowColor">
<td class="colFirst"><code>protected boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#isYieldAfterExecutionStep-TEnvironment-">isYieldAfterExecutionStep</a></span>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html" title="type parameter in StateMachineProcedure">TEnvironment</a>&nbsp;env)</code>
<div class="block">By default, the procedure framework/executor will try to run procedures start to finish.</div>
</td>
</tr>
<tr id="i16" class="altColor">
<td class="colFirst"><code>protected boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#isYieldBeforeExecuteFromState-TEnvironment-TState-">isYieldBeforeExecuteFromState</a></span>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html" title="type parameter in StateMachineProcedure">TEnvironment</a>&nbsp;env,
<a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html" title="type parameter in StateMachineProcedure">TState</a>&nbsp;state)</code>
<div class="block">By default, the executor will try ro run all the steps of the procedure start to finish.</div>
</td>
</tr>
<tr id="i17" class="rowColor">
<td class="colFirst"><code>protected void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#rollback-TEnvironment-">rollback</a></span>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html" title="type parameter in StateMachineProcedure">TEnvironment</a>&nbsp;env)</code>
<div class="block">The code to undo what was done by the execute() code.</div>
</td>
</tr>
<tr id="i18" class="altColor">
<td class="colFirst"><code>protected abstract void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#rollbackState-TEnvironment-TState-">rollbackState</a></span>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html" title="type parameter in StateMachineProcedure">TEnvironment</a>&nbsp;env,
<a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html" title="type parameter in StateMachineProcedure">TState</a>&nbsp;state)</code>
<div class="block">called to perform the rollback of the specified state</div>
</td>
</tr>
<tr id="i19" class="rowColor">
<td class="colFirst"><code>protected void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#serializeStateData-org.apache.hadoop.hbase.procedure2.ProcedureStateSerializer-">serializeStateData</a></span>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/ProcedureStateSerializer.html" title="interface in org.apache.hadoop.hbase.procedure2">ProcedureStateSerializer</a>&nbsp;serializer)</code>
<div class="block">The user-level code of the procedure may have some state to
persist (e.g.</div>
</td>
</tr>
<tr id="i20" class="altColor">
<td class="colFirst"><code>private void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#setNextState-int-">setNextState</a></span>(int&nbsp;stateId)</code>
<div class="block">Set the next state for the procedure.</div>
</td>
</tr>
<tr id="i21" class="rowColor">
<td class="colFirst"><code>protected void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#setNextState-TState-">setNextState</a></span>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html" title="type parameter in StateMachineProcedure">TState</a>&nbsp;state)</code>
<div class="block">Set the next state for the procedure.</div>
</td>
</tr>
<tr id="i22" class="altColor">
<td class="colFirst"><code>protected void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#toStringState-java.lang.StringBuilder-">toStringState</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/StringBuilder.html?is-external=true" title="class or interface in java.lang">StringBuilder</a>&nbsp;builder)</code>
<div class="block">Called from <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#toString--"><code>Procedure.toString()</code></a> when interpolating <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2"><code>Procedure</code></a> State.</div>
</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.procedure2.Procedure">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.procedure2.<a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a></h3>
<code><a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#acquireLock-TEnvironment-">acquireLock</a>, <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#addStackIndex-int-">addStackIndex</a>, <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#afterReplay-TEnvironment-">afterReplay</a>, <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#beforeReplay-TEnvironment-">beforeReplay</a>, <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#bypass-TEnvironment-">bypass</a>, <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#compareTo-org.apache.hadoop.hbase.procedure2.Procedure-">compareTo</a>, <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#completionCleanup-TEnvironment-">completionCleanup</a>, <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#doAcquireLock-TEnvironment-org.apache.hadoop.hbase.procedure2.store.ProcedureStore-">doAcquireLock</a>, <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#doExecute-TEnvironment-">doExecute</a>, <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#doReleaseLock-TEnvironment-org.apache.hadoop.hbase.procedure2.store.ProcedureStore-">doReleaseLock</a>, <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#doRollback-TEnvironment-">doRollback</a>, <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#elapsedTime--">elapsedTime</a>, <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#getChildrenLatch--">getChildrenLatch</a>, <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#getException--">getException</a>, <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#getLastUpdate--">getLastUpdate</a>, <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#getNonceKey--">getNonceKey</a>, <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#getOwner--">getOwner</a>, <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#getParentProcId--">getParentProcId</a>, <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#getProcedureMetrics-TEnvironment-">getProcedureMetrics</a>, <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#getProcId--">getProcId</a>, <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#getProcIdHashCode-long-">getProcIdHashCode</a>, <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#getProcName--">getProcName</a>, <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#getResult--">getResult</a>, <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#getRootProcedureId-java.util.Map-org.apache.hadoop.hbase.procedure2.Procedure-">getRootProcedureId</a>, <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#getRootProcId--">getRootProcId</a>, <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#getStackIndexes--">getStackIndexes</a>, <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#getState--">getState</a>, <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#getSubmittedTime--">getSubmittedTime</a>, <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#getTimeout--">getTimeout</a>, <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#getTimeoutTimestamp--">getTimeoutTimestamp</a>, <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#hasChildren--">hasChildren</a>, <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#hasException--">hasException</a>, <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#hasLock--">hasLock</a>, <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#hasOwner--">hasOwner</a>, <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#hasParent--">hasParent</a>, <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#hasTimeout--">hasTimeout</a>, <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#haveSameParent-org.apache.hadoop.hbase.procedure2.Procedure-org.apache.hadoop.hbase.procedure2.Procedure-">haveSameParent</a>, <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#holdLock-TEnvironment-">holdLock</a>, <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#incChildrenLatch--">incChildrenLatch</a>, <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#isBypass--">isBypass</a>, <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#isFailed--">isFailed</a>, <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#isFinished--">isFinished</a>, <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#isInitializing--">isInitializing</a>, <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#isLockedWhenLoading--">isLockedWhenLoading</a>, <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#isRunnable--">isRunnable</a>, <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#isSuccess--">isSuccess</a>, <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#isWaiting--">isWaiting</a>, <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#lockedWhenLoading--">lockedWhenLoading</a>, <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#needPersistence--">needPersistence</a>, <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#releaseLock-TEnvironment-">releaseLock</a>, <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#removeStackIndex--">removeStackIndex</a>, <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#resetPersistence--">resetPersistence</a>, <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#restoreLock-TEnvironment-">restoreLock</a>, <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#setAbortFailure-java.lang.String-java.lang.String-">setAbortFailure</a>, <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#setChildrenLatch-int-">setChildrenLatch</a>, <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#setFailure-org.apache.hadoop.hbase.procedure2.RemoteProcedureException-">setFailure</a>, <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#setFailure-java.lang.String-java.lang.Throwable-">setFailure</a>, <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#setLastUpdate-long-">setLastUpdate</a>, <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#setNonceKey-org.apache.hadoop.hbase.util.NonceKey-">setNonceKey</a>, <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#setOwner-java.lang.String-">setOwner</a>, <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#setOwner-org.apache.hadoop.hbase.security.User-">setOwner</a>, <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#setParentProcId-long-">setParentProcId</a>, <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#setProcId-long-">setProcId</a>, <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#setResult-byte:A-">setResult</a>, <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#setRootProcId-long-">setRootProcId</a>, <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#setStackIndexes-java.util.List-">setStackIndexes</a>, <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#setState-org.apache.hadoop.hbase.shaded.protobuf.generated.ProcedureProtos.ProcedureState-">setState</a>, <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#setSubmittedTime-long-">setSubmittedTime</a>, <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#setTimeout-int-">setTimeout</a>, <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#setTimeoutFailure-TEnvironment-">setTimeoutFailure</a>, <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#shouldWaitClientAck-TEnvironment-">shouldWaitClientAck</a>, <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#skipPersistence--">skipPersistence</a>, <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#toString--">toString</a>, <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#toStringClass--">toStringClass</a>, <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#toStringClassDetails-java.lang.StringBuilder-">toStringClassDetails</a>, <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#toStringDetails--">toStringDetails</a>, <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#toStringSimpleSB--">toStringSimpleSB</a>, <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#tryRunnable--">tryRunnable</a>, <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#updateMetricsOnFinish-TEnvironment-long-boolean-">updateMetricsOnFinish</a>, <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#updateMetricsOnSubmit-TEnvironment-">updateMetricsOnSubmit</a>, <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#updateTimestamp--">updateTimestamp</a>, <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#waitInitialized-TEnvironment-">waitInitialized</a>, <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#wasExecuted--">wasExecuted</a></code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;java.lang.<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#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/procedure2/StateMachineProcedure.html#line.47">LOG</a></pre>
</li>
</ul>
<a name="EOF_STATE">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>EOF_STATE</h4>
<pre>private static final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#line.49">EOF_STATE</a></pre>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.procedure2.StateMachineProcedure.EOF_STATE">Constant Field Values</a></dd>
</dl>
</li>
</ul>
<a name="aborted">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>aborted</h4>
<pre>private final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/atomic/AtomicBoolean.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicBoolean</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#line.51">aborted</a></pre>
</li>
</ul>
<a name="stateFlow">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>stateFlow</h4>
<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.Flow.html" title="enum in org.apache.hadoop.hbase.procedure2">StateMachineProcedure.Flow</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#line.53">stateFlow</a></pre>
</li>
</ul>
<a name="stateCount">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>stateCount</h4>
<pre>protected&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#line.54">stateCount</a></pre>
</li>
</ul>
<a name="states">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>states</h4>
<pre>private&nbsp;int[] <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#line.55">states</a></pre>
</li>
</ul>
<a name="subProcList">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>subProcList</h4>
<pre>private&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="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html" title="type parameter in StateMachineProcedure">TEnvironment</a>&gt;&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#line.57">subProcList</a></pre>
</li>
</ul>
<a name="cycles">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>cycles</h4>
<pre>private&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#line.66">cycles</a></pre>
<div class="block">Cycles on same state. Good for figuring if we are stuck.</div>
</li>
</ul>
<a name="previousState">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>previousState</h4>
<pre>private&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#line.71">previousState</a></pre>
<div class="block">Ordinal of the previous state. So we can tell if we are progressing or not.</div>
</li>
</ul>
</li>
</ul>
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor.detail">
<!-- -->
</a>
<h3>Constructor Detail</h3>
<a name="StateMachineProcedure--">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>StateMachineProcedure</h4>
<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#line.45">StateMachineProcedure</a>()</pre>
</li>
</ul>
</li>
</ul>
<!-- ============ METHOD DETAIL ========== -->
<ul class="blockList">
<li class="blockList"><a name="method.detail">
<!-- -->
</a>
<h3>Method Detail</h3>
<a name="getCycles--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getCycles</h4>
<pre>protected final&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#line.59">getCycles</a>()</pre>
</li>
</ul>
<a name="executeFromState-java.lang.Object-java.lang.Object-">
<!-- -->
</a><a name="executeFromState-TEnvironment-TState-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>executeFromState</h4>
<pre>protected abstract&nbsp;<a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.Flow.html" title="enum in org.apache.hadoop.hbase.procedure2">StateMachineProcedure.Flow</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#line.84">executeFromState</a>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html" title="type parameter in StateMachineProcedure">TEnvironment</a>&nbsp;env,
<a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html" title="type parameter in StateMachineProcedure">TState</a>&nbsp;state)
throws <a href="../../../../../org/apache/hadoop/hbase/procedure2/ProcedureSuspendedException.html" title="class in org.apache.hadoop.hbase.procedure2">ProcedureSuspendedException</a>,
<a href="../../../../../org/apache/hadoop/hbase/procedure2/ProcedureYieldException.html" title="class in org.apache.hadoop.hbase.procedure2">ProcedureYieldException</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">called to perform a single step of the specified 'state' of the procedure</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>state</code> - state to execute</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Flow.NO_MORE_STATE if the procedure is completed,
Flow.HAS_MORE_STATE if there is another step.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../../../../org/apache/hadoop/hbase/procedure2/ProcedureSuspendedException.html" title="class in org.apache.hadoop.hbase.procedure2">ProcedureSuspendedException</a></code></dd>
<dd><code><a href="../../../../../org/apache/hadoop/hbase/procedure2/ProcedureYieldException.html" title="class in org.apache.hadoop.hbase.procedure2">ProcedureYieldException</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="rollbackState-java.lang.Object-java.lang.Object-">
<!-- -->
</a><a name="rollbackState-TEnvironment-TState-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>rollbackState</h4>
<pre>protected abstract&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#line.92">rollbackState</a>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html" title="type parameter in StateMachineProcedure">TEnvironment</a>&nbsp;env,
<a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html" title="type parameter in StateMachineProcedure">TState</a>&nbsp;state)
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</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">called to perform the rollback of the specified state</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>state</code> - state to rollback</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code> - temporary failure, the rollback will retry later</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="getState-int-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getState</h4>
<pre>protected abstract&nbsp;<a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html" title="type parameter in StateMachineProcedure">TState</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#line.100">getState</a>(int&nbsp;stateId)</pre>
<div class="block">Convert an ordinal (or state id) to an Enum (or more descriptive) state object.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>stateId</code> - the ordinal() of the state enum (or state id)</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the state enum object</dd>
</dl>
</li>
</ul>
<a name="getStateId-java.lang.Object-">
<!-- -->
</a><a name="getStateId-TState-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getStateId</h4>
<pre>protected abstract&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#line.107">getStateId</a>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html" title="type parameter in StateMachineProcedure">TState</a>&nbsp;state)</pre>
<div class="block">Convert the Enum (or more descriptive) state object to an ordinal (or state id).</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>state</code> - the state enum object</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>stateId the ordinal() of the state enum (or state id)</dd>
</dl>
</li>
</ul>
<a name="getInitialState--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getInitialState</h4>
<pre>protected abstract&nbsp;<a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html" title="type parameter in StateMachineProcedure">TState</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#line.113">getInitialState</a>()</pre>
<div class="block">Return the initial state object that will be used for the first call to executeFromState().</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the initial state enum object</dd>
</dl>
</li>
</ul>
<a name="setNextState-java.lang.Object-">
<!-- -->
</a><a name="setNextState-TState-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setNextState</h4>
<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#line.119">setNextState</a>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html" title="type parameter in StateMachineProcedure">TState</a>&nbsp;state)</pre>
<div class="block">Set the next state for the procedure.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>state</code> - the state enum object</dd>
</dl>
</li>
</ul>
<a name="isYieldBeforeExecuteFromState-java.lang.Object-java.lang.Object-">
<!-- -->
</a><a name="isYieldBeforeExecuteFromState-TEnvironment-TState-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isYieldBeforeExecuteFromState</h4>
<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#line.132">isYieldBeforeExecuteFromState</a>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html" title="type parameter in StateMachineProcedure">TEnvironment</a>&nbsp;env,
<a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html" title="type parameter in StateMachineProcedure">TState</a>&nbsp;state)</pre>
<div class="block">By default, the executor will try ro run all the steps of the procedure start to finish.
Return true to make the executor yield between execution steps to
give other procedures time to run their steps.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>state</code> - the state we are going to execute next.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Return true if the executor should yield before the execution of the specified step.
Defaults to return false.</dd>
</dl>
</li>
</ul>
<a name="addChildProcedure-org.apache.hadoop.hbase.procedure2.Procedure:A-">
<!-- -->
</a><a name="addChildProcedure-T...-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>addChildProcedure</h4>
<pre>protected&nbsp;&lt;T extends <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html" title="type parameter in StateMachineProcedure">TEnvironment</a>&gt;&gt;&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#line.140">addChildProcedure</a>(T...&nbsp;subProcedure)</pre>
<div class="block">Add a child procedure to execute</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>subProcedure</code> - the child procedure</dd>
</dl>
</li>
</ul>
<a name="execute-java.lang.Object-">
<!-- -->
</a><a name="execute-TEnvironment-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>execute</h4>
<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#line.163">execute</a>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html" title="type parameter in StateMachineProcedure">TEnvironment</a>&nbsp;env)
throws <a href="../../../../../org/apache/hadoop/hbase/procedure2/ProcedureSuspendedException.html" title="class in org.apache.hadoop.hbase.procedure2">ProcedureSuspendedException</a>,
<a href="../../../../../org/apache/hadoop/hbase/procedure2/ProcedureYieldException.html" title="class in org.apache.hadoop.hbase.procedure2">ProcedureYieldException</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"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#execute-TEnvironment-">Procedure</a></code></span></div>
<div class="block">The main code of the procedure. It must be idempotent since execute()
may be called multiple times in case of machine failure in the middle
of the execution.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#execute-TEnvironment-">execute</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html" title="type parameter in StateMachineProcedure">TEnvironment</a>&gt;</code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>env</code> - the environment passed to the ProcedureExecutor</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>a set of sub-procedures to run or ourselves if there is more work to do or null if the
procedure is done.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../../../../org/apache/hadoop/hbase/procedure2/ProcedureSuspendedException.html" title="class in org.apache.hadoop.hbase.procedure2">ProcedureSuspendedException</a></code> - Signal to the executor that Procedure has suspended itself
and has set itself up waiting for an external event to wake it back up again.</dd>
<dd><code><a href="../../../../../org/apache/hadoop/hbase/procedure2/ProcedureYieldException.html" title="class in org.apache.hadoop.hbase.procedure2">ProcedureYieldException</a></code> - the procedure will be added back to the queue and retried
later.</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> - the procedure will be added back to the queue and retried later.</dd>
</dl>
</li>
</ul>
<a name="rollback-java.lang.Object-">
<!-- -->
</a><a name="rollback-TEnvironment-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>rollback</h4>
<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#line.207">rollback</a>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html" title="type parameter in StateMachineProcedure">TEnvironment</a>&nbsp;env)
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</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"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#rollback-TEnvironment-">Procedure</a></code></span></div>
<div class="block">The code to undo what was done by the execute() code.
It is called when the procedure or one of the sub-procedures failed or an
abort was requested. It should cleanup all the resources created by
the execute() call. The implementation must be idempotent since rollback()
may be called multiple time in case of machine failure in the middle
of the execution.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#rollback-TEnvironment-">rollback</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html" title="type parameter in StateMachineProcedure">TEnvironment</a>&gt;</code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>env</code> - the environment passed to the ProcedureExecutor</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code> - temporary failure, the rollback will retry later</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> - the procedure will be added back to the queue and retried later</dd>
</dl>
</li>
</ul>
<a name="isEofState--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isEofState</h4>
<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#line.222">isEofState</a>()</pre>
</li>
</ul>
<a name="abort-java.lang.Object-">
<!-- -->
</a><a name="abort-TEnvironment-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>abort</h4>
<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#line.227">abort</a>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html" title="type parameter in StateMachineProcedure">TEnvironment</a>&nbsp;env)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#abort-TEnvironment-">Procedure</a></code></span></div>
<div class="block">The abort() call is asynchronous and each procedure must decide how to deal
with it, if they want to be abortable. The simplest implementation
is to have an AtomicBoolean set in the abort() method and then the execute()
will check if the abort flag is set or not.
abort() may be called multiple times from the client, so the implementation
must be idempotent.
<p>NOTE: abort() is not like Thread.interrupt(). It is just a notification
that allows the procedure implementor abort.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#abort-TEnvironment-">abort</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html" title="type parameter in StateMachineProcedure">TEnvironment</a>&gt;</code></dd>
</dl>
</li>
</ul>
<a name="failIfAborted--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>failIfAborted</h4>
<pre>protected final&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#line.245">failIfAborted</a>()</pre>
<div class="block">If procedure has more states then abort it otherwise procedure is finished and abort can be
ignored.</div>
</li>
</ul>
<a name="isRollbackSupported-java.lang.Object-">
<!-- -->
</a><a name="isRollbackSupported-TState-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isRollbackSupported</h4>
<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#line.259">isRollbackSupported</a>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html" title="type parameter in StateMachineProcedure">TState</a>&nbsp;state)</pre>
<div class="block">Used by the default implementation of abort() to know if the current state can be aborted
and rollback can be triggered.</div>
</li>
</ul>
<a name="isYieldAfterExecutionStep-java.lang.Object-">
<!-- -->
</a><a name="isYieldAfterExecutionStep-TEnvironment-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isYieldAfterExecutionStep</h4>
<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#line.264">isYieldAfterExecutionStep</a>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html" title="type parameter in StateMachineProcedure">TEnvironment</a>&nbsp;env)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#isYieldAfterExecutionStep-TEnvironment-">Procedure</a></code></span></div>
<div class="block">By default, the procedure framework/executor will try to run procedures start to finish.
Return true to make the executor yield between each execution step to
give other procedures a chance to run.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#isYieldAfterExecutionStep-TEnvironment-">isYieldAfterExecutionStep</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html" title="type parameter in StateMachineProcedure">TEnvironment</a>&gt;</code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>env</code> - the environment passed to the ProcedureExecutor</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Return true if the executor should yield on completion of an execution step.
Defaults to return false.</dd>
</dl>
</li>
</ul>
<a name="hasMoreState--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>hasMoreState</h4>
<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#line.268">hasMoreState</a>()</pre>
</li>
</ul>
<a name="getCurrentState--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getCurrentState</h4>
<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html" title="type parameter in StateMachineProcedure">TState</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#line.272">getCurrentState</a>()</pre>
</li>
</ul>
<a name="getCurrentStateId--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getCurrentStateId</h4>
<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#line.281">getCurrentStateId</a>()</pre>
<div class="block">This method is used from test code as it cannot be assumed that state transition will happen
sequentially. Some procedures may skip steps/ states, some may add intermediate steps in
future.</div>
</li>
</ul>
<a name="setNextState-int-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setNextState</h4>
<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#line.289">setNextState</a>(int&nbsp;stateId)</pre>
<div class="block">Set the next state for the procedure.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>stateId</code> - the ordinal() of the state enum (or state id)</dd>
</dl>
</li>
</ul>
<a name="toStringState-java.lang.StringBuilder-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>toStringState</h4>
<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#line.302">toStringState</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/StringBuilder.html?is-external=true" title="class or interface in java.lang">StringBuilder</a>&nbsp;builder)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#toStringState-java.lang.StringBuilder-">Procedure</a></code></span></div>
<div class="block">Called from <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#toString--"><code>Procedure.toString()</code></a> when interpolating <a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2"><code>Procedure</code></a> State. Allows decorating
generic Procedure State with Procedure particulars.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#toStringState-java.lang.StringBuilder-">toStringState</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html" title="type parameter in StateMachineProcedure">TEnvironment</a>&gt;</code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>builder</code> - Append current <code>ProcedureProtos.ProcedureState</code></dd>
</dl>
</li>
</ul>
<a name="serializeStateData-org.apache.hadoop.hbase.procedure2.ProcedureStateSerializer-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>serializeStateData</h4>
<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#line.310">serializeStateData</a>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/ProcedureStateSerializer.html" title="interface in org.apache.hadoop.hbase.procedure2">ProcedureStateSerializer</a>&nbsp;serializer)
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#serializeStateData-org.apache.hadoop.hbase.procedure2.ProcedureStateSerializer-">Procedure</a></code></span></div>
<div class="block">The user-level code of the procedure may have some state to
persist (e.g. input arguments or current position in the processing state) to
be able to resume on failure.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#serializeStateData-org.apache.hadoop.hbase.procedure2.ProcedureStateSerializer-">serializeStateData</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html" title="type parameter in StateMachineProcedure">TEnvironment</a>&gt;</code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>serializer</code> - stores the serializable state</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
</dl>
</li>
</ul>
<a name="deserializeStateData-org.apache.hadoop.hbase.procedure2.ProcedureStateSerializer-">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>deserializeStateData</h4>
<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#line.320">deserializeStateData</a>(<a href="../../../../../org/apache/hadoop/hbase/procedure2/ProcedureStateSerializer.html" title="interface in org.apache.hadoop.hbase.procedure2">ProcedureStateSerializer</a>&nbsp;serializer)
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#deserializeStateData-org.apache.hadoop.hbase.procedure2.ProcedureStateSerializer-">Procedure</a></code></span></div>
<div class="block">Called on store load to allow the user to decode the previously serialized
state.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#deserializeStateData-org.apache.hadoop.hbase.procedure2.ProcedureStateSerializer-">deserializeStateData</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html" title="type parameter in StateMachineProcedure">TEnvironment</a>&gt;</code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>serializer</code> - contains the serialized state</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</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/StateMachineProcedure.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/procedure2/SimpleProcedureScheduler.html" title="class in org.apache.hadoop.hbase.procedure2"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.Flow.html" title="enum in org.apache.hadoop.hbase.procedure2"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../index.html?org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html" target="_top">Frames</a></li>
<li><a href="StateMachineProcedure.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>