|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectorg.apache.hadoop.hbase.procedure.Subprocedure
public abstract class Subprocedure
Distributed procedure member's Subprocedure. A procedure is sarted on a ProcedureCoordinator
which communicates with ProcedureMembers who create and start its part of the Procedure. This
sub part is called a Subprocedure
Users should subclass this and implement acquireBarrier()
(get local barrier for this
member), insideBarrier()
(execute while globally barriered and release barrier) and
cleanup(Exception)
(release state associated with subprocedure.)
When submitted to a ProcedureMemeber, the call method is executed in a separate thread.
Latches are use too block its progress and trigger continuations when barrier conditions are
met.
Exception that makes it out of calls to acquireBarrier()
or insideBarrier()
gets converted into ForeignException
, which will get propagated to the
ProcedureCoordinator
.
There is a category of procedure (ex: online-snapshots), and a user-specified instance-specific
barrierName. (ex: snapshot121126).
Nested Class Summary | |
---|---|
static class |
Subprocedure.SubprocedureImpl
Empty Subprocedure for testing. |
Field Summary | |
---|---|
protected TimeoutExceptionInjector |
executionTimeoutTimer
|
protected ForeignExceptionDispatcher |
monitor
monitor to check for errors |
protected ProcedureMemberRpcs |
rpcs
|
protected long |
wakeFrequency
frequency to check for errors (ms) |
Constructor Summary | |
---|---|
Subprocedure(ProcedureMember member,
String procName,
ForeignExceptionDispatcher monitor,
long wakeFrequency,
long timeout)
|
Method Summary | |
---|---|
abstract void |
acquireBarrier()
The implementation of this method should gather and hold required resources (locks, disk space, etc) to satisfy the Procedures barrier condition. |
Void |
call()
Execute the Subprocedure acquireBarrier() and insideBarrier() methods
while keeping some state for other threads to access. |
void |
cancel(String msg,
Throwable cause)
Method to cancel the Subprocedure by injecting an exception from and external source. |
abstract void |
cleanup(Exception e)
Users should override this method. |
String |
getMemberName()
|
String |
getName()
|
abstract void |
insideBarrier()
The implementation of this method should act with the assumption that the barrier condition has been satisfied. |
void |
receiveReachedGlobalBarrier()
Callback for the member rpcs to call when the global barrier has been reached. |
void |
waitForLocallyCompleted()
Waits until the entire procedure has globally completed, or has been aborted. |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
protected final ForeignExceptionDispatcher monitor
protected final long wakeFrequency
protected final TimeoutExceptionInjector executionTimeoutTimer
protected final ProcedureMemberRpcs rpcs
Constructor Detail |
---|
public Subprocedure(ProcedureMember member, String procName, ForeignExceptionDispatcher monitor, long wakeFrequency, long timeout)
member
- reference to the member managing this subprocedureprocName
- name of the procedure this subprocedure is associated withmonitor
- notified if there is an error in the subprocedurewakeFrequency
- time in millis to wake to check if there is an error via the monitor (in
milliseconds).timeout
- time in millis that will trigger a subprocedure abort if it has not completedMethod Detail |
---|
public String getName()
public String getMemberName()
public final Void call()
acquireBarrier()
and insideBarrier()
methods
while keeping some state for other threads to access.
This would normally be executed by the ProcedureMemeber when a acquire message comes from the
coordinator. Rpcs are used to spend message back to the coordinator after different phases
are executed. Any exceptions caught during the execution (except for InterrupedException) get
converted and propagated to coordinator via ProcedureMemberRpcs.sendMemberAborted(
Subprocedure, ForeignException)
.
call
in interface Callable<Void>
public abstract void acquireBarrier() throws ForeignException
ForeignException
public abstract void insideBarrier() throws ForeignException
ForeignException
public abstract void cleanup(Exception e)
acquireBarrier()
may have
created.
e
- public void cancel(String msg, Throwable cause)
cause
- public void receiveReachedGlobalBarrier()
insideBarrier()
method can be run.
public void waitForLocallyCompleted() throws ForeignException, InterruptedException
ForeignException
InterruptedException
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |