@InterfaceAudience.Private public class UnassignProcedure extends RegionTransitionProcedure
The Unassign starts by placing a "close region" request in the Remote Dispatcher queue, and the procedure will then go into a "waiting state" (suspend). The Remote Dispatcher will batch the various requests for that server and they will be sent to the RS for execution. The RS will complete the open operation by calling master.reportRegionStateTransition(). The AM will intercept the transition report, and notify this procedure. The procedure will wakeup and finish the unassign by publishing its new state on meta.
If we are unable to contact the remote regionserver whether because of ConnectException or socket timeout, we will call expire on the server we were trying to contact. We will remain in suspended state waiting for a wake up from the ServerCrashProcedure that is processing the failed server. The basic idea is that if we notice a crashed server, then we have a responsibility; i.e. we should not let go of the region until we are sure the server that was hosting has had its crash processed. If we let go of the region before then, an assign might run before the logs have been split which would make for data loss.
TODO: Rather than this tricky coordination between SCP and this Procedure, instead, work on returning a SCP as our subprocedure; probably needs work on the framework to do this, especially if the SCP already created.
Procedure.LockStateTableProcedureInterface.TableOperationType| 限定符和类型 | 字段和说明 |
|---|---|
protected ServerName |
destinationServer
The Server we will subsequently assign the region too (can be null).
|
protected ServerName |
hostingServer
Where to send the unassign RPC.
|
abortedNO_PROC_ID, NO_TIMEOUT| 构造器和说明 |
|---|
UnassignProcedure() |
UnassignProcedure(RegionInfo regionInfo,
ServerName hostingServer,
boolean force,
boolean removeAfterUnassigning) |
UnassignProcedure(RegionInfo regionInfo,
ServerName hostingServer,
ServerName destinationServer,
boolean force) |
UnassignProcedure(RegionInfo regionInfo,
ServerName hostingServer,
ServerName destinationServer,
boolean override,
boolean removeAfterUnassigning) |
abort, acquireLock, addToRemoteDispatcher, bypass, execute, getAttempt, getRegionInfo, getRegionState, getTableName, getTransitionState, holdLock, isMeta, isServerOnline, isServerOnline, releaseLock, remoteCallFailed, remoteOperationCompleted, remoteOperationFailed, reportTransition, rollback, setAttempt, setOverride, setRegionInfo, setTimeoutFailure, shouldWaitClientAck, toStringState, waitInitializedaddStackIndex, afterReplay, beforeReplay, compareTo, completionCleanup, doExecute, doRollback, elapsedTime, getChildrenLatch, getException, getLastUpdate, getNonceKey, getOwner, getParentProcId, getProcId, getProcIdHashCode, getProcName, getResult, getRootProcedureId, getRootProcId, getStackIndexes, getState, getSubmittedTime, getTimeout, getTimeoutTimestamp, hasChildren, hasException, hasLock, hasOwner, hasParent, hasTimeout, haveSameParent, incChildrenLatch, isBypass, isFailed, isFinished, isInitializing, isLockedWhenLoading, isRunnable, isSuccess, isWaiting, isYieldAfterExecutionStep, removeStackIndex, setAbortFailure, setChildrenLatch, setFailure, setFailure, setLastUpdate, setNonceKey, setOwner, setOwner, setParentProcId, setProcId, setResult, setRootProcId, setStackIndexes, setState, setSubmittedTime, setTimeout, skipPersistence, toString, toStringClass, toStringDetails, toStringSimpleSB, updateMetricsOnFinish, updateMetricsOnSubmit, updateTimestamp, wasExecutedprotected volatile ServerName hostingServer
protected volatile ServerName destinationServer
public UnassignProcedure()
public UnassignProcedure(RegionInfo regionInfo, ServerName hostingServer, boolean force, boolean removeAfterUnassigning)
public UnassignProcedure(RegionInfo regionInfo, ServerName hostingServer, ServerName destinationServer, boolean force)
public UnassignProcedure(RegionInfo regionInfo, ServerName hostingServer, ServerName destinationServer, boolean override, boolean removeAfterUnassigning)
public TableProcedureInterface.TableOperationType getTableOperationType()
TableProcedureInterfaceprotected boolean isRollbackSupported(org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.RegionTransitionState state)
protected void serializeStateData(ProcedureStateSerializer serializer) throws IOException
serializeStateData 在类中 Procedure<MasterProcedureEnv>IOExceptionprotected void deserializeStateData(ProcedureStateSerializer serializer) throws IOException
deserializeStateData 在类中 Procedure<MasterProcedureEnv>IOExceptionprotected boolean startTransition(MasterProcedureEnv env, RegionStates.RegionStateNode regionNode)
startTransition 在类中 RegionTransitionProcedureprotected boolean updateTransition(MasterProcedureEnv env, RegionStates.RegionStateNode regionNode) throws IOException
RegionTransitionProcedureupdateTransition 在类中 RegionTransitionProcedureIOExceptionprotected void finishTransition(MasterProcedureEnv env, RegionStates.RegionStateNode regionNode) throws IOException
finishTransition 在类中 RegionTransitionProcedureIOExceptionpublic RemoteProcedureDispatcher.RemoteOperation remoteCallBuild(MasterProcedureEnv env, ServerName serverName)
protected void reportTransition(MasterProcedureEnv env, RegionStates.RegionStateNode regionNode, org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.RegionStateTransition.TransitionCode code, long seqId) throws UnexpectedStateException
protected void proceed(MasterProcedureEnv env, RegionStates.RegionStateNode regionNode)
protected boolean remoteCallFailed(MasterProcedureEnv env, RegionStates.RegionStateNode regionNode, IOException exception)
remoteCallFailed 在类中 RegionTransitionProcedurepublic void toStringClassDetails(StringBuilder sb)
public ServerName getServer(MasterProcedureEnv env)
RegionTransitionProceduregetServer 在类中 RegionTransitionProcedureprotected ProcedureMetrics getProcedureMetrics(MasterProcedureEnv env)
Copyright © 2007–2019 The Apache Software Foundation. All rights reserved.