public class RegionStates
extends java.lang.Object
Modifier and Type | Class and Description |
---|---|
static class |
RegionStates.RegionFailedOpen |
static class |
RegionStates.RegionStateNode
Current Region State.
|
static class |
RegionStates.ServerState
Server State.
|
static class |
RegionStates.ServerStateNode
State of Server; list of hosted regions, etc.
|
Modifier and Type | Field and Description |
---|---|
static org.apache.hadoop.hbase.master.assignment.RegionStates.RegionStateStampComparator |
REGION_STATE_STAMP_COMPARATOR |
protected static State[] |
STATES_EXPECTED_ON_CLOSE |
protected static State[] |
STATES_EXPECTED_ON_OPEN |
Constructor and Description |
---|
RegionStates() |
Modifier and Type | Method and Description |
---|---|
protected boolean |
addRegionInTransition(RegionStates.RegionStateNode regionNode,
RegionTransitionProcedure procedure) |
RegionStates.ServerStateNode |
addRegionToServer(RegionStates.RegionStateNode regionNode) |
RegionStates.RegionFailedOpen |
addToFailedOpen(RegionStates.RegionStateNode regionNode) |
void |
addToOfflineRegions(RegionStates.RegionStateNode regionNode) |
HRegionLocation |
checkReopened(HRegionLocation oldLoc)
Check whether the region has been reopened.
|
void |
clear() |
protected RegionStates.RegionStateNode |
createRegionStateNode(RegionInfo regionInfo) |
void |
deleteRegion(RegionInfo regionInfo) |
java.util.List<RegionInfo> |
getAssignedRegions() |
java.util.Map<TableName,java.util.Map<ServerName,java.util.List<RegionInfo>>> |
getAssignmentsByTable() |
java.util.Map<TableName,java.util.Map<ServerName,java.util.List<RegionInfo>>> |
getAssignmentsByTable(boolean forceByCluster)
This is an EXPENSIVE clone.
|
double |
getAverageLoad() |
RegionStates.RegionFailedOpen |
getFailedOpen(RegionInfo regionInfo) |
protected RegionStates.RegionStateNode |
getOrCreateRegionStateNode(RegionInfo regionInfo) |
RegionStates.ServerStateNode |
getOrCreateServer(ServerName serverName)
Be judicious calling this method.
|
java.util.Map<RegionInfo,ServerName> |
getRegionAssignments() |
java.util.Map<RegionState.State,java.util.List<RegionInfo>> |
getRegionByStateOfTable(TableName tableName) |
java.util.List<RegionState> |
getRegionFailedOpen() |
ServerName |
getRegionServerOfRegion(RegionInfo regionInfo) |
java.util.List<RegionStates.RegionStateNode> |
getRegionsInTransition() |
int |
getRegionsInTransitionCount()
Get the number of regions in transition.
|
java.util.SortedSet<RegionState> |
getRegionsInTransitionOrderedByTimestamp() |
java.util.List<RegionInfo> |
getRegionsOfTable(TableName table) |
java.util.List<RegionInfo> |
getRegionsOfTable(TableName table,
boolean offline) |
java.util.List<HRegionLocation> |
getRegionsOfTableForReopen(TableName tableName)
Get the regions to be reopened when modifying a table.
|
java.util.List<RegionState> |
getRegionsStateInTransition() |
RegionState |
getRegionState(RegionInfo regionInfo) |
RegionState |
getRegionState(java.lang.String encodedRegionName) |
protected RegionStates.RegionStateNode |
getRegionStateNode(RegionInfo regionInfo) |
java.util.ArrayList<RegionState> |
getRegionStates() |
RegionTransitionProcedure |
getRegionTransitionProcedure(RegionInfo hri) |
RegionState |
getRegionTransitionState(RegionInfo hri) |
protected RegionStates.ServerStateNode |
getServerNode(ServerName serverName) |
java.util.List<RegionInfo> |
getServerRegionInfoSet(ServerName serverName)
Returns the set of regions hosted by the specified server
|
java.util.Map<ServerName,java.util.List<RegionInfo>> |
getSnapShotOfAssignment(java.util.Collection<RegionInfo> regions) |
boolean |
hasRegionsInTransition() |
boolean |
hasTableRegionStates(TableName tableName) |
boolean |
isRegionInRegionStates(RegionInfo hri) |
boolean |
isRegionInState(RegionInfo regionInfo,
State... state) |
boolean |
isRegionInTransition(RegionInfo regionInfo) |
boolean |
isRegionOffline(RegionInfo regionInfo) |
boolean |
isRegionOnline(RegionInfo regionInfo) |
void |
logSplit(ServerName serverName)
Called after we've split all logs on a crashed Server.
|
void |
logSplitting(ServerName serverName)
Call this when we start log splitting for a crashed Server.
|
void |
metaLogSplit(ServerName serverName)
Called after we've split the meta logs on a crashed Server.
|
void |
metaLogSplitting(ServerName serverName)
Call this when we start meta log splitting a crashed Server.
|
static java.lang.String |
regionNamesToString(java.util.Collection<byte[]> regions) |
void |
removeFromFailedOpen(RegionInfo regionInfo) |
void |
removeFromOfflineRegions(RegionInfo regionInfo) |
RegionStates.ServerStateNode |
removeRegionFromServer(ServerName serverName,
RegionStates.RegionStateNode regionNode) |
protected void |
removeRegionInTransition(RegionStates.RegionStateNode regionNode,
RegionTransitionProcedure procedure) |
void |
removeServer(ServerName serverName) |
void |
updateRegionState(RegionInfo regionInfo,
State state) |
protected static final State[] STATES_EXPECTED_ON_OPEN
protected static final State[] STATES_EXPECTED_ON_CLOSE
public static final org.apache.hadoop.hbase.master.assignment.RegionStates.RegionStateStampComparator REGION_STATE_STAMP_COMPARATOR
public void clear()
public boolean isRegionInRegionStates(RegionInfo hri)
protected RegionStates.RegionStateNode createRegionStateNode(RegionInfo regionInfo)
protected RegionStates.RegionStateNode getOrCreateRegionStateNode(RegionInfo regionInfo)
protected RegionStates.RegionStateNode getRegionStateNode(RegionInfo regionInfo)
public void deleteRegion(RegionInfo regionInfo)
public java.util.ArrayList<RegionState> getRegionStates()
public RegionState getRegionState(RegionInfo regionInfo)
public RegionState getRegionState(java.lang.String encodedRegionName)
public boolean hasTableRegionStates(TableName tableName)
public java.util.List<RegionInfo> getRegionsOfTable(TableName table)
public java.util.List<HRegionLocation> getRegionsOfTableForReopen(TableName tableName)
openSeqNum
in the returned HRegionLocation is also used to indicate the
state of this region, positive means the region is in State#OPEN
, -1 means
State#OPENING
. And for regions in other states we do not need reopen them.public HRegionLocation checkReopened(HRegionLocation oldLoc)
HRegionLocation
is the
same with getRegionsOfTableForReopen(TableName)
.
For a region which is in State#OPEN
before, if the region state is changed or the open
seq num is changed, we can confirm that it has been reopened.
For a region which is in State#OPENING
before, usually it will be in State#OPEN
now and we will schedule a MRP to reopen it. But there are several exceptions:
State#OPEN
or State#OPENING
.State#OPENING
state and still on the same
server, then here we will still return a HRegionLocation
for it, just like
getRegionsOfTableForReopen(TableName)
.oldLoc
- the previous state/location of this regionHRegionLocation
which
means we still need to reopen the region.getRegionsOfTableForReopen(TableName)
public java.util.List<RegionInfo> getRegionsOfTable(TableName table, boolean offline)
public java.util.List<RegionInfo> getServerRegionInfoSet(ServerName serverName)
serverName
- the server we are interested inpublic void metaLogSplitting(ServerName serverName)
metaLogSplit(ServerName)
public void metaLogSplit(ServerName serverName)
metaLogSplitting(ServerName)
public void logSplitting(ServerName serverName)
logSplit(ServerName)
public void logSplit(ServerName serverName)
logSplitting(ServerName)
public void updateRegionState(RegionInfo regionInfo, State state)
public java.util.List<RegionInfo> getAssignedRegions()
public boolean isRegionInState(RegionInfo regionInfo, State... state)
public boolean isRegionOnline(RegionInfo regionInfo)
public boolean isRegionOffline(RegionInfo regionInfo)
public java.util.Map<ServerName,java.util.List<RegionInfo>> getSnapShotOfAssignment(java.util.Collection<RegionInfo> regions)
public java.util.Map<RegionInfo,ServerName> getRegionAssignments()
public java.util.Map<RegionState.State,java.util.List<RegionInfo>> getRegionByStateOfTable(TableName tableName)
public ServerName getRegionServerOfRegion(RegionInfo regionInfo)
public java.util.Map<TableName,java.util.Map<ServerName,java.util.List<RegionInfo>>> getAssignmentsByTable(boolean forceByCluster)
forceByCluster
- a flag to force to aggregate the server-load to the cluster levelpublic java.util.Map<TableName,java.util.Map<ServerName,java.util.List<RegionInfo>>> getAssignmentsByTable()
protected boolean addRegionInTransition(RegionStates.RegionStateNode regionNode, RegionTransitionProcedure procedure)
protected void removeRegionInTransition(RegionStates.RegionStateNode regionNode, RegionTransitionProcedure procedure)
public boolean hasRegionsInTransition()
public boolean isRegionInTransition(RegionInfo regionInfo)
public RegionTransitionProcedure getRegionTransitionProcedure(RegionInfo hri)
hri
, return it else null.public RegionState getRegionTransitionState(RegionInfo hri)
public java.util.List<RegionStates.RegionStateNode> getRegionsInTransition()
public int getRegionsInTransitionCount()
public java.util.List<RegionState> getRegionsStateInTransition()
public java.util.SortedSet<RegionState> getRegionsInTransitionOrderedByTimestamp()
public void addToOfflineRegions(RegionStates.RegionStateNode regionNode)
public void removeFromOfflineRegions(RegionInfo regionInfo)
public RegionStates.RegionFailedOpen addToFailedOpen(RegionStates.RegionStateNode regionNode)
public RegionStates.RegionFailedOpen getFailedOpen(RegionInfo regionInfo)
public void removeFromFailedOpen(RegionInfo regionInfo)
public java.util.List<RegionState> getRegionFailedOpen()
public RegionStates.ServerStateNode getOrCreateServer(ServerName serverName)
getServerNode(ServerName)
where we can.public void removeServer(ServerName serverName)
protected RegionStates.ServerStateNode getServerNode(ServerName serverName)
public double getAverageLoad()
public RegionStates.ServerStateNode addRegionToServer(RegionStates.RegionStateNode regionNode)
public RegionStates.ServerStateNode removeRegionFromServer(ServerName serverName, RegionStates.RegionStateNode regionNode)
public static java.lang.String regionNamesToString(java.util.Collection<byte[]> regions)