saintstack commented on a change in pull request #917: HBASE-23383 [hbck2]
`fixHoles` should queue assignment procedures for any regions its fixing
URL: https://github.com/apache/hbase/pull/917#discussion_r355686750
##########
File path:
hbase-server/src/main/java/org/apache/hadoop/hbase/master/assignment/AssignmentManager.java
##########
@@ -724,24 +731,57 @@ static int compare(TransitRegionStateProcedure left,
TransitRegionStateProcedure
return RegionInfo.COMPARATOR.compare(left.getRegion(), right.getRegion());
}
- private TransitRegionStateProcedure createAssignProcedure(RegionStateNode
regionNode,
- ServerName targetServer, boolean override) {
- TransitRegionStateProcedure proc;
+ private TransitRegionStateProcedure createAssignProcedure(final RegionInfo
regionInfo)
+ throws HBaseIOException {
+ return createAssignProcedure(regionInfo, null);
+ }
+
+ private TransitRegionStateProcedure createAssignProcedure(final RegionInfo
regionInfo,
+ final ServerName targetServer) throws HBaseIOException {
+ // TODO: should we use getRegionStateNode?
+ final RegionStateNode regionNode =
regionStates.getOrCreateRegionStateNode(regionInfo);
+ return createAssignProcedure(regionNode, targetServer, false);
+ }
+
+ /**
+ * Queue a new {@link TransitRegionStateProcedure} representing this
assignment request.
+ * @param regionNode the region to assign
+ * @param targetServer the target server for this assignment (optional)
+ * @param override when {@code true}, remove any existing procedure found on
{@code regionNode}
+ */
+ private TransitRegionStateProcedure createAssignProcedure(final
RegionStateNode regionNode,
+ final ServerName targetServer, final boolean override) throws
HBaseIOException {
+ final TransitRegionStateProcedure proc;
regionNode.lock();
try {
- if(override && regionNode.getProcedure() != null) {
+ if (override && regionNode.getProcedure() != null) {
regionNode.unsetProcedure(regionNode.getProcedure());
}
assert regionNode.getProcedure() == null;
- proc = TransitRegionStateProcedure.assign(getProcedureEnvironment(),
- regionNode.getRegionInfo(), targetServer);
+ preTransitCheck(regionNode, STATES_EXPECTED_ON_ASSIGN);
Review comment:
So this is new. There are states taht need to be added to
STATES_EXPECTED_ON_ASSIGN given the errors you see?
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
[email protected]
With regards,
Apache Git Services