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

Reply via email to