@InterfaceAudience.Public public class EntityLock extends Object
 Use LockServiceClient to build instances. Then call requestLock().
 requestLock() 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.
 
 Use await(long, java.util.concurrent.TimeUnit) or await(long, TimeUnit) to wait for the lock to be acquired. Always
 call unlock() 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
 unlock() will stop the heartbeat thread and cancel the lock queued on master.
 
There are 4 ways in which these remote locks may be released/can be lost:
unlock().
 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();
 | Modifier and Type | Field and Description | 
|---|---|
| static String | HEARTBEAT_TIME_BUFFER | 
| Modifier and Type | Method and Description | 
|---|---|
| void | await() | 
| boolean | await(long timeout,
     TimeUnit timeUnit) | 
| boolean | isLocked() | 
| void | requestLock()Sends rpc to the master to request lock. | 
| String | toString() | 
| void | unlock() | 
public static final String HEARTBEAT_TIME_BUFFER
public boolean isLocked()
public void requestLock() throws IOException
await() to wait on lock. Always call unlock() after calling the below,
 even after error.IOExceptionpublic boolean await(long timeout, TimeUnit timeUnit) throws InterruptedException
timeout - in milliseconds. If set to 0, waits indefinitely.InterruptedExceptionpublic void await() throws InterruptedException
InterruptedExceptionpublic void unlock() throws IOException
IOExceptionCopyright © 2007–2020 The Apache Software Foundation. All rights reserved.