You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by zh...@apache.org on 2018/05/31 12:50:57 UTC

hbase git commit: HBASE-20660 Reopen regions using ReopenTableRegionsProcedure

Repository: hbase
Updated Branches:
  refs/heads/HBASE-19064 1f3e50fce -> 34b4dd2ef


HBASE-20660 Reopen regions using ReopenTableRegionsProcedure


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

Branch: refs/heads/HBASE-19064
Commit: 34b4dd2ef28de16ad495d5b991fcb008c8225dad
Parents: 1f3e50f
Author: zhangduo <zh...@apache.org>
Authored: Thu May 31 09:53:44 2018 +0800
Committer: zhangduo <zh...@apache.org>
Committed: Thu May 31 20:39:34 2018 +0800

----------------------------------------------------------------------
 ...ransitPeerSyncReplicationStateProcedure.java | 24 ++++++--------------
 1 file changed, 7 insertions(+), 17 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hbase/blob/34b4dd2e/hbase-server/src/main/java/org/apache/hadoop/hbase/master/replication/TransitPeerSyncReplicationStateProcedure.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/replication/TransitPeerSyncReplicationStateProcedure.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/replication/TransitPeerSyncReplicationStateProcedure.java
index 81ee6b6..66f67dd 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/replication/TransitPeerSyncReplicationStateProcedure.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/replication/TransitPeerSyncReplicationStateProcedure.java
@@ -18,16 +18,14 @@
 package org.apache.hadoop.hbase.master.replication;
 
 import java.io.IOException;
-import java.util.List;
-import java.util.stream.Collectors;
 import org.apache.hadoop.fs.FileSystem;
 import org.apache.hadoop.fs.Path;
 import org.apache.hadoop.hbase.DoNotRetryIOException;
-import org.apache.hadoop.hbase.client.RegionInfo;
 import org.apache.hadoop.hbase.client.replication.ReplicationPeerConfigUtil;
 import org.apache.hadoop.hbase.master.MasterCoprocessorHost;
 import org.apache.hadoop.hbase.master.MasterFileSystem;
 import org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv;
+import org.apache.hadoop.hbase.master.procedure.ReopenTableRegionsProcedure;
 import org.apache.hadoop.hbase.procedure2.ProcedureStateSerializer;
 import org.apache.hadoop.hbase.procedure2.ProcedureSuspendedException;
 import org.apache.hadoop.hbase.procedure2.ProcedureYieldException;
@@ -141,11 +139,10 @@ public class TransitPeerSyncReplicationStateProcedure
     }
   }
 
-  private List<RegionInfo> getRegionsToReopen(MasterProcedureEnv env) {
-    return env.getReplicationPeerManager().getPeerConfig(peerId).get().getTableCFsMap().keySet()
-      .stream()
-      .flatMap(tn -> env.getAssignmentManager().getRegionStates().getRegionsOfTable(tn).stream())
-      .collect(Collectors.toList());
+  private void reopenRegions(MasterProcedureEnv env) {
+    addChildProcedure(
+      env.getReplicationPeerManager().getPeerConfig(peerId).get().getTableCFsMap().keySet().stream()
+        .map(ReopenTableRegionsProcedure::new).toArray(ReopenTableRegionsProcedure[]::new));
   }
 
   private void createDirForRemoteWAL(MasterProcedureEnv env)
@@ -190,7 +187,7 @@ public class TransitPeerSyncReplicationStateProcedure
   }
 
   private void replayRemoteWAL() {
-    addChildProcedure(new RecoverStandbyProcedure[] { new RecoverStandbyProcedure(peerId) });
+    addChildProcedure(new RecoverStandbyProcedure(peerId));
   }
 
   @Override
@@ -252,14 +249,7 @@ public class TransitPeerSyncReplicationStateProcedure
           : PeerSyncReplicationStateTransitionState.TRANSIT_PEER_NEW_SYNC_REPLICATION_STATE);
         return Flow.HAS_MORE_STATE;
       case REOPEN_ALL_REGIONS_IN_PEER:
-        try {
-          addChildProcedure(
-            env.getAssignmentManager().createReopenProcedures(getRegionsToReopen(env)));
-        } catch (IOException e) {
-          LOG.warn("Failed to schedule region reopen for peer {} when starting transiting sync " +
-            "replication peer state from {} to {}, retry", peerId, fromState, toState, e);
-          throw new ProcedureYieldException();
-        }
+        reopenRegions(env);
         setNextState(
           PeerSyncReplicationStateTransitionState.TRANSIT_PEER_NEW_SYNC_REPLICATION_STATE);
         return Flow.HAS_MORE_STATE;