public class AssignmentManager extends java.lang.Object implements ServerListener
RegionStates
.RegionStateStore
.Modifier and Type | Class and Description |
---|---|
static class |
AssignmentManager.RegionInTransitionStat |
Modifier and Type | Field and Description |
---|---|
static java.lang.String |
ASSIGN_DISPATCH_WAIT_MSEC_CONF_KEY |
static java.lang.String |
ASSIGN_DISPATCH_WAITQ_MAX_CONF_KEY |
static java.lang.String |
ASSIGN_MAX_ATTEMPTS |
static java.lang.String |
BOOTSTRAP_THREAD_POOL_SIZE_CONF_KEY |
static java.lang.String |
METRICS_RIT_STUCK_WARNING_THRESHOLD
Region in Transition metrics threshold time
|
static java.lang.String |
RIT_CHORE_INTERVAL_MSEC_CONF_KEY |
Constructor and Description |
---|
AssignmentManager(MasterServices master) |
AssignmentManager(MasterServices master,
RegionStateStore stateStore) |
Modifier and Type | Method and Description |
---|---|
protected boolean |
addRegionInTransition(RegionStates.RegionStateNode regionNode,
RegionTransitionProcedure procedure) |
void |
assign(RegionInfo regionInfo) |
void |
assign(RegionInfo regionInfo,
ServerName sn) |
void |
checkIfShouldMoveSystemRegionAsync()
Start a new thread to check if there are region servers whose versions are higher than others.
|
AssignmentManager.RegionInTransitionStat |
computeRegionInTransitionStat() |
AssignProcedure |
createAssignProcedure(RegionInfo regionInfo) |
AssignProcedure |
createAssignProcedure(RegionInfo regionInfo,
ServerName targetServer) |
AssignProcedure[] |
createAssignProcedures(java.util.List<RegionInfo> hris)
Create an array of AssignProcedures w/o specifying a target server.
|
MergeTableRegionsProcedure |
createMergeProcedure(RegionInfo regionToMergeA,
RegionInfo regionToMergeB) |
AssignProcedure[] |
createRoundRobinAssignProcedures(java.util.List<RegionInfo> hris)
Create round-robin assigns.
|
SplitTableRegionProcedure |
createSplitProcedure(RegionInfo regionToSplit,
byte[] splitKey) |
UnassignProcedure[] |
createUnassignProcedures(TableName tableName)
Called by things like DisableTableProcedure to get a list of UnassignProcedure
to unassign the regions of the table.
|
void |
deleteTable(TableName tableName)
Delete the region states.
|
java.util.List<RegionInfo> |
getAssignedRegions() |
protected int |
getAssignMaxAttempts() |
MetricsAssignmentManager |
getAssignmentManagerMetrics() |
Configuration |
getConfiguration() |
java.util.List<ServerName> |
getExcludedServersForSystemTable()
Get a list of servers that this region cannot be assigned to.
|
ProcedureEvent |
getFailoverCleanupEvent() |
java.util.List<ServerName> |
getFavoredNodes(RegionInfo regionInfo) |
RegionInfo |
getMetaRegionFromName(byte[] regionName) |
java.util.Set<RegionInfo> |
getMetaRegionSet() |
int |
getNumRegionsOpened() |
RegionInfo |
getRegionInfo(byte[] regionName) |
RegionNormalizer |
getRegionNormalizer() |
java.util.List<RegionStates.RegionStateNode> |
getRegionsInTransition() |
RegionStates |
getRegionStates() |
RegionStateStore |
getRegionStateStore() |
<any> |
getReopenStatus(TableName tableName)
Used by the client (via master) to identify if all regions have the schema updates
|
java.util.Map<ServerName,java.util.List<RegionInfo>> |
getSnapShotOfAssignment(java.util.Collection<RegionInfo> regions) |
void |
handleMetaRITOnCrashedServer(ServerName serverName)
Handle RIT of meta region against crashed server.
|
boolean |
hasRegionsInTransition() |
boolean |
isCarryingMeta(ServerName serverName) |
boolean |
isFailoverCleanupDone()
Used by ServerCrashProcedure to make sure AssignmentManager has completed
the failover cleanup before re-assigning regions of dead servers.
|
boolean |
isMetaInitialized() |
boolean |
isMetaLoaded() |
boolean |
isMetaRegionInTransition() |
boolean |
isRunning() |
boolean |
isTableDisabled(TableName tableName) |
boolean |
isTableEnabled(TableName tableName) |
void |
joinCluster() |
void |
markRegionAsClosed(RegionStates.RegionStateNode regionNode) |
void |
markRegionAsClosing(RegionStates.RegionStateNode regionNode) |
void |
markRegionAsMerged(RegionInfo child,
ServerName serverName,
RegionInfo mother,
RegionInfo father)
When called here, the merge has happened.
|
void |
markRegionAsOpened(RegionStates.RegionStateNode regionNode) |
void |
markRegionAsOpening(RegionStates.RegionStateNode regionNode) |
void |
markRegionAsSplit(RegionInfo parent,
ServerName serverName,
RegionInfo daughterA,
RegionInfo daughterB) |
void |
move(RegionInfo regionInfo) |
java.util.concurrent.Future<byte[]> |
moveAsync(RegionPlan regionPlan) |
void |
offlineRegion(RegionInfo regionInfo) |
void |
onlineRegion(RegionInfo regionInfo,
ServerName serverName) |
protected void |
queueAssign(RegionStates.RegionStateNode regionNode)
Add the assign operation to the assignment queue.
|
void |
registerListener(AssignmentListener listener)
Add the listener to the notification list.
|
protected void |
removeRegionInTransition(RegionStates.RegionStateNode regionNode,
RegionTransitionProcedure procedure) |
void |
reportOnlineRegions(ServerName serverName,
java.util.Set<byte[]> regionNames)
the master will call this method when the RS send the regionServerReport().
|
ReportRegionStateTransitionResponse |
reportRegionStateTransition(ReportRegionStateTransitionRequest req) |
void |
serverAdded(ServerName serverName)
The server has joined the cluster.
|
void |
serverRemoved(ServerName serverName)
The server was removed from the cluster.
|
void |
setFailoverCleanupDone(boolean b)
Used by ServerCrashProcedure tests verify the ability to suspend the
execution of the ServerCrashProcedure.
|
void |
setRegionNormalizer(RegionNormalizer normalizer) |
void |
setRegionStateListener(RegionStateListener listener) |
void |
start() |
void |
stop() |
void |
submitServerCrash(ServerName serverName,
boolean shouldSplitWal) |
void |
unassign(RegionInfo regionInfo) |
void |
unassign(RegionInfo regionInfo,
boolean forceNewPlan) |
void |
undoRegionAsClosing(RegionStates.RegionStateNode regionNode) |
void |
undoRegionAsOpening(RegionStates.RegionStateNode regionNode) |
boolean |
unregisterListener(AssignmentListener listener)
Remove the listener from the notification list.
|
boolean |
waitForAssignment(RegionInfo regionInfo) |
boolean |
waitForAssignment(RegionInfo regionInfo,
long timeout) |
boolean |
waitMetaInitialized(Procedure proc) |
boolean |
waitMetaInitialized(Procedure proc,
RegionInfo regionInfo) |
boolean |
waitMetaLoaded(Procedure proc) |
protected boolean |
waitServerReportEvent(ServerName serverName,
Procedure proc) |
protected void |
wakeMetaLoadedEvent() |
protected void |
wakeServerReportEvent(RegionStates.ServerStateNode serverNode) |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
waiting
public static final java.lang.String BOOTSTRAP_THREAD_POOL_SIZE_CONF_KEY
public static final java.lang.String ASSIGN_DISPATCH_WAIT_MSEC_CONF_KEY
public static final java.lang.String ASSIGN_DISPATCH_WAITQ_MAX_CONF_KEY
public static final java.lang.String RIT_CHORE_INTERVAL_MSEC_CONF_KEY
public static final java.lang.String ASSIGN_MAX_ATTEMPTS
public static final java.lang.String METRICS_RIT_STUCK_WARNING_THRESHOLD
public AssignmentManager(MasterServices master)
public AssignmentManager(MasterServices master, RegionStateStore stateStore)
public void start() throws java.io.IOException
java.io.IOException
public void stop()
public boolean isRunning()
public Configuration getConfiguration()
public MetricsAssignmentManager getAssignmentManagerMetrics()
protected int getAssignMaxAttempts()
public void registerListener(AssignmentListener listener)
listener
- The AssignmentListener to registerpublic boolean unregisterListener(AssignmentListener listener)
listener
- The AssignmentListener to unregisterpublic void setRegionStateListener(RegionStateListener listener)
public void setRegionNormalizer(RegionNormalizer normalizer)
public RegionNormalizer getRegionNormalizer()
public RegionStates getRegionStates()
public RegionStateStore getRegionStateStore()
public java.util.List<ServerName> getFavoredNodes(RegionInfo regionInfo)
public boolean isTableEnabled(TableName tableName)
public boolean isTableDisabled(TableName tableName)
public RegionInfo getMetaRegionFromName(byte[] regionName)
public boolean isCarryingMeta(ServerName serverName)
public java.util.Set<RegionInfo> getMetaRegionSet()
public boolean isMetaInitialized()
public boolean isMetaRegionInTransition()
public boolean waitMetaInitialized(Procedure proc)
public boolean waitMetaInitialized(Procedure proc, RegionInfo regionInfo)
public boolean waitMetaLoaded(Procedure proc)
protected void wakeMetaLoadedEvent()
public boolean isMetaLoaded()
public void checkIfShouldMoveSystemRegionAsync()
This method is called when a new RegionServer is added to cluster only.
public void assign(RegionInfo regionInfo, ServerName sn) throws java.io.IOException
java.io.IOException
public void assign(RegionInfo regionInfo) throws java.io.IOException
java.io.IOException
public void unassign(RegionInfo regionInfo) throws java.io.IOException
java.io.IOException
public void unassign(RegionInfo regionInfo, boolean forceNewPlan) throws java.io.IOException
java.io.IOException
public void move(RegionInfo regionInfo) throws java.io.IOException
java.io.IOException
public java.util.concurrent.Future<byte[]> moveAsync(RegionPlan regionPlan) throws HBaseIOException
HBaseIOException
public boolean waitForAssignment(RegionInfo regionInfo) throws java.io.IOException
java.io.IOException
public boolean waitForAssignment(RegionInfo regionInfo, long timeout) throws java.io.IOException
java.io.IOException
public AssignProcedure[] createRoundRobinAssignProcedures(java.util.List<RegionInfo> hris)
hris
and a call
to the balancer to populate the assigns with targets chosen using round-robin (default
balancer scheme). If at assign-time, the target chosen is no longer up, thats fine,
the AssignProcedure will ask the balancer for a new target, and so on.public AssignProcedure[] createAssignProcedures(java.util.List<RegionInfo> hris)
ServerCrashProcedure
assigning regions on a server that has crashed (SCP is
also used across a cluster-restart just-in-case to ensure we do cleanup of any old WALs or
server processes).public UnassignProcedure[] createUnassignProcedures(TableName tableName)
public AssignProcedure createAssignProcedure(RegionInfo regionInfo)
public AssignProcedure createAssignProcedure(RegionInfo regionInfo, ServerName targetServer)
public SplitTableRegionProcedure createSplitProcedure(RegionInfo regionToSplit, byte[] splitKey) throws java.io.IOException
java.io.IOException
public MergeTableRegionsProcedure createMergeProcedure(RegionInfo regionToMergeA, RegionInfo regionToMergeB) throws java.io.IOException
java.io.IOException
public void deleteTable(TableName tableName) throws java.io.IOException
java.io.IOException
public ReportRegionStateTransitionResponse reportRegionStateTransition(ReportRegionStateTransitionRequest req) throws PleaseHoldException
PleaseHoldException
public void reportOnlineRegions(ServerName serverName, java.util.Set<byte[]> regionNames) throws YouAreDeadException
YouAreDeadException
protected boolean waitServerReportEvent(ServerName serverName, Procedure proc)
protected void wakeServerReportEvent(RegionStates.ServerStateNode serverNode)
public AssignmentManager.RegionInTransitionStat computeRegionInTransitionStat()
public void joinCluster() throws java.io.IOException
java.io.IOException
public boolean isFailoverCleanupDone()
public void setFailoverCleanupDone(boolean b)
public ProcedureEvent getFailoverCleanupEvent()
public int getNumRegionsOpened()
public void submitServerCrash(ServerName serverName, boolean shouldSplitWal)
public void offlineRegion(RegionInfo regionInfo)
public void onlineRegion(RegionInfo regionInfo, ServerName serverName)
public java.util.Map<ServerName,java.util.List<RegionInfo>> getSnapShotOfAssignment(java.util.Collection<RegionInfo> regions)
public <any> getReopenStatus(TableName tableName)
tableName
- java.io.IOException
protected boolean addRegionInTransition(RegionStates.RegionStateNode regionNode, RegionTransitionProcedure procedure)
protected void removeRegionInTransition(RegionStates.RegionStateNode regionNode, RegionTransitionProcedure procedure)
public boolean hasRegionsInTransition()
public java.util.List<RegionStates.RegionStateNode> getRegionsInTransition()
public java.util.List<RegionInfo> getAssignedRegions()
public RegionInfo getRegionInfo(byte[] regionName)
public void markRegionAsOpening(RegionStates.RegionStateNode regionNode) throws java.io.IOException
java.io.IOException
public void undoRegionAsOpening(RegionStates.RegionStateNode regionNode)
public void markRegionAsOpened(RegionStates.RegionStateNode regionNode) throws java.io.IOException
java.io.IOException
public void markRegionAsClosing(RegionStates.RegionStateNode regionNode) throws java.io.IOException
java.io.IOException
public void undoRegionAsClosing(RegionStates.RegionStateNode regionNode)
public void markRegionAsClosed(RegionStates.RegionStateNode regionNode) throws java.io.IOException
java.io.IOException
public void markRegionAsSplit(RegionInfo parent, ServerName serverName, RegionInfo daughterA, RegionInfo daughterB) throws java.io.IOException
java.io.IOException
public void markRegionAsMerged(RegionInfo child, ServerName serverName, RegionInfo mother, RegionInfo father) throws java.io.IOException
java.io.IOException
protected void queueAssign(RegionStates.RegionStateNode regionNode)
public java.util.List<ServerName> getExcludedServersForSystemTable()
public void serverAdded(ServerName serverName)
ServerListener
serverAdded
in interface ServerListener
serverName
- The remote servers name.public void serverRemoved(ServerName serverName)
ServerListener
serverRemoved
in interface ServerListener
serverName
- The remote servers name.public void handleMetaRITOnCrashedServer(ServerName serverName)
serverName
- Server that has already crashed