You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by ch...@apache.org on 2016/09/12 03:09:48 UTC

hbase git commit: HBASE-16607 Make NoncedRegionServerCallable extend CancellableRegionServerCallable

Repository: hbase
Updated Branches:
  refs/heads/master 2c3b0f2c0 -> c19d2cabb


HBASE-16607 Make NoncedRegionServerCallable extend CancellableRegionServerCallable


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

Branch: refs/heads/master
Commit: c19d2cabbd4c6e312e4926f72d348a5e554cd3dd
Parents: 2c3b0f2
Author: chenheng <ch...@apache.org>
Authored: Mon Sep 12 11:03:29 2016 +0800
Committer: chenheng <ch...@apache.org>
Committed: Mon Sep 12 11:03:29 2016 +0800

----------------------------------------------------------------------
 .../org/apache/hadoop/hbase/client/HTable.java  | 52 +++++++-------
 .../client/NoncedRegionServerCallable.java      | 74 ++------------------
 2 files changed, 31 insertions(+), 95 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hbase/blob/c19d2cab/hbase-client/src/main/java/org/apache/hadoop/hbase/client/HTable.java
----------------------------------------------------------------------
diff --git a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/HTable.java b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/HTable.java
index e98424c..0d1b156 100644
--- a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/HTable.java
+++ b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/HTable.java
@@ -630,17 +630,17 @@ public class HTable implements Table {
   public Result append(final Append append) throws IOException {
     checkHasFamilies(append);
     NoncedRegionServerCallable<Result> callable =
-        new NoncedRegionServerCallable<Result>(this.connection,
-        this.rpcControllerFactory, getName(), append.getRow()) {
-      @Override
-      protected Result call(HBaseRpcController controller) throws Exception {
-        MutateRequest request = RequestConverter.buildMutateRequest(
-          getLocation().getRegionInfo().getRegionName(), append, getNonceGroup(), getNonce());
-        MutateResponse response = getStub().mutate(controller, request);
-        if (!response.hasResult()) return null;
-        return ProtobufUtil.toResult(response.getResult(), controller.cellScanner());
-      }
-    };
+        new NoncedRegionServerCallable<Result>(this.connection, this.rpcControllerFactory,
+            getName(), append.getRow()) {
+          @Override
+          protected Result rpcCall() throws Exception {
+            MutateRequest request = RequestConverter.buildMutateRequest(
+              getLocation().getRegionInfo().getRegionName(), append, getNonceGroup(), getNonce());
+            MutateResponse response = getStub().mutate(getRpcController(), request);
+            if (!response.hasResult()) return null;
+            return ProtobufUtil.toResult(response.getResult(), getRpcControllerCellScanner());
+          }
+        };
     return rpcCallerFactory.<Result> newCaller(this.writeRpcTimeout).
         callWithRetries(callable, this.operationTimeout);
   }
@@ -652,16 +652,16 @@ public class HTable implements Table {
   public Result increment(final Increment increment) throws IOException {
     checkHasFamilies(increment);
     NoncedRegionServerCallable<Result> callable =
-        new NoncedRegionServerCallable<Result>(this.connection,
-        this.rpcControllerFactory, getName(), increment.getRow()) {
-      @Override
-      protected Result call(HBaseRpcController controller) throws Exception {
-        MutateRequest request = RequestConverter.buildMutateRequest(
-          getLocation().getRegionInfo().getRegionName(), increment, getNonceGroup(), getNonce());
-        MutateResponse response = getStub().mutate(controller, request);
-        // Should this check for null like append does?
-        return ProtobufUtil.toResult(response.getResult(), controller.cellScanner());
-      }
+      new NoncedRegionServerCallable<Result>(this.connection,
+      this.rpcControllerFactory, getName(), increment.getRow()) {
+        @Override
+        protected Result rpcCall() throws Exception {
+          MutateRequest request = RequestConverter.buildMutateRequest(
+            getLocation().getRegionInfo().getRegionName(), increment, getNonceGroup(), getNonce());
+          MutateResponse response = getStub().mutate(getRpcController(), request);
+          // Should this check for null like append does?
+          return ProtobufUtil.toResult(response.getResult(), getRpcControllerCellScanner());
+        }
     };
     return rpcCallerFactory.<Result> newCaller(writeRpcTimeout).callWithRetries(callable,
         this.operationTimeout);
@@ -701,12 +701,12 @@ public class HTable implements Table {
         new NoncedRegionServerCallable<Long>(this.connection, this.rpcControllerFactory, getName(),
             row) {
       @Override
-      protected Long call(HBaseRpcController controller) throws Exception {
+      protected Long rpcCall() throws Exception {
         MutateRequest request = RequestConverter.buildIncrementRequest(
-          getLocation().getRegionInfo().getRegionName(), row, family,
-          qualifier, amount, durability, getNonceGroup(), getNonce());
-        MutateResponse response = getStub().mutate(controller, request);
-        Result result = ProtobufUtil.toResult(response.getResult(), controller.cellScanner());
+            getLocation().getRegionInfo().getRegionName(), row, family,
+            qualifier, amount, durability, getNonceGroup(), getNonce());
+        MutateResponse response = getStub().mutate(getRpcController(), request);
+        Result result = ProtobufUtil.toResult(response.getResult(), getRpcControllerCellScanner());
         return Long.valueOf(Bytes.toLong(result.getValue(family, qualifier)));
       }
     };

http://git-wip-us.apache.org/repos/asf/hbase/blob/c19d2cab/hbase-client/src/main/java/org/apache/hadoop/hbase/client/NoncedRegionServerCallable.java
----------------------------------------------------------------------
diff --git a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/NoncedRegionServerCallable.java b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/NoncedRegionServerCallable.java
index 7c98861..7c01e21 100644
--- a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/NoncedRegionServerCallable.java
+++ b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/NoncedRegionServerCallable.java
@@ -18,15 +18,9 @@
 
 package org.apache.hadoop.hbase.client;
 
-import java.io.IOException;
-
-import org.apache.hadoop.hbase.ServerName;
 import org.apache.hadoop.hbase.TableName;
 import org.apache.hadoop.hbase.classification.InterfaceAudience;
-import org.apache.hadoop.hbase.ipc.HBaseRpcController;
 import org.apache.hadoop.hbase.ipc.RpcControllerFactory;
-import org.apache.hadoop.hbase.protobuf.ProtobufUtil;
-import org.apache.hadoop.hbase.protobuf.generated.ClientProtos.ClientService;
 
 /**
  * Implementations make an rpc call against a RegionService via a protobuf Service.
@@ -44,9 +38,7 @@ import org.apache.hadoop.hbase.protobuf.generated.ClientProtos.ClientService;
  * @param <T> the class that the ServerCallable handles
  */
 @InterfaceAudience.Private
-public abstract class NoncedRegionServerCallable<T> extends AbstractRegionServerCallable<T> {
-  private ClientService.BlockingInterface stub;
-  private final HBaseRpcController rpcController;
+public abstract class NoncedRegionServerCallable<T> extends CancellableRegionServerCallable<T> {
   private final long nonce;
 
   /**
@@ -54,69 +46,13 @@ public abstract class NoncedRegionServerCallable<T> extends AbstractRegionServer
    * @param tableName Table name to which <code>row</code> belongs.
    * @param row The row we want in <code>tableName</code>.
    */
-  public NoncedRegionServerCallable(Connection connection, RpcControllerFactory rpcControllerFactory,
-      TableName tableName, byte [] row) {
-    this(connection, rpcControllerFactory.newController(), tableName, row);
-  }
-
-  public NoncedRegionServerCallable(Connection connection, HBaseRpcController rpcController,
-      TableName tableName, byte [] row) {
-    super(connection, tableName, row);
-    this.rpcController = rpcController;
+  public NoncedRegionServerCallable(Connection connection,
+                                    RpcControllerFactory rpcControllerFactory,
+                                    TableName tableName, byte [] row) {
+    super(connection, tableName, row, rpcControllerFactory);
     this.nonce = getConnection().getNonceGenerator().newNonce();
   }
 
-  void setClientByServiceName(ServerName service) throws IOException {
-    this.setStub(getConnection().getClient(service));
-  }
-
-  /**
-   * @return Client Rpc protobuf communication stub
-   */
-  protected ClientService.BlockingInterface getStub() {
-    return this.stub;
-  }
-
-  /**
-   * Set the client protobuf communication stub
-   * @param stub to set
-   */
-  void setStub(final ClientService.BlockingInterface stub) {
-    this.stub = stub;
-  }
-
-  /**
-   * Override that changes Exception from {@link Exception} to {@link IOException}. It also does
-   * setup of an rpcController and calls through to the unimplemented
-   * call(PayloadCarryingRpcController) method; implement this method to add your rpc invocation.
-   */
-  @Override
-  public T call(int callTimeout) throws IOException {
-    if (this.rpcController != null) {
-      this.rpcController.reset();
-      this.rpcController.setPriority(tableName);
-      this.rpcController.setCallTimeout(callTimeout);
-    }
-    try {
-      return call(this.rpcController);
-    } catch (Exception e) {
-      throw ProtobufUtil.handleRemoteException(e);
-    }
-  }
-
-  /**
-   * Run RPC call.
-   * @param rpcController PayloadCarryingRpcController is a mouthful but it at a minimum is a
-   * facade on protobuf so we don't have to put protobuf everywhere; we can keep it behind this
-   * class.
-   * @throws Exception
-   */
-  protected abstract T call(HBaseRpcController rpcController) throws Exception;
-
-  public HBaseRpcController getRpcController() {
-    return this.rpcController;
-  }
-
   long getNonceGroup() {
     return getConnection().getNonceGenerator().getNonceGroup();
   }