@InterfaceAudience.Private public class AddPeerProcedure extends ModifyPeerProcedure
StateMachineProcedure.Flow
Procedure.LockState
PeerProcedureInterface.PeerOperationType
SLEEP_INTERVAL_MS, UPDATE_LAST_SEQ_ID_BATCH_SIZE
latch, peerId
stateCount
NO_PROC_ID, NO_TIMEOUT
Constructor and Description |
---|
AddPeerProcedure() |
AddPeerProcedure(String peerId,
ReplicationPeerConfig peerConfig,
boolean enabled) |
Modifier and Type | Method and Description |
---|---|
protected void |
deserializeStateData(ProcedureStateSerializer serializer)
Called on store load to allow the user to decode the previously serialized
state.
|
protected boolean |
enablePeerBeforeFinish()
The implementation class should override this method if the procedure may enter the serial
related states.
|
protected ReplicationPeerConfig |
getNewPeerConfig() |
PeerProcedureInterface.PeerOperationType |
getPeerOperationType() |
protected MasterProcedureProtos.PeerModificationState |
nextStateAfterRefresh()
Implementation class can override this method.
|
protected void |
postPeerModification(MasterProcedureEnv env)
Called before we finish the procedure.
|
protected void |
prePeerModification(MasterProcedureEnv env)
Called before we start the actual processing.
|
protected void |
serializeStateData(ProcedureStateSerializer serializer)
The user-level code of the procedure may have some state to
persist (e.g.
|
protected void |
updateLastPushedSequenceIdForSerialPeer(MasterProcedureEnv env) |
protected void |
updatePeerStorage(MasterProcedureEnv env) |
enablePeer, executeFromState, getInitialState, getOldPeerConfig, getState, getStateId, reopenRegions, rollbackState, setLastPushedSequenceId, setLastPushedSequenceIdForTable, setTimeoutFailure
acquireLock, getLatch, getPeerId, holdLock, releaseLock, waitInitialized
abort, addChildProcedure, execute, failIfAborted, getCurrentState, getCurrentStateId, getCycles, isEofState, isRollbackSupported, isYieldAfterExecutionStep, isYieldBeforeExecuteFromState, rollback, setNextState, toStringState
addStackIndex, afterReplay, beforeReplay, bypass, compareTo, completionCleanup, doExecute, doRollback, elapsedTime, getChildrenLatch, getException, getLastUpdate, getNonceKey, getOwner, getParentProcId, getProcedureMetrics, 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, removeStackIndex, setAbortFailure, setChildrenLatch, setFailure, setFailure, setLastUpdate, setNonceKey, setOwner, setOwner, setParentProcId, setProcId, setResult, setRootProcId, setStackIndexes, setState, setSubmittedTime, setTimeout, shouldWaitClientAck, skipPersistence, toString, toStringClass, toStringClassDetails, toStringDetails, toStringSimpleSB, updateMetricsOnFinish, updateMetricsOnSubmit, updateTimestamp, wasExecuted
public AddPeerProcedure()
public AddPeerProcedure(String peerId, ReplicationPeerConfig peerConfig, boolean enabled)
public PeerProcedureInterface.PeerOperationType getPeerOperationType()
protected MasterProcedureProtos.PeerModificationState nextStateAfterRefresh()
ModifyPeerProcedure
nextStateAfterRefresh
in class ModifyPeerProcedure
protected void updateLastPushedSequenceIdForSerialPeer(MasterProcedureEnv env) throws IOException, ReplicationException
updateLastPushedSequenceIdForSerialPeer
in class ModifyPeerProcedure
IOException
ReplicationException
protected boolean enablePeerBeforeFinish()
ModifyPeerProcedure
enablePeerBeforeFinish
in class ModifyPeerProcedure
protected ReplicationPeerConfig getNewPeerConfig()
getNewPeerConfig
in class ModifyPeerProcedure
protected void prePeerModification(MasterProcedureEnv env) throws IOException, ReplicationException
ModifyPeerProcedure
If an IOException is thrown then we will give up and mark the procedure as failed directly. If all checks passes then the procedure can not be rolled back any more.
prePeerModification
in class ModifyPeerProcedure
IOException
ReplicationException
protected void updatePeerStorage(MasterProcedureEnv env) throws ReplicationException
updatePeerStorage
in class ModifyPeerProcedure
ReplicationException
protected void postPeerModification(MasterProcedureEnv env) throws IOException, ReplicationException
ModifyPeerProcedure
Notice that, since we have already done the actual work, throwing IOException
here will
not fail this procedure, we will just ignore it and finish the procedure as suceeded. If
ReplicationException
is thrown we will retry since this usually means we fails to
update the peer storage.
postPeerModification
in class ModifyPeerProcedure
IOException
ReplicationException
protected void serializeStateData(ProcedureStateSerializer serializer) throws IOException
Procedure
serializeStateData
in class AbstractPeerProcedure<MasterProcedureProtos.PeerModificationState>
serializer
- stores the serializable stateIOException
protected void deserializeStateData(ProcedureStateSerializer serializer) throws IOException
Procedure
deserializeStateData
in class AbstractPeerProcedure<MasterProcedureProtos.PeerModificationState>
serializer
- contains the serialized stateIOException
Copyright © 2007–2019 Cloudera. All rights reserved.