blob: 0f55975ecf864fc6e3bffc02502f0e5c819f8a8c [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>EntityLock (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="EntityLock (Apache HBase 3.0.0-alpha-2-SNAPSHOT API)";
}
}
catch(err) {
}
//-->
var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10};
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
var tableTab = "tableTab";
var activeTableTab = "activeTableTab";
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a name="navbar.top">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.top.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/EntityLock.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>Prev&nbsp;Class</li>
<li><a href="../../../../../../org/apache/hadoop/hbase/client/locking/EntityLock.LockHeartbeatWorker.html" title="class in org.apache.hadoop.hbase.client.locking"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../../index.html?org/apache/hadoop/hbase/client/locking/EntityLock.html" target="_top">Frames</a></li>
<li><a href="EntityLock.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.client.locking</div>
<h2 title="Class EntityLock" class="title">Class EntityLock</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">java.lang.Object</a></li>
<li>
<ul class="inheritance">
<li>org.apache.hadoop.hbase.client.locking.EntityLock</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<hr>
<br>
<pre>@InterfaceAudience.Public
public class <a href="../../../../../../src-html/org/apache/hadoop/hbase/client/locking/EntityLock.html#line.81">EntityLock</a>
extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></pre>
<div class="block">Lock for HBase Entity either a Table, a Namespace, or Regions.
These are remote locks which live on master, and need periodic heartbeats to keep them alive.
(Once we request the lock, internally an heartbeat thread will be started on the client).
If master does not receive the heartbeat in time, it'll release the lock and make it available
to other users.
<p>Use <a href="../../../../../../org/apache/hadoop/hbase/client/locking/LockServiceClient.html" title="class in org.apache.hadoop.hbase.client.locking"><code>LockServiceClient</code></a> to build instances. Then call <a href="../../../../../../org/apache/hadoop/hbase/client/locking/EntityLock.html#requestLock--"><code>requestLock()</code></a>.
<a href="../../../../../../org/apache/hadoop/hbase/client/locking/EntityLock.html#requestLock--"><code>requestLock()</code></a> will contact master to queue the lock and start the heartbeat thread
which will check lock's status periodically and once the lock is acquired, it will send the
heartbeats to the master.
<p>Use <a href="../../../../../../org/apache/hadoop/hbase/client/locking/EntityLock.html#await-long-java.util.concurrent.TimeUnit-"><code>await(long, java.util.concurrent.TimeUnit)</code></a> or <a href="../../../../../../org/apache/hadoop/hbase/client/locking/EntityLock.html#await-long-java.util.concurrent.TimeUnit-"><code>await(long, TimeUnit)</code></a> to wait for the lock to be acquired.
Always call <a href="../../../../../../org/apache/hadoop/hbase/client/locking/EntityLock.html#unlock--"><code>unlock()</code></a> irrespective of whether lock was acquired or not. If the lock
was acquired, it'll be released. If it was not acquired, it is possible that master grants the
lock in future and the heartbeat thread keeps it alive forever by sending heartbeats.
Calling <a href="../../../../../../org/apache/hadoop/hbase/client/locking/EntityLock.html#unlock--"><code>unlock()</code></a> will stop the heartbeat thread and cancel the lock queued on master.
<p>There are 4 ways in which these remote locks may be released/can be lost:
<ul><li>Call <a href="../../../../../../org/apache/hadoop/hbase/client/locking/EntityLock.html#unlock--"><code>unlock()</code></a>.</li>
<li>Lock times out on master: Can happen because of network issues, GC pauses, etc.
Worker thread will call the given abortable as soon as it detects such a situation.</li>
<li>Fail to contact master: If worker thread can not contact mater and thus fails to send
heartbeat before the timeout expires, it assumes that lock is lost and calls the
abortable.</li>
<li>Worker thread is interrupted.</li>
</ul>
Use example:
<code>
EntityLock lock = lockServiceClient.*Lock(...., "exampled lock", abortable);
lock.requestLock();
....
....can do other initializations here since lock is 'asynchronous'...
....
if (lock.await(timeout)) {
....logic requiring mutual exclusion
}
lock.unlock();
</code></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>protected class&nbsp;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/client/locking/EntityLock.LockHeartbeatWorker.html" title="class in org.apache.hadoop.hbase.client.locking">EntityLock.LockHeartbeatWorker</a></span></code>&nbsp;</td>
</tr>
</table>
</li>
</ul>
<!-- =========== FIELD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="field.summary">
<!-- -->
</a>
<h3>Field Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Field Summary table, listing fields, and an explanation">
<caption><span>Fields</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Field and Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>private <a href="../../../../../../org/apache/hadoop/hbase/Abortable.html" title="interface in org.apache.hadoop.hbase">Abortable</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/client/locking/EntityLock.html#abort">abort</a></span></code>&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>static <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/client/locking/EntityLock.html#HEARTBEAT_TIME_BUFFER">HEARTBEAT_TIME_BUFFER</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/client/locking/EntityLock.html#heartbeatTimeBuffer">heartbeatTimeBuffer</a></span></code>&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>private <a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CountDownLatch.html?is-external=true" title="class or interface in java.util.concurrent">CountDownLatch</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/client/locking/EntityLock.html#latch">latch</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/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/client/locking/EntityLock.html#locked">locked</a></span></code>&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>private org.apache.hadoop.hbase.shaded.protobuf.generated.LockServiceProtos.LockRequest</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/client/locking/EntityLock.html#lockRequest">lockRequest</a></span></code>&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>private static org.slf4j.Logger</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/client/locking/EntityLock.html#LOG">LOG</a></span></code>&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>private <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Long.html?is-external=true" title="class or interface in java.lang">Long</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/client/locking/EntityLock.html#procId">procId</a></span></code>&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>private org.apache.hadoop.hbase.shaded.protobuf.generated.LockServiceProtos.LockService.BlockingInterface</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/client/locking/EntityLock.html#stub">stub</a></span></code>&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>private long</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/client/locking/EntityLock.html#testingSleepTime">testingSleepTime</a></span></code>&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>private <a href="../../../../../../org/apache/hadoop/hbase/client/locking/EntityLock.LockHeartbeatWorker.html" title="class in org.apache.hadoop.hbase.client.locking">EntityLock.LockHeartbeatWorker</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/client/locking/EntityLock.html#worker">worker</a></span></code>&nbsp;</td>
</tr>
</table>
</li>
</ul>
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor.summary">
<!-- -->
</a>
<h3>Constructor Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colOne" scope="col">Constructor and Description</th>
</tr>
<tr class="altColor">
<td class="colOne"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/client/locking/EntityLock.html#EntityLock-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.shaded.protobuf.generated.LockServiceProtos.LockService.BlockingInterface-org.apache.hadoop.hbase.shaded.protobuf.generated.LockServiceProtos.LockRequest-org.apache.hadoop.hbase.Abortable-">EntityLock</a></span>(org.apache.hadoop.conf.Configuration&nbsp;conf,
org.apache.hadoop.hbase.shaded.protobuf.generated.LockServiceProtos.LockService.BlockingInterface&nbsp;stub,
org.apache.hadoop.hbase.shaded.protobuf.generated.LockServiceProtos.LockRequest&nbsp;request,
<a href="../../../../../../org/apache/hadoop/hbase/Abortable.html" title="interface in org.apache.hadoop.hbase">Abortable</a>&nbsp;abort)</code>
<div class="block">Abortable.abort() is called when the lease of the lock will expire.</div>
</td>
</tr>
</table>
</li>
</ul>
<!-- ========== METHOD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="method.summary">
<!-- -->
</a>
<h3>Method Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Method and Description</th>
</tr>
<tr id="i0" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/client/locking/EntityLock.html#await--">await</a></span>()</code>&nbsp;</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/client/locking/EntityLock.html#await-long-java.util.concurrent.TimeUnit-">await</a></span>(long&nbsp;timeout,
<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/TimeUnit.html?is-external=true" title="class or interface in java.util.concurrent">TimeUnit</a>&nbsp;timeUnit)</code>&nbsp;</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code>(package private) <a href="../../../../../../org/apache/hadoop/hbase/client/locking/EntityLock.LockHeartbeatWorker.html" title="class in org.apache.hadoop.hbase.client.locking">EntityLock.LockHeartbeatWorker</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/client/locking/EntityLock.html#getWorker--">getWorker</a></span>()</code>&nbsp;</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/client/locking/EntityLock.html#isLocked--">isLocked</a></span>()</code>&nbsp;</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/client/locking/EntityLock.html#requestLock--">requestLock</a></span>()</code>
<div class="block">Sends rpc to the master to request lock.</div>
</td>
</tr>
<tr id="i5" class="rowColor">
<td class="colFirst"><code>(package private) void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/client/locking/EntityLock.html#setTestingSleepTime-long-">setTestingSleepTime</a></span>(long&nbsp;timeInMillis)</code>&nbsp;</td>
</tr>
<tr id="i6" class="altColor">
<td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/client/locking/EntityLock.html#toString--">toString</a></span>()</code>&nbsp;</td>
</tr>
<tr id="i7" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/client/locking/EntityLock.html#unlock--">unlock</a></span>()</code>&nbsp;</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3>
<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--" title="class or interface in java.lang">clone</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-" title="class or interface in java.lang">equals</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--" title="class or interface in java.lang">finalize</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--" title="class or interface in java.lang">getClass</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--" title="class or interface in java.lang">hashCode</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--" title="class or interface in java.lang">notify</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--" title="class or interface in java.lang">notifyAll</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#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/client/locking/EntityLock.html#line.82">LOG</a></pre>
</li>
</ul>
<a name="HEARTBEAT_TIME_BUFFER">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>HEARTBEAT_TIME_BUFFER</h4>
<pre>public static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/client/locking/EntityLock.html#line.84">HEARTBEAT_TIME_BUFFER</a></pre>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../../../constant-values.html#org.apache.hadoop.hbase.client.locking.EntityLock.HEARTBEAT_TIME_BUFFER">Constant Field Values</a></dd>
</dl>
</li>
</ul>
<a name="locked">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>locked</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/client/locking/EntityLock.html#line.87">locked</a></pre>
</li>
</ul>
<a name="latch">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>latch</h4>
<pre>private final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CountDownLatch.html?is-external=true" title="class or interface in java.util.concurrent">CountDownLatch</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/client/locking/EntityLock.html#line.88">latch</a></pre>
</li>
</ul>
<a name="stub">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>stub</h4>
<pre>private final&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.LockServiceProtos.LockService.BlockingInterface <a href="../../../../../../src-html/org/apache/hadoop/hbase/client/locking/EntityLock.html#line.90">stub</a></pre>
</li>
</ul>
<a name="worker">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>worker</h4>
<pre>private final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/client/locking/EntityLock.LockHeartbeatWorker.html" title="class in org.apache.hadoop.hbase.client.locking">EntityLock.LockHeartbeatWorker</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/client/locking/EntityLock.html#line.91">worker</a></pre>
</li>
</ul>
<a name="lockRequest">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>lockRequest</h4>
<pre>private final&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.LockServiceProtos.LockRequest <a href="../../../../../../src-html/org/apache/hadoop/hbase/client/locking/EntityLock.html#line.92">lockRequest</a></pre>
</li>
</ul>
<a name="abort">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>abort</h4>
<pre>private final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/Abortable.html" title="interface in org.apache.hadoop.hbase">Abortable</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/client/locking/EntityLock.html#line.93">abort</a></pre>
</li>
</ul>
<a name="heartbeatTimeBuffer">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>heartbeatTimeBuffer</h4>
<pre>private final&nbsp;int <a href="../../../../../../src-html/org/apache/hadoop/hbase/client/locking/EntityLock.html#line.96">heartbeatTimeBuffer</a></pre>
</li>
</ul>
<a name="testingSleepTime">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>testingSleepTime</h4>
<pre>private&nbsp;long <a href="../../../../../../src-html/org/apache/hadoop/hbase/client/locking/EntityLock.html#line.100">testingSleepTime</a></pre>
</li>
</ul>
<a name="procId">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>procId</h4>
<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Long.html?is-external=true" title="class or interface in java.lang">Long</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/client/locking/EntityLock.html#line.102">procId</a></pre>
</li>
</ul>
</li>
</ul>
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor.detail">
<!-- -->
</a>
<h3>Constructor Detail</h3>
<a name="EntityLock-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.shaded.protobuf.generated.LockServiceProtos.LockService.BlockingInterface-org.apache.hadoop.hbase.shaded.protobuf.generated.LockServiceProtos.LockRequest-org.apache.hadoop.hbase.Abortable-">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>EntityLock</h4>
<pre><a href="../../../../../../src-html/org/apache/hadoop/hbase/client/locking/EntityLock.html#line.109">EntityLock</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
org.apache.hadoop.hbase.shaded.protobuf.generated.LockServiceProtos.LockService.BlockingInterface&nbsp;stub,
org.apache.hadoop.hbase.shaded.protobuf.generated.LockServiceProtos.LockRequest&nbsp;request,
<a href="../../../../../../org/apache/hadoop/hbase/Abortable.html" title="interface in org.apache.hadoop.hbase">Abortable</a>&nbsp;abort)</pre>
<div class="block">Abortable.abort() is called when the lease of the lock will expire.
It's up to the user decide if simply abort the process or handle the loss of the lock
by aborting the operation that was supposed to be under lock.</div>
</li>
</ul>
</li>
</ul>
<!-- ============ METHOD DETAIL ========== -->
<ul class="blockList">
<li class="blockList"><a name="method.detail">
<!-- -->
</a>
<h3>Method Detail</h3>
<a name="toString--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>toString</h4>
<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/client/locking/EntityLock.html#line.120">toString</a>()</pre>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--" title="class or interface in java.lang">toString</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></code></dd>
</dl>
</li>
</ul>
<a name="setTestingSleepTime-long-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setTestingSleepTime</h4>
<pre>@InterfaceAudience.Private
void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/client/locking/EntityLock.html#line.147">setTestingSleepTime</a>(long&nbsp;timeInMillis)</pre>
</li>
</ul>
<a name="getWorker--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getWorker</h4>
<pre>@InterfaceAudience.Private
<a href="../../../../../../org/apache/hadoop/hbase/client/locking/EntityLock.LockHeartbeatWorker.html" title="class in org.apache.hadoop.hbase.client.locking">EntityLock.LockHeartbeatWorker</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/client/locking/EntityLock.html#line.152">getWorker</a>()</pre>
</li>
</ul>
<a name="isLocked--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isLocked</h4>
<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/client/locking/EntityLock.html#line.156">isLocked</a>()</pre>
</li>
</ul>
<a name="requestLock--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>requestLock</h4>
<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/client/locking/EntityLock.html#line.166">requestLock</a>()
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">Sends rpc to the master to request lock.
The lock request is queued with other lock requests.
Call <a href="../../../../../../org/apache/hadoop/hbase/client/locking/EntityLock.html#await--"><code>await()</code></a> to wait on lock.
Always call <a href="../../../../../../org/apache/hadoop/hbase/client/locking/EntityLock.html#unlock--"><code>unlock()</code></a> after calling the below, even after error.</div>
<dl>
<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="await-long-java.util.concurrent.TimeUnit-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>await</h4>
<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/client/locking/EntityLock.html#line.184">await</a>(long&nbsp;timeout,
<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/TimeUnit.html?is-external=true" title="class or interface in java.util.concurrent">TimeUnit</a>&nbsp;timeUnit)
throws <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>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>timeout</code> - in milliseconds. If set to 0, waits indefinitely.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>true if lock was acquired; and false if waiting time elapsed before lock could be
acquired.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<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="await--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>await</h4>
<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/client/locking/EntityLock.html#line.196">await</a>()
throws <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>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<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="unlock--">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>unlock</h4>
<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/client/locking/EntityLock.html#line.200">unlock</a>()
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>
<dl>
<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/EntityLock.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>Prev&nbsp;Class</li>
<li><a href="../../../../../../org/apache/hadoop/hbase/client/locking/EntityLock.LockHeartbeatWorker.html" title="class in org.apache.hadoop.hbase.client.locking"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../../index.html?org/apache/hadoop/hbase/client/locking/EntityLock.html" target="_top">Frames</a></li>
<li><a href="EntityLock.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>