public class ServerCrashProcedure extends <any> implements ServerProcedureInterface
The procedure flow varies dependent on whether meta is assigned and if we are to split logs.
We come in here after ServerManager has noticed a server has expired. Procedures queued on the rpc should have been notified about fail and should be concurrently getting themselves ready to assign elsewhere.
ServerProcedureInterface.ServerOperationType
Constructor and Description |
---|
ServerCrashProcedure()
Used when deserializing from a procedure store; we'll construct one of these then call
#deserializeStateData(InputStream).
|
ServerCrashProcedure(MasterProcedureEnv env,
ServerName serverName,
boolean shouldSplitWal,
boolean carryingMeta)
Call this constructor queuing up a Procedure.
|
Modifier and Type | Method and Description |
---|---|
protected boolean |
abort(MasterProcedureEnv env) |
protected LockState |
acquireLock(MasterProcedureEnv env) |
protected void |
deserializeStateData(ProcedureStateSerializer serializer) |
protected Flow |
executeFromState(MasterProcedureEnv env,
ServerCrashState state) |
protected ServerCrashState |
getInitialState() |
protected ProcedureMetrics |
getProcedureMetrics(MasterProcedureEnv env) |
ServerName |
getServerName() |
ServerProcedureInterface.ServerOperationType |
getServerOperationType()
Given an operation type we can take decisions about what to do with pending operations.
|
protected ServerCrashState |
getState(int stateId) |
protected int |
getStateId(ServerCrashState state) |
boolean |
hasMetaTableRegion() |
protected boolean |
isYieldBeforeExecuteFromState(MasterProcedureEnv env,
ServerCrashState state)
For this procedure, yield at end of each successful flow step so that all crashed servers
can make progress rather than do the default which has each procedure running to completion
before we move to the next.
|
protected void |
releaseLock(MasterProcedureEnv env) |
protected void |
rollbackState(MasterProcedureEnv env,
ServerCrashState state) |
protected void |
serializeStateData(ProcedureStateSerializer serializer) |
protected boolean |
shouldWaitClientAck(MasterProcedureEnv env) |
void |
toStringClassDetails(java.lang.StringBuilder sb) |
public ServerCrashProcedure(MasterProcedureEnv env, ServerName serverName, boolean shouldSplitWal, boolean carryingMeta)
serverName
- Name of the crashed server.shouldSplitWal
- True if we should split WALs as part of crashed server processing.carryingMeta
- True if carrying hbase:meta table region.public ServerCrashProcedure()
protected Flow executeFromState(MasterProcedureEnv env, ServerCrashState state) throws ProcedureSuspendedException, ProcedureYieldException
ProcedureSuspendedException
ProcedureYieldException
protected void rollbackState(MasterProcedureEnv env, ServerCrashState state) throws java.io.IOException
java.io.IOException
protected ServerCrashState getState(int stateId)
protected int getStateId(ServerCrashState state)
protected ServerCrashState getInitialState()
protected boolean abort(MasterProcedureEnv env)
protected LockState acquireLock(MasterProcedureEnv env)
protected void releaseLock(MasterProcedureEnv env)
public void toStringClassDetails(java.lang.StringBuilder sb)
protected void serializeStateData(ProcedureStateSerializer serializer) throws java.io.IOException
java.io.IOException
protected void deserializeStateData(ProcedureStateSerializer serializer) throws java.io.IOException
java.io.IOException
public ServerName getServerName()
getServerName
in interface ServerProcedureInterface
public boolean hasMetaTableRegion()
hasMetaTableRegion
in interface ServerProcedureInterface
public ServerProcedureInterface.ServerOperationType getServerOperationType()
ServerProcedureInterface
getServerOperationType
in interface ServerProcedureInterface
protected boolean isYieldBeforeExecuteFromState(MasterProcedureEnv env, ServerCrashState state)
protected boolean shouldWaitClientAck(MasterProcedureEnv env)
protected ProcedureMetrics getProcedureMetrics(MasterProcedureEnv env)