blob: 37fc94c95d7940bf354b253dc960aac1450c60b0 [file] [log] [blame]
<!DOCTYPE HTML>
<html lang="en">
<head>
<!-- Generated by javadoc (17) -->
<title>Procedure (Apache HBase 4.0.0-alpha-1-SNAPSHOT API)</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="description" content="declaration: package: org.apache.hadoop.hbase.procedure, class: Procedure">
<meta name="generator" content="javadoc/ClassWriterImpl">
<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
<script type="text/javascript" src="../../../../../script.js"></script>
<script type="text/javascript" src="../../../../../script-dir/jquery-3.6.1.min.js"></script>
<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
</head>
<body class="class-declaration-page">
<script type="text/javascript">var evenRowColor = "even-row-color";
var oddRowColor = "odd-row-color";
var tableTab = "table-tab";
var activeTableTab = "active-table-tab";
var pathtoroot = "../../../../../";
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<div class="flex-box">
<header role="banner" class="flex-header">
<nav role="navigation">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="top-nav" id="navbar-top">
<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
<li><a href="../../../../../index.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="nav-bar-cell1-rev">Class</li>
<li><a href="class-use/Procedure.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../help-doc.html#class">Help</a></li>
</ul>
</div>
<div class="sub-nav">
<div>
<ul class="sub-nav-list">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li><a href="#field-summary">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method-summary">Method</a></li>
</ul>
<ul class="sub-nav-list">
<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>
<div class="nav-list-search"><label for="search-input">SEARCH:</label>
<input type="text" id="search-input" value="search" disabled="disabled">
<input type="reset" id="reset-button" value="reset" disabled="disabled">
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="flex-content">
<main role="main">
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">org.apache.hadoop.hbase.procedure</a></div>
<h1 title="Class Procedure" class="title">Class Procedure</h1>
</div>
<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
<div class="inheritance">org.apache.hadoop.hbase.procedure.Procedure</div>
</div>
<section class="class-description" id="class-description">
<dl class="notes">
<dt>All Implemented Interfaces:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/concurrent/Callable.html" title="class or interface in java.util.concurrent" class="external-link">Callable</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Void.html" title="class or interface in java.lang" class="external-link">Void</a>&gt;</code>, <code><a href="../errorhandling/ForeignExceptionListener.html" title="interface in org.apache.hadoop.hbase.errorhandling">ForeignExceptionListener</a></code></dd>
</dl>
<hr>
<div class="type-signature"><span class="annotations">@Private
</span><span class="modifiers">public class </span><span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/procedure/Procedure.html#line-67">Procedure</a></span>
<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>
implements <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/concurrent/Callable.html" title="class or interface in java.util.concurrent" class="external-link">Callable</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Void.html" title="class or interface in java.lang" class="external-link">Void</a>&gt;, <a href="../errorhandling/ForeignExceptionListener.html" title="interface in org.apache.hadoop.hbase.errorhandling">ForeignExceptionListener</a></span></div>
<div class="block">A globally-barriered distributed procedure. This class encapsulates state and methods for
tracking and managing a distributed procedure, as well as aborting if any member encounters a
problem or if a cancellation is requested.
<p>
All procedures first attempt to reach a barrier point with the <a href="#sendGlobalBarrierStart()"><code>sendGlobalBarrierStart()</code></a>
method. The procedure contacts all members and waits for all subprocedures to execute
<a href="Subprocedure.html#acquireBarrier()"><code>Subprocedure.acquireBarrier()</code></a> to acquire its local piece of the global barrier and then
send acquisition info back to the coordinator. If all acquisitions at subprocedures succeed, the
coordinator then will call <a href="#sendGlobalBarrierReached()"><code>sendGlobalBarrierReached()</code></a>. This notifies members to execute
the <a href="Subprocedure.html#insideBarrier()"><code>Subprocedure.insideBarrier()</code></a> method. The procedure is blocked until all
<a href="Subprocedure.html#insideBarrier()"><code>Subprocedure.insideBarrier()</code></a> executions complete at the members. When
<a href="Subprocedure.html#insideBarrier()"><code>Subprocedure.insideBarrier()</code></a> completes at each member, the member sends notification to the
coordinator. Once all members complete, the coordinator calls
<a href="#sendGlobalBarrierComplete()"><code>sendGlobalBarrierComplete()</code></a>.
<p>
If errors are encountered remotely, they are forwarded to the coordinator, and
<a href="Subprocedure.html#cleanup(java.lang.Exception)"><code>Subprocedure.cleanup(Exception)</code></a> is called.
<p>
Each Procedure and each Subprocedure enforces a time limit on the execution time. If the time
limit expires before the procedure completes the <a href="../errorhandling/TimeoutExceptionInjector.html" title="class in org.apache.hadoop.hbase.errorhandling"><code>TimeoutExceptionInjector</code></a> will trigger an
<a href="../errorhandling/ForeignException.html" title="class in org.apache.hadoop.hbase.errorhandling"><code>ForeignException</code></a> to abort the procedure. This is particularly useful for situations when
running a distributed <a href="Subprocedure.html" title="class in org.apache.hadoop.hbase.procedure"><code>Subprocedure</code></a> so participants can avoid blocking for extreme amounts
of time if one of the participants fails or takes a really long time (e.g. GC pause).
<p>
Users should generally not directly create or subclass instances of this. They are created for
them implicitly via
<a href="ProcedureCoordinator.html#startProcedure(org.apache.hadoop.hbase.errorhandling.ForeignExceptionDispatcher,java.lang.String,byte%5B%5D,java.util.List)"><code>ProcedureCoordinator.startProcedure(ForeignExceptionDispatcher, String, byte[], List)</code></a>}</div>
</section>
<section class="summary">
<ul class="summary-list">
<!-- =========== FIELD SUMMARY =========== -->
<li>
<section class="field-summary" id="field-summary">
<h2>Field Summary</h2>
<div class="caption"><span>Fields</span></div>
<div class="summary-table three-column-summary">
<div class="table-header col-first">Modifier and Type</div>
<div class="table-header col-second">Field</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color"><code>(package private) final <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/concurrent/CountDownLatch.html" title="class or interface in java.util.concurrent" class="external-link">CountDownLatch</a></code></div>
<div class="col-second even-row-color"><code><a href="#acquiredBarrierLatch" class="member-name-link">acquiredBarrierLatch</a></code></div>
<div class="col-last even-row-color">
<div class="block">latch for waiting until all members have acquire in barrier state</div>
</div>
<div class="col-first odd-row-color"><code>private final <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;</code></div>
<div class="col-second odd-row-color"><code><a href="#acquiringMembers" class="member-name-link">acquiringMembers</a></code></div>
<div class="col-last odd-row-color">&nbsp;</div>
<div class="col-first even-row-color"><code>private final byte[]</code></div>
<div class="col-second even-row-color"><code><a href="#args" class="member-name-link">args</a></code></div>
<div class="col-last even-row-color">&nbsp;</div>
<div class="col-first odd-row-color"><code>(package private) final <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/concurrent/CountDownLatch.html" title="class or interface in java.util.concurrent" class="external-link">CountDownLatch</a></code></div>
<div class="col-second odd-row-color"><code><a href="#completedLatch" class="member-name-link">completedLatch</a></code></div>
<div class="col-last odd-row-color">
<div class="block">latch for waiting until a procedure has completed</div>
</div>
<div class="col-first even-row-color"><code>private <a href="ProcedureCoordinator.html" title="class in org.apache.hadoop.hbase.procedure">ProcedureCoordinator</a></code></div>
<div class="col-second even-row-color"><code><a href="#coord" class="member-name-link">coord</a></code></div>
<div class="col-last even-row-color">&nbsp;</div>
<div class="col-first odd-row-color"><code>private final <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/HashMap.html" title="class or interface in java.util" class="external-link">HashMap</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>,<wbr>byte[]&gt;</code></div>
<div class="col-second odd-row-color"><code><a href="#dataFromFinishedMembers" class="member-name-link">dataFromFinishedMembers</a></code></div>
<div class="col-last odd-row-color">&nbsp;</div>
<div class="col-first even-row-color"><code>private final <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;</code></div>
<div class="col-second even-row-color"><code><a href="#inBarrierMembers" class="member-name-link">inBarrierMembers</a></code></div>
<div class="col-last even-row-color">&nbsp;</div>
<div class="col-first odd-row-color"><code>private final <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></code></div>
<div class="col-second odd-row-color"><code><a href="#joinBarrierLock" class="member-name-link">joinBarrierLock</a></code></div>
<div class="col-last odd-row-color">
<div class="block">lock to prevent nodes from acquiring and then releasing before we can track them</div>
</div>
<div class="col-first even-row-color"><code>private static final org.slf4j.Logger</code></div>
<div class="col-second even-row-color"><code><a href="#LOG" class="member-name-link">LOG</a></code></div>
<div class="col-last even-row-color">&nbsp;</div>
<div class="col-first odd-row-color"><code>private final <a href="../errorhandling/ForeignExceptionDispatcher.html" title="class in org.apache.hadoop.hbase.errorhandling">ForeignExceptionDispatcher</a></code></div>
<div class="col-second odd-row-color"><code><a href="#monitor" class="member-name-link">monitor</a></code></div>
<div class="col-last odd-row-color">
<div class="block">monitor to check for errors</div>
</div>
<div class="col-first even-row-color"><code>private final <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
<div class="col-second even-row-color"><code><a href="#procName" class="member-name-link">procName</a></code></div>
<div class="col-last even-row-color">&nbsp;</div>
<div class="col-first odd-row-color"><code>(package private) final <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/concurrent/CountDownLatch.html" title="class or interface in java.util.concurrent" class="external-link">CountDownLatch</a></code></div>
<div class="col-second odd-row-color"><code><a href="#releasedBarrierLatch" class="member-name-link">releasedBarrierLatch</a></code></div>
<div class="col-last odd-row-color">
<div class="block">latch for waiting until all members have executed and released their in barrier state</div>
</div>
<div class="col-first even-row-color"><code>protected final <a href="../errorhandling/TimeoutExceptionInjector.html" title="class in org.apache.hadoop.hbase.errorhandling">TimeoutExceptionInjector</a></code></div>
<div class="col-second even-row-color"><code><a href="#timeoutInjector" class="member-name-link">timeoutInjector</a></code></div>
<div class="col-last even-row-color">&nbsp;</div>
<div class="col-first odd-row-color"><code>protected final long</code></div>
<div class="col-second odd-row-color"><code><a href="#wakeFrequency" class="member-name-link">wakeFrequency</a></code></div>
<div class="col-last odd-row-color">
<div class="block">frequency to check for errors (ms)</div>
</div>
</div>
</section>
</li>
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<li>
<section class="constructor-summary" id="constructor-summary">
<h2>Constructor Summary</h2>
<div class="caption"><span>Constructors</span></div>
<div class="summary-table two-column-summary">
<div class="table-header col-first">Constructor</div>
<div class="table-header col-last">Description</div>
<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(org.apache.hadoop.hbase.procedure.ProcedureCoordinator,long,long,java.lang.String,byte%5B%5D,java.util.List)" class="member-name-link">Procedure</a><wbr>(<a href="ProcedureCoordinator.html" title="class in org.apache.hadoop.hbase.procedure">ProcedureCoordinator</a>&nbsp;coord,
long&nbsp;wakeFreq,
long&nbsp;timeout,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;procName,
byte[]&nbsp;args,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;&nbsp;expectedMembers)</code></div>
<div class="col-last even-row-color">
<div class="block">Create a procedure.</div>
</div>
<div class="col-constructor-name odd-row-color"><code><a href="#%3Cinit%3E(org.apache.hadoop.hbase.procedure.ProcedureCoordinator,org.apache.hadoop.hbase.errorhandling.ForeignExceptionDispatcher,long,long,java.lang.String,byte%5B%5D,java.util.List)" class="member-name-link">Procedure</a><wbr>(<a href="ProcedureCoordinator.html" title="class in org.apache.hadoop.hbase.procedure">ProcedureCoordinator</a>&nbsp;coord,
<a href="../errorhandling/ForeignExceptionDispatcher.html" title="class in org.apache.hadoop.hbase.errorhandling">ForeignExceptionDispatcher</a>&nbsp;monitor,
long&nbsp;wakeFreq,
long&nbsp;timeout,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;procName,
byte[]&nbsp;args,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;&nbsp;expectedMembers)</code></div>
<div class="col-last odd-row-color">
<div class="block">Creates a procedure.</div>
</div>
</div>
</section>
</li>
<!-- ========== METHOD SUMMARY =========== -->
<li>
<section class="method-summary" id="method-summary">
<h2>Method Summary</h2>
<div id="method-summary-table">
<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab1" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab1', 3)" class="table-tab">Static Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
<div id="method-summary-table.tabpanel" role="tabpanel">
<div class="summary-table three-column-summary" aria-labelledby="method-summary-table-tab0">
<div class="table-header col-first">Modifier and Type</div>
<div class="table-header col-second">Method</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#barrierAcquiredByMember(java.lang.String)" class="member-name-link">barrierAcquiredByMember</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;member)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Call back triggered by an individual member upon successful local barrier acquisition</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#barrierReleasedByMember(java.lang.String,byte%5B%5D)" class="member-name-link">barrierReleasedByMember</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;member,
byte[]&nbsp;dataFromMember)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Call back triggered by a individual member upon successful local in-barrier execution and
release</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>final <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Void.html" title="class or interface in java.lang" class="external-link">Void</a></code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#call()" class="member-name-link">call</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">This call is the main execution thread of the barriered procedure.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="../errorhandling/ForeignExceptionDispatcher.html" title="class in org.apache.hadoop.hbase.errorhandling">ForeignExceptionDispatcher</a></code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getErrorMonitor()" class="member-name-link">getErrorMonitor</a>()</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Get the ForeignExceptionDispatcher</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getName()" class="member-name-link">getName</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getStatus()" class="member-name-link">getStatus</a>()</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Returns String of the procedure members both trying to enter the barrier and already in barrier</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>boolean</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#isCompleted()" class="member-name-link">isCompleted</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Check if the entire procedure has globally completed, or has been aborted.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#receive(org.apache.hadoop.hbase.errorhandling.ForeignException)" class="member-name-link">receive</a><wbr>(<a href="../errorhandling/ForeignException.html" title="class in org.apache.hadoop.hbase.errorhandling">ForeignException</a>&nbsp;e)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">A callback that handles incoming ForeignExceptions.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#sendGlobalBarrierComplete()" class="member-name-link">sendGlobalBarrierComplete</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Sends a message to members that all <a href="Subprocedure.html#insideBarrier()"><code>Subprocedure.insideBarrier()</code></a> calls have completed.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#sendGlobalBarrierReached()" class="member-name-link">sendGlobalBarrierReached</a>()</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Sends a message to all members that the global barrier condition has been satisfied.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#sendGlobalBarrierStart()" class="member-name-link">sendGlobalBarrierStart</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Sends a message to Members to create a new <a href="Subprocedure.html" title="class in org.apache.hadoop.hbase.procedure"><code>Subprocedure</code></a> for this Procedure and execute
the <a href="Subprocedure.html#acquireBarrier()"><code>Subprocedure.acquireBarrier()</code></a> step.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#waitForCompleted()" class="member-name-link">waitForCompleted</a>()</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Waits until the entire procedure has globally completed, or has been aborted.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/HashMap.html" title="class or interface in java.util" class="external-link">HashMap</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>,<wbr>byte[]&gt;</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#waitForCompletedWithRet()" class="member-name-link">waitForCompletedWithRet</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Waits until the entire procedure has globally completed, or has been aborted.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static void</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#waitForLatch(java.util.concurrent.CountDownLatch,org.apache.hadoop.hbase.errorhandling.ForeignExceptionSnare,long,java.lang.String)" class="member-name-link">waitForLatch</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/concurrent/CountDownLatch.html" title="class or interface in java.util.concurrent" class="external-link">CountDownLatch</a>&nbsp;latch,
<a href="../errorhandling/ForeignExceptionSnare.html" title="interface in org.apache.hadoop.hbase.errorhandling">ForeignExceptionSnare</a>&nbsp;monitor,
long&nbsp;wakeFrequency,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;latchDescription)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
<div class="block">Wait for latch to count to zero, ignoring any spurious wake-ups, but waking periodically to
check for errors</div>
</div>
</div>
</div>
</div>
<div class="inherited-list">
<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
</section>
</li>
</ul>
</section>
<section class="details">
<ul class="details-list">
<!-- ============ FIELD DETAIL =========== -->
<li>
<section class="field-details" id="field-detail">
<h2>Field Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="LOG">
<h3>LOG</h3>
<div class="member-signature"><span class="modifiers">private static final</span>&nbsp;<span class="return-type">org.slf4j.Logger</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/procedure/Procedure.html#line-69">LOG</a></span></div>
</section>
</li>
<li>
<section class="detail" id="procName">
<h3>procName</h3>
<div class="member-signature"><span class="modifiers">private final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/procedure/Procedure.html#line-76">procName</a></span></div>
</section>
</li>
<li>
<section class="detail" id="args">
<h3>args</h3>
<div class="member-signature"><span class="modifiers">private final</span>&nbsp;<span class="return-type">byte[]</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/procedure/Procedure.html#line-78">args</a></span></div>
</section>
</li>
<li>
<section class="detail" id="acquiredBarrierLatch">
<h3>acquiredBarrierLatch</h3>
<div class="member-signature"><span class="modifiers">final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/concurrent/CountDownLatch.html" title="class or interface in java.util.concurrent" class="external-link">CountDownLatch</a></span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/procedure/Procedure.html#line-84">acquiredBarrierLatch</a></span></div>
<div class="block">latch for waiting until all members have acquire in barrier state</div>
</section>
</li>
<li>
<section class="detail" id="releasedBarrierLatch">
<h3>releasedBarrierLatch</h3>
<div class="member-signature"><span class="modifiers">final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/concurrent/CountDownLatch.html" title="class or interface in java.util.concurrent" class="external-link">CountDownLatch</a></span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/procedure/Procedure.html#line-86">releasedBarrierLatch</a></span></div>
<div class="block">latch for waiting until all members have executed and released their in barrier state</div>
</section>
</li>
<li>
<section class="detail" id="completedLatch">
<h3>completedLatch</h3>
<div class="member-signature"><span class="modifiers">final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/concurrent/CountDownLatch.html" title="class or interface in java.util.concurrent" class="external-link">CountDownLatch</a></span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/procedure/Procedure.html#line-88">completedLatch</a></span></div>
<div class="block">latch for waiting until a procedure has completed</div>
</section>
</li>
<li>
<section class="detail" id="monitor">
<h3>monitor</h3>
<div class="member-signature"><span class="modifiers">private final</span>&nbsp;<span class="return-type"><a href="../errorhandling/ForeignExceptionDispatcher.html" title="class in org.apache.hadoop.hbase.errorhandling">ForeignExceptionDispatcher</a></span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/procedure/Procedure.html#line-90">monitor</a></span></div>
<div class="block">monitor to check for errors</div>
</section>
</li>
<li>
<section class="detail" id="wakeFrequency">
<h3>wakeFrequency</h3>
<div class="member-signature"><span class="modifiers">protected final</span>&nbsp;<span class="return-type">long</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/procedure/Procedure.html#line-97">wakeFrequency</a></span></div>
<div class="block">frequency to check for errors (ms)</div>
</section>
</li>
<li>
<section class="detail" id="timeoutInjector">
<h3>timeoutInjector</h3>
<div class="member-signature"><span class="modifiers">protected final</span>&nbsp;<span class="return-type"><a href="../errorhandling/TimeoutExceptionInjector.html" title="class in org.apache.hadoop.hbase.errorhandling">TimeoutExceptionInjector</a></span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/procedure/Procedure.html#line-98">timeoutInjector</a></span></div>
</section>
</li>
<li>
<section class="detail" id="joinBarrierLock">
<h3>joinBarrierLock</h3>
<div class="member-signature"><span class="modifiers">private final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/procedure/Procedure.html#line-105">joinBarrierLock</a></span></div>
<div class="block">lock to prevent nodes from acquiring and then releasing before we can track them</div>
</section>
</li>
<li>
<section class="detail" id="acquiringMembers">
<h3>acquiringMembers</h3>
<div class="member-signature"><span class="modifiers">private final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/procedure/Procedure.html#line-106">acquiringMembers</a></span></div>
</section>
</li>
<li>
<section class="detail" id="inBarrierMembers">
<h3>inBarrierMembers</h3>
<div class="member-signature"><span class="modifiers">private final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/procedure/Procedure.html#line-107">inBarrierMembers</a></span></div>
</section>
</li>
<li>
<section class="detail" id="dataFromFinishedMembers">
<h3>dataFromFinishedMembers</h3>
<div class="member-signature"><span class="modifiers">private final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/HashMap.html" title="class or interface in java.util" class="external-link">HashMap</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>,<wbr>byte[]&gt;</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/procedure/Procedure.html#line-108">dataFromFinishedMembers</a></span></div>
</section>
</li>
<li>
<section class="detail" id="coord">
<h3>coord</h3>
<div class="member-signature"><span class="modifiers">private</span>&nbsp;<span class="return-type"><a href="ProcedureCoordinator.html" title="class in org.apache.hadoop.hbase.procedure">ProcedureCoordinator</a></span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/procedure/Procedure.html#line-109">coord</a></span></div>
</section>
</li>
</ul>
</section>
</li>
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<li>
<section class="constructor-details" id="constructor-detail">
<h2>Constructor Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="&lt;init&gt;(org.apache.hadoop.hbase.procedure.ProcedureCoordinator,org.apache.hadoop.hbase.errorhandling.ForeignExceptionDispatcher,long,long,java.lang.String,byte[],java.util.List)">
<h3>Procedure</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/procedure/Procedure.html#line-123">Procedure</a></span><wbr><span class="parameters">(<a href="ProcedureCoordinator.html" title="class in org.apache.hadoop.hbase.procedure">ProcedureCoordinator</a>&nbsp;coord,
<a href="../errorhandling/ForeignExceptionDispatcher.html" title="class in org.apache.hadoop.hbase.errorhandling">ForeignExceptionDispatcher</a>&nbsp;monitor,
long&nbsp;wakeFreq,
long&nbsp;timeout,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;procName,
byte[]&nbsp;args,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;&nbsp;expectedMembers)</span></div>
<div class="block">Creates a procedure. (FOR TESTING) <a href="Procedure.html" title="class in org.apache.hadoop.hbase.procedure"><code>Procedure</code></a> state to be run by a
<a href="ProcedureCoordinator.html" title="class in org.apache.hadoop.hbase.procedure"><code>ProcedureCoordinator</code></a>.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>coord</code> - coordinator to call back to for general errors (e.g.
<a href="ProcedureCoordinator.html#rpcConnectionFailure(java.lang.String,java.io.IOException)"><code>ProcedureCoordinator.rpcConnectionFailure(String, IOException)</code></a>).</dd>
<dd><code>monitor</code> - error monitor to check for external errors</dd>
<dd><code>wakeFreq</code> - frequency to check for errors while waiting</dd>
<dd><code>timeout</code> - amount of time to allow the procedure to run before cancelling</dd>
<dd><code>procName</code> - name of the procedure instance</dd>
<dd><code>args</code> - argument data associated with the procedure instance</dd>
<dd><code>expectedMembers</code> - names of the expected members</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="&lt;init&gt;(org.apache.hadoop.hbase.procedure.ProcedureCoordinator,long,long,java.lang.String,byte[],java.util.List)">
<h3>Procedure</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/procedure/Procedure.html#line-153">Procedure</a></span><wbr><span class="parameters">(<a href="ProcedureCoordinator.html" title="class in org.apache.hadoop.hbase.procedure">ProcedureCoordinator</a>&nbsp;coord,
long&nbsp;wakeFreq,
long&nbsp;timeout,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;procName,
byte[]&nbsp;args,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;&nbsp;expectedMembers)</span></div>
<div class="block">Create a procedure. Users should generally not directly create instances of this. They are
created them implicitly via
<a href="ProcedureCoordinator.html#createProcedure(org.apache.hadoop.hbase.errorhandling.ForeignExceptionDispatcher,java.lang.String,byte%5B%5D,java.util.List)"><code>ProcedureCoordinator.createProcedure(ForeignExceptionDispatcher, String, byte[], List)</code></a>}</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>coord</code> - coordinator to call back to for general errors (e.g.
<a href="ProcedureCoordinator.html#rpcConnectionFailure(java.lang.String,java.io.IOException)"><code>ProcedureCoordinator.rpcConnectionFailure(String, IOException)</code></a>).</dd>
<dd><code>wakeFreq</code> - frequency to check for errors while waiting</dd>
<dd><code>timeout</code> - amount of time to allow the procedure to run before cancelling</dd>
<dd><code>procName</code> - name of the procedure instance</dd>
<dd><code>args</code> - argument data associated with the procedure instance</dd>
<dd><code>expectedMembers</code> - names of the expected members</dd>
</dl>
</section>
</li>
</ul>
</section>
</li>
<!-- ============ METHOD DETAIL ========== -->
<li>
<section class="method-details" id="method-detail">
<h2>Method Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="getName()">
<h3>getName</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/procedure/Procedure.html#line-159">getName</a></span>()</div>
</section>
</li>
<li>
<section class="detail" id="getStatus()">
<h3>getStatus</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/procedure/Procedure.html#line-166">getStatus</a></span>()</div>
<div class="block">Returns String of the procedure members both trying to enter the barrier and already in barrier</div>
</section>
</li>
<li>
<section class="detail" id="getErrorMonitor()">
<h3>getErrorMonitor</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="../errorhandling/ForeignExceptionDispatcher.html" title="class in org.apache.hadoop.hbase.errorhandling">ForeignExceptionDispatcher</a></span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/procedure/Procedure.html#line-179">getErrorMonitor</a></span>()</div>
<div class="block">Get the ForeignExceptionDispatcher</div>
<dl class="notes">
<dt>Returns:</dt>
<dd>the Procedure's monitor.</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="call()">
<h3>call</h3>
<div class="member-signature"><span class="modifiers">public final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Void.html" title="class or interface in java.lang" class="external-link">Void</a></span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/procedure/Procedure.html#line-188">call</a></span>()</div>
<div class="block">This call is the main execution thread of the barriered procedure. It sends messages and
essentially blocks until all procedure members acquire or later complete but periodically
checks for foreign exceptions.</div>
<dl class="notes">
<dt>Specified by:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/concurrent/Callable.html#call()" title="class or interface in java.util.concurrent" class="external-link">call</a></code>&nbsp;in interface&nbsp;<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/concurrent/Callable.html" title="class or interface in java.util.concurrent" class="external-link">Callable</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Void.html" title="class or interface in java.lang" class="external-link">Void</a>&gt;</code></dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="sendGlobalBarrierStart()">
<h3>sendGlobalBarrierStart</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/procedure/Procedure.html#line-239">sendGlobalBarrierStart</a></span>()
throws <span class="exceptions"><a href="../errorhandling/ForeignException.html" title="class in org.apache.hadoop.hbase.errorhandling">ForeignException</a></span></div>
<div class="block">Sends a message to Members to create a new <a href="Subprocedure.html" title="class in org.apache.hadoop.hbase.procedure"><code>Subprocedure</code></a> for this Procedure and execute
the <a href="Subprocedure.html#acquireBarrier()"><code>Subprocedure.acquireBarrier()</code></a> step.</div>
<dl class="notes">
<dt>Throws:</dt>
<dd><code><a href="../errorhandling/ForeignException.html" title="class in org.apache.hadoop.hbase.errorhandling">ForeignException</a></code></dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="sendGlobalBarrierReached()">
<h3>sendGlobalBarrierReached</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/procedure/Procedure.html#line-260">sendGlobalBarrierReached</a></span>()
throws <span class="exceptions"><a href="../errorhandling/ForeignException.html" title="class in org.apache.hadoop.hbase.errorhandling">ForeignException</a></span></div>
<div class="block">Sends a message to all members that the global barrier condition has been satisfied. This
should only be executed after all members have completed its
<a href="Subprocedure.html#acquireBarrier()"><code>Subprocedure.acquireBarrier()</code></a> call successfully. This triggers the member
<a href="Subprocedure.html#insideBarrier()"><code>Subprocedure.insideBarrier()</code></a> method.</div>
<dl class="notes">
<dt>Throws:</dt>
<dd><code><a href="../errorhandling/ForeignException.html" title="class in org.apache.hadoop.hbase.errorhandling">ForeignException</a></code></dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="sendGlobalBarrierComplete()">
<h3>sendGlobalBarrierComplete</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/procedure/Procedure.html#line-274">sendGlobalBarrierComplete</a></span>()</div>
<div class="block">Sends a message to members that all <a href="Subprocedure.html#insideBarrier()"><code>Subprocedure.insideBarrier()</code></a> calls have completed.
After this executes, the coordinator can assume that any state resources about this barrier
procedure state has been released.</div>
</section>
</li>
<li>
<section class="detail" id="barrierAcquiredByMember(java.lang.String)">
<h3>barrierAcquiredByMember</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/procedure/Procedure.html#line-290">barrierAcquiredByMember</a></span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;member)</span></div>
<div class="block">Call back triggered by an individual member upon successful local barrier acquisition</div>
</section>
</li>
<li>
<section class="detail" id="barrierReleasedByMember(java.lang.String,byte[])">
<h3>barrierReleasedByMember</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/procedure/Procedure.html#line-312">barrierReleasedByMember</a></span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;member,
byte[]&nbsp;dataFromMember)</span></div>
<div class="block">Call back triggered by a individual member upon successful local in-barrier execution and
release</div>
</section>
</li>
<li>
<section class="detail" id="waitForCompleted()">
<h3>waitForCompleted</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/procedure/Procedure.html#line-334">waitForCompleted</a></span>()
throws <span class="exceptions"><a href="../errorhandling/ForeignException.html" title="class in org.apache.hadoop.hbase.errorhandling">ForeignException</a>,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/InterruptedException.html" title="class or interface in java.lang" class="external-link">InterruptedException</a></span></div>
<div class="block">Waits until the entire procedure has globally completed, or has been aborted. If an exception
is thrown the procedure may or not have run cleanup to trigger the completion latch yet.</div>
<dl class="notes">
<dt>Throws:</dt>
<dd><code><a href="../errorhandling/ForeignException.html" title="class in org.apache.hadoop.hbase.errorhandling">ForeignException</a></code></dd>
<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/InterruptedException.html" title="class or interface in java.lang" class="external-link">InterruptedException</a></code></dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="waitForCompletedWithRet()">
<h3>waitForCompletedWithRet</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/HashMap.html" title="class or interface in java.util" class="external-link">HashMap</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>,<wbr>byte[]&gt;</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/procedure/Procedure.html#line-343">waitForCompletedWithRet</a></span>()
throws <span class="exceptions"><a href="../errorhandling/ForeignException.html" title="class in org.apache.hadoop.hbase.errorhandling">ForeignException</a>,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/InterruptedException.html" title="class or interface in java.lang" class="external-link">InterruptedException</a></span></div>
<div class="block">Waits until the entire procedure has globally completed, or has been aborted. If an exception
is thrown the procedure may or not have run cleanup to trigger the completion latch yet.</div>
<dl class="notes">
<dt>Returns:</dt>
<dd>data returned from procedure members upon successfully completing subprocedure.</dd>
<dt>Throws:</dt>
<dd><code><a href="../errorhandling/ForeignException.html" title="class in org.apache.hadoop.hbase.errorhandling">ForeignException</a></code></dd>
<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/InterruptedException.html" title="class or interface in java.lang" class="external-link">InterruptedException</a></code></dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="isCompleted()">
<h3>isCompleted</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/procedure/Procedure.html#line-352">isCompleted</a></span>()
throws <span class="exceptions"><a href="../errorhandling/ForeignException.html" title="class in org.apache.hadoop.hbase.errorhandling">ForeignException</a></span></div>
<div class="block">Check if the entire procedure has globally completed, or has been aborted.</div>
<dl class="notes">
<dt>Throws:</dt>
<dd><code><a href="../errorhandling/ForeignException.html" title="class in org.apache.hadoop.hbase.errorhandling">ForeignException</a></code></dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="receive(org.apache.hadoop.hbase.errorhandling.ForeignException)">
<h3>receive</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/procedure/Procedure.html#line-361">receive</a></span><wbr><span class="parameters">(<a href="../errorhandling/ForeignException.html" title="class in org.apache.hadoop.hbase.errorhandling">ForeignException</a>&nbsp;e)</span></div>
<div class="block">A callback that handles incoming ForeignExceptions.</div>
<dl class="notes">
<dt>Specified by:</dt>
<dd><code><a href="../errorhandling/ForeignExceptionListener.html#receive(org.apache.hadoop.hbase.errorhandling.ForeignException)">receive</a></code>&nbsp;in interface&nbsp;<code><a href="../errorhandling/ForeignExceptionListener.html" title="interface in org.apache.hadoop.hbase.errorhandling">ForeignExceptionListener</a></code></dd>
<dt>Parameters:</dt>
<dd><code>e</code> - exception causing the error. Implementations must accept and handle null here.</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="waitForLatch(java.util.concurrent.CountDownLatch,org.apache.hadoop.hbase.errorhandling.ForeignExceptionSnare,long,java.lang.String)">
<h3>waitForLatch</h3>
<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/procedure/Procedure.html#line-377">waitForLatch</a></span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/concurrent/CountDownLatch.html" title="class or interface in java.util.concurrent" class="external-link">CountDownLatch</a>&nbsp;latch,
<a href="../errorhandling/ForeignExceptionSnare.html" title="interface in org.apache.hadoop.hbase.errorhandling">ForeignExceptionSnare</a>&nbsp;monitor,
long&nbsp;wakeFrequency,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;latchDescription)</span>
throws <span class="exceptions"><a href="../errorhandling/ForeignException.html" title="class in org.apache.hadoop.hbase.errorhandling">ForeignException</a>,
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/InterruptedException.html" title="class or interface in java.lang" class="external-link">InterruptedException</a></span></div>
<div class="block">Wait for latch to count to zero, ignoring any spurious wake-ups, but waking periodically to
check for errors</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>latch</code> - latch to wait on</dd>
<dd><code>monitor</code> - monitor to check for errors while waiting</dd>
<dd><code>wakeFrequency</code> - frequency to wake up and check for errors (in
<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/concurrent/TimeUnit.html#MILLISECONDS" title="class or interface in java.util.concurrent" class="external-link"><code>TimeUnit.MILLISECONDS</code></a>)</dd>
<dd><code>latchDescription</code> - description of the latch, for logging</dd>
<dt>Throws:</dt>
<dd><code><a href="../errorhandling/ForeignException.html" title="class in org.apache.hadoop.hbase.errorhandling">ForeignException</a></code> - type of error the monitor can throw, if the task fails</dd>
<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/InterruptedException.html" title="class or interface in java.lang" class="external-link">InterruptedException</a></code> - if we are interrupted while waiting on latch</dd>
</dl>
</section>
</li>
</ul>
</section>
</li>
</ul>
</section>
<!-- ========= END OF CLASS DATA ========= -->
</main>
<footer role="contentinfo">
<hr>
<p class="legal-copy"><small>Copyright &#169; 2007&#x2013;2020 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
</footer>
</div>
</div>
</body>
</html>