Repository: hbase
Updated Branches:
  refs/heads/master 62c84115e -> b972839ca


HBASE-16844 Procedure V2: DispatchMergingRegionsProcedure to use base class 
StateMachineProcedure for abort and rollback (Stephen Yuan Jiang)


Project: http://git-wip-us.apache.org/repos/asf/hbase/repo
Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/b972839c
Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/b972839c
Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/b972839c

Branch: refs/heads/master
Commit: b972839ca159dc0f873a63e389b898270bf65a9b
Parents: 62c8411
Author: Stephen Yuan Jiang <syuanjiang...@gmail.com>
Authored: Fri Oct 14 14:09:35 2016 -0700
Committer: Stephen Yuan Jiang <syuanjiang...@gmail.com>
Committed: Fri Oct 14 14:09:35 2016 -0700

----------------------------------------------------------------------
 .../org/apache/hadoop/hbase/client/Admin.java   |  2 +-
 .../DispatchMergingRegionsProcedure.java        | 25 ++++++++++----------
 2 files changed, 14 insertions(+), 13 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hbase/blob/b972839c/hbase-client/src/main/java/org/apache/hadoop/hbase/client/Admin.java
----------------------------------------------------------------------
diff --git 
a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/Admin.java 
b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/Admin.java
index 0f66834..34c00ce 100644
--- a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/Admin.java
+++ b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/Admin.java
@@ -915,7 +915,7 @@ public interface Admin extends Abortable, Closeable {
    *          two adjacent regions
    * @throws IOException
    */
-  public Future<Void> mergeRegionsAsync(
+  Future<Void> mergeRegionsAsync(
       final byte[] nameOfRegionA,
       final byte[] nameOfRegionB,
       final boolean forcible) throws IOException;

http://git-wip-us.apache.org/repos/asf/hbase/blob/b972839c/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/DispatchMergingRegionsProcedure.java
----------------------------------------------------------------------
diff --git 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/DispatchMergingRegionsProcedure.java
 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/DispatchMergingRegionsProcedure.java
index 056c0f8..b1fd7ea 100644
--- 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/DispatchMergingRegionsProcedure.java
+++ 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/DispatchMergingRegionsProcedure.java
@@ -153,13 +153,13 @@ public class DispatchMergingRegionsProcedure
     try {
       switch (state) {
       case DISPATCH_MERGING_REGIONS_POST_OPERATION:
-        break; // nothing to rollback
       case DISPATCH_MERGING_REGIONS_DO_MERGE_IN_RS:
         String msg = this + " We are in the " + state + " state."
             + " It is complicated to rollback the merge operation that region 
server is working on."
             + " Rollback is not supported and we should let the merge 
operation to complete";
         LOG.warn(msg);
-        break;
+        // PONR
+        throw new UnsupportedOperationException(this + " unhandled state=" + 
state);
       case DISPATCH_MERGING_REGIONS_MOVE_REGION_TO_SAME_RS:
         break; // nothing to rollback
       case DISPATCH_MERGING_REGIONS_PRE_OPERATION:
@@ -193,18 +193,19 @@ public class DispatchMergingRegionsProcedure
     return DispatchMergingRegionsState.DISPATCH_MERGING_REGIONS_PREPARE;
   }
 
+  /*
+   * Check whether we are in the state that can be rollback
+   */
   @Override
-  protected void setNextState(DispatchMergingRegionsState state) {
-    if (aborted.get()) {
-      setAbortFailure("merge-table-regions", "abort requested");
-    } else {
-      super.setNextState(state);
+  protected boolean isRollbackSupported(final DispatchMergingRegionsState 
state) {
+    switch (state) {
+    case DISPATCH_MERGING_REGIONS_POST_OPERATION:
+    case DISPATCH_MERGING_REGIONS_DO_MERGE_IN_RS:
+        // It is not safe to rollback if we reach to these states.
+        return false;
+      default:
+        break;
     }
-  }
-
-  @Override
-  public boolean abort(final MasterProcedureEnv env) {
-    aborted.set(true);
     return true;
   }
 

Reply via email to