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/10/30 09:37:01 UTC

hbase git commit: HBASE-21237 Use CompatRemoteProcedureResolver to dispatch open/close region requests to RS

Repository: hbase
Updated Branches:
  refs/heads/branch-2.1 422e98957 -> bddd488c3


HBASE-21237 Use CompatRemoteProcedureResolver to dispatch open/close region requests to RS


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

Branch: refs/heads/branch-2.1
Commit: bddd488c34557144c3692d88366511d3c301fbc7
Parents: 422e989
Author: Duo Zhang <zh...@apache.org>
Authored: Tue Oct 30 09:41:23 2018 +0800
Committer: Duo Zhang <zh...@apache.org>
Committed: Tue Oct 30 17:36:44 2018 +0800

----------------------------------------------------------------------
 .../master/procedure/RSProcedureDispatcher.java | 59 ++------------------
 .../assignment/TestAssignmentManager.java       | 20 ++++++-
 2 files changed, 24 insertions(+), 55 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hbase/blob/bddd488c/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/RSProcedureDispatcher.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/RSProcedureDispatcher.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/RSProcedureDispatcher.java
index 638f9d3..ba4737b 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/RSProcedureDispatcher.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/RSProcedureDispatcher.java
@@ -109,17 +109,10 @@ public class RSProcedureDispatcher
   protected void remoteDispatch(final ServerName serverName,
       final Set<RemoteProcedure> remoteProcedures) {
     final int rsVersion = master.getServerManager().getVersionNumber(serverName);
-    if (rsVersion >= RS_VERSION_WITH_EXEC_PROCS) {
-      LOG.trace("Using procedure batch rpc execution for serverName={} version={}", serverName,
-        rsVersion);
-      submitTask(new ExecuteProceduresRemoteCall(serverName, remoteProcedures));
-    } else if (rsVersion == 0 && !master.getServerManager().isServerOnline(serverName)) {
+    if (rsVersion == 0 && !master.getServerManager().isServerOnline(serverName)) {
       submitTask(new DeadRSRemoteCall(serverName, remoteProcedures));
     } else {
-      LOG.info(String.format(
-        "Fallback to compat rpc execution for serverName=%s version=%s",
-        serverName, rsVersion));
-      submitTask(new CompatRemoteProcedureResolver(serverName, remoteProcedures));
+      submitTask(new ExecuteProceduresRemoteCall(serverName, remoteProcedures));
     }
   }
 
@@ -293,7 +286,7 @@ public class RSProcedureDispatcher
       implements RemoteProcedureResolver {
     protected final Set<RemoteProcedure> remoteProcedures;
 
-    private ExecuteProceduresRequest.Builder request = null;
+    protected ExecuteProceduresRequest.Builder request = null;
 
     public ExecuteProceduresRemoteCall(final ServerName serverName,
         final Set<RemoteProcedure> remoteProcedures) {
@@ -325,14 +318,14 @@ public class RSProcedureDispatcher
     @Override
     public void dispatchOpenRequests(final MasterProcedureEnv env,
         final List<RegionOpenOperation> operations) {
-      request.addOpenRegion(buildOpenRegionRequest(env, getServerName(), operations));
+      submitTask(new OpenRegionRemoteCall(getServerName(), operations));
     }
 
     @Override
     public void dispatchCloseRequests(final MasterProcedureEnv env,
         final List<RegionCloseOperation> operations) {
       for (RegionCloseOperation op: operations) {
-        request.addCloseRegion(op.buildCloseRegionRequest(getServerName()));
+        submitTask(new CloseRegionRemoteCall(getServerName(), op));
       }
     }
 
@@ -357,7 +350,7 @@ public class RSProcedureDispatcher
     }
   }
 
-  private static OpenRegionRequest buildOpenRegionRequest(final MasterProcedureEnv env,
+  protected static OpenRegionRequest buildOpenRegionRequest(final MasterProcedureEnv env,
       final ServerName serverName, final List<RegionOpenOperation> operations) {
     final OpenRegionRequest.Builder builder = OpenRegionRequest.newBuilder();
     builder.setServerStartCode(serverName.getStartcode());
@@ -469,46 +462,6 @@ public class RSProcedureDispatcher
     }
   }
 
-  /**
-   * Compatibility class to open and close regions using old endpoints (openRegion/closeRegion) in
-   * {@link AdminService}.
-   */
-  protected class CompatRemoteProcedureResolver implements Callable<Void>, RemoteProcedureResolver {
-    private final Set<RemoteProcedure> operations;
-    private final ServerName serverName;
-
-    public CompatRemoteProcedureResolver(final ServerName serverName,
-        final Set<RemoteProcedure> operations) {
-      this.serverName = serverName;
-      this.operations = operations;
-    }
-
-    @Override
-    public Void call() {
-      splitAndResolveOperation(serverName, operations, this);
-      return null;
-    }
-
-    @Override
-    public void dispatchOpenRequests(final MasterProcedureEnv env,
-        final List<RegionOpenOperation> operations) {
-      submitTask(new OpenRegionRemoteCall(serverName, operations));
-    }
-
-    @Override
-    public void dispatchCloseRequests(final MasterProcedureEnv env,
-        final List<RegionCloseOperation> operations) {
-      for (RegionCloseOperation op: operations) {
-        submitTask(new CloseRegionRemoteCall(serverName, op));
-      }
-    }
-
-    @Override
-    public void dispatchServerOperations(MasterProcedureEnv env, List<ServerOperation> operations) {
-      throw new UnsupportedOperationException();
-    }
-  }
-
   // ==========================================================================
   //  RPC Messages
   //  - ServerOperation: refreshConfig, grant, revoke, ... (TODO)

http://git-wip-us.apache.org/repos/asf/hbase/blob/bddd488c/hbase-server/src/test/java/org/apache/hadoop/hbase/master/assignment/TestAssignmentManager.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/master/assignment/TestAssignmentManager.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/assignment/TestAssignmentManager.java
index 443bbab..81dac8e 100644
--- a/hbase-server/src/test/java/org/apache/hadoop/hbase/master/assignment/TestAssignmentManager.java
+++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/assignment/TestAssignmentManager.java
@@ -25,6 +25,7 @@ import static org.junit.Assert.fail;
 import java.io.IOException;
 import java.io.InterruptedIOException;
 import java.net.SocketTimeoutException;
+import java.util.List;
 import java.util.NavigableMap;
 import java.util.Random;
 import java.util.Set;
@@ -54,6 +55,8 @@ import org.apache.hadoop.hbase.master.procedure.MasterProcedureConstants;
 import org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv;
 import org.apache.hadoop.hbase.master.procedure.ProcedureSyncWait;
 import org.apache.hadoop.hbase.master.procedure.RSProcedureDispatcher;
+import org.apache.hadoop.hbase.master.procedure.RSProcedureDispatcher.RegionCloseOperation;
+import org.apache.hadoop.hbase.master.procedure.RSProcedureDispatcher.RegionOpenOperation;
 import org.apache.hadoop.hbase.procedure2.Procedure;
 import org.apache.hadoop.hbase.procedure2.ProcedureMetrics;
 import org.apache.hadoop.hbase.procedure2.ProcedureTestingUtility;
@@ -829,12 +832,25 @@ public class TestAssignmentManager {
     }
 
     private class MockRemoteCall extends ExecuteProceduresRemoteCall {
-      public MockRemoteCall(final ServerName serverName,
-          final Set<RemoteProcedure> operations) {
+      public MockRemoteCall(final ServerName serverName, final Set<RemoteProcedure> operations) {
         super(serverName, operations);
       }
 
       @Override
+      public void dispatchOpenRequests(MasterProcedureEnv env,
+          List<RegionOpenOperation> operations) {
+        request.addOpenRegion(buildOpenRegionRequest(env, getServerName(), operations));
+      }
+
+      @Override
+      public void dispatchCloseRequests(MasterProcedureEnv env,
+          List<RegionCloseOperation> operations) {
+        for (RegionCloseOperation op : operations) {
+          request.addCloseRegion(op.buildCloseRegionRequest(getServerName()));
+        }
+      }
+
+      @Override
       protected ExecuteProceduresResponse sendRequest(final ServerName serverName,
           final ExecuteProceduresRequest request) throws IOException {
         return mockRsExec.sendRequest(serverName, request);