@InterfaceAudience.Private public class ProcedureCoordinator extends Object
The Procedure is generic and subclassing or customization shouldn't be
necessary -- any customization should happen just in Subprocedures.
| Modifier and Type | Field and Description |
|---|---|
(package private) static long |
KEEP_ALIVE_MILLIS_DEFAULT |
private static org.slf4j.Logger |
LOG |
private ExecutorService |
pool |
private ConcurrentMap<String,Procedure> |
procedures |
private ProcedureCoordinatorRpcs |
rpcs |
(package private) static long |
TIMEOUT_MILLIS_DEFAULT |
private long |
timeoutMillis |
(package private) static long |
WAKE_MILLIS_DEFAULT |
private long |
wakeTimeMillis |
| Constructor and Description |
|---|
ProcedureCoordinator(ProcedureCoordinatorRpcs rpcs,
ThreadPoolExecutor pool)
Create and start a ProcedureCoordinator.
|
ProcedureCoordinator(ProcedureCoordinatorRpcs rpcs,
ThreadPoolExecutor pool,
long timeoutMillis,
long wakeTimeMillis)
Create and start a ProcedureCoordinator.
|
| Modifier and Type | Method and Description |
|---|---|
void |
abortProcedure(String procName,
ForeignException reason)
Abort the procedure with the given name
|
void |
close()
Shutdown the thread pools and release rpc resources
|
(package private) Procedure |
createProcedure(ForeignExceptionDispatcher fed,
String procName,
byte[] procArgs,
List<String> expectedMembers)
Exposed for hooking with unit tests.
|
static ThreadPoolExecutor |
defaultPool(String coordName,
int opThreads)
Default thread pool for the procedure
|
static ThreadPoolExecutor |
defaultPool(String coordName,
int opThreads,
long keepAliveMillis)
Default thread pool for the procedure
|
Procedure |
getProcedure(String name)
Returns the procedure.
|
Set<String> |
getProcedureNames() |
(package private) ProcedureCoordinatorRpcs |
getRpcs() |
(package private) void |
memberAcquiredBarrier(String procName,
String member)
Notification that the procedure had the specified member acquired its part of the barrier
via
Subprocedure.acquireBarrier(). |
(package private) void |
memberFinishedBarrier(String procName,
String member,
byte[] dataFromMember)
Notification that the procedure had another member finished executing its in-barrier subproc
via
Subprocedure.insideBarrier(). |
(package private) void |
rpcConnectionFailure(String message,
IOException cause)
The connection to the rest of the procedure group (members and coordinator) has been
broken/lost/failed.
|
Procedure |
startProcedure(ForeignExceptionDispatcher fed,
String procName,
byte[] procArgs,
List<String> expectedMembers)
Kick off the named procedure
Currently only one procedure with the same type and name is allowed to run at a time.
|
(package private) boolean |
submitProcedure(Procedure proc)
Submit an procedure to kick off its dependent subprocedures.
|
private static final org.slf4j.Logger LOG
static final long KEEP_ALIVE_MILLIS_DEFAULT
static final long TIMEOUT_MILLIS_DEFAULT
static final long WAKE_MILLIS_DEFAULT
private final ProcedureCoordinatorRpcs rpcs
private final ExecutorService pool
private final long wakeTimeMillis
private final long timeoutMillis
private final ConcurrentMap<String,Procedure> procedures
public ProcedureCoordinator(ProcedureCoordinatorRpcs rpcs, ThreadPoolExecutor pool)
pool - Used for executing procedures.public ProcedureCoordinator(ProcedureCoordinatorRpcs rpcs, ThreadPoolExecutor pool, long timeoutMillis, long wakeTimeMillis)
pool - Used for executing procedures.public static ThreadPoolExecutor defaultPool(String coordName, int opThreads)
coordName - opThreads - the maximum number of threads to allow in the poolpublic static ThreadPoolExecutor defaultPool(String coordName, int opThreads, long keepAliveMillis)
coordName - opThreads - the maximum number of threads to allow in the poolkeepAliveMillis - the maximum time (ms) that excess idle threads will wait for new taskspublic void close() throws IOException
IOExceptionboolean submitProcedure(Procedure proc)
proc - Procedure to executevoid rpcConnectionFailure(String message, IOException cause)
message - description of the errorcause - the actual cause of the failurepublic void abortProcedure(String procName, ForeignException reason)
procName - name of the procedure to abortreason - serialized information about the abortProcedure createProcedure(ForeignExceptionDispatcher fed, String procName, byte[] procArgs, List<String> expectedMembers)
procName - procArgs - expectedMembers - public Procedure startProcedure(ForeignExceptionDispatcher fed, String procName, byte[] procArgs, List<String> expectedMembers)
procName - name of the procedure to startprocArgs - arguments for the procedureexpectedMembers - expected members to startvoid memberAcquiredBarrier(String procName, String member)
Subprocedure.acquireBarrier().procName - name of the procedure that acquiredmember - name of the member that acquiredvoid memberFinishedBarrier(String procName, String member, byte[] dataFromMember)
Subprocedure.insideBarrier().procName - name of the subprocedure that finishedmember - name of the member that executed and released its barrierdataFromMember - the data that the member returned along with the notificationProcedureCoordinatorRpcs getRpcs()
public Procedure getProcedure(String name)
name - Name of the procedurepublic Set<String> getProcedureNames()
Copyright © 2007–2020 The Apache Software Foundation. All rights reserved.