Repository: hbase
Updated Branches:
  refs/heads/branch-1 383089063 -> a3c29da0b


HBASE-16505 Pass deadline to HRegion operations

Signed-off-by: Michael Stack <st...@apache.org>


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

Branch: refs/heads/branch-1
Commit: a3c29da0b6c829a8c52012d50bdb81e9c07ceee3
Parents: 3830890
Author: Phil Yang <ud1...@gmail.com>
Authored: Mon Oct 10 18:38:50 2016 +0800
Committer: Michael Stack <st...@apache.org>
Committed: Wed Oct 12 12:17:38 2016 -0700

----------------------------------------------------------------------
 .../main/java/org/apache/hadoop/hbase/ipc/CallRunner.java    | 8 ++++++--
 .../java/org/apache/hadoop/hbase/ipc/RpcCallContext.java     | 7 +++++++
 .../src/main/java/org/apache/hadoop/hbase/ipc/RpcServer.java | 8 +++++++-
 3 files changed, 20 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hbase/blob/a3c29da0/hbase-server/src/main/java/org/apache/hadoop/hbase/ipc/CallRunner.java
----------------------------------------------------------------------
diff --git 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/ipc/CallRunner.java 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/ipc/CallRunner.java
index 5e91beb..1a9d8b2 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/ipc/CallRunner.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/ipc/CallRunner.java
@@ -26,6 +26,7 @@ import org.apache.hadoop.hbase.CellScanner;
 import org.apache.hadoop.hbase.HBaseInterfaceAudience;
 import org.apache.hadoop.hbase.classification.InterfaceAudience;
 import org.apache.hadoop.hbase.classification.InterfaceStability;
+import org.apache.hadoop.hbase.exceptions.TimeoutIOException;
 import org.apache.hadoop.hbase.ipc.RpcServer.Call;
 import org.apache.hadoop.hbase.monitoring.MonitoredRPCHandler;
 import org.apache.hadoop.hbase.util.Pair;
@@ -95,7 +96,7 @@ public class CallRunner {
       }
       call.startTime = System.currentTimeMillis();
       if (call.startTime > call.deadline) {
-        RpcServer.LOG.info("Drop timeout call: " + call);
+        RpcServer.LOG.warn("Drop timeout call: " + call);
         return;
       }
       this.status.setStatus("Setting up call");
@@ -121,7 +122,10 @@ public class CallRunner {
         }
         // make the call
         resultPair = this.rpcServer.call(call.service, call.md, call.param, 
call.cellScanner,
-          call.timestamp, this.status, call.startTime, call.timeout);
+            call.timestamp, this.status, call.startTime, call.timeout);
+      } catch (TimeoutIOException e){
+        RpcServer.LOG.warn("Can not complete this request in time, drop it: " 
+ call);
+        return;
       } catch (Throwable e) {
         RpcServer.LOG.debug(Thread.currentThread().getName() + ": " + 
call.toShortString(), e);
         errorThrowable = e;

http://git-wip-us.apache.org/repos/asf/hbase/blob/a3c29da0/hbase-server/src/main/java/org/apache/hadoop/hbase/ipc/RpcCallContext.java
----------------------------------------------------------------------
diff --git 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/ipc/RpcCallContext.java 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/ipc/RpcCallContext.java
index b08afc2..508b1e8 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/ipc/RpcCallContext.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/ipc/RpcCallContext.java
@@ -85,4 +85,11 @@ public interface RpcCallContext {
 
   long getResponseBlockSize();
   void incrementResponseBlockSize(long blockSize);
+
+  /**
+   * Return the deadline of this call. If we can not complete this call in 
time, we can throw a
+   * TimeoutIOException and RPCServer will drop it.
+   * @return The system timestamp of deadline.
+   */
+  long getDeadline();
 }

http://git-wip-us.apache.org/repos/asf/hbase/blob/a3c29da0/hbase-server/src/main/java/org/apache/hadoop/hbase/ipc/RpcServer.java
----------------------------------------------------------------------
diff --git 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/ipc/RpcServer.java 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/ipc/RpcServer.java
index 564639f..90a53bc 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/ipc/RpcServer.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/ipc/RpcServer.java
@@ -407,7 +407,8 @@ public class RpcServer implements RpcServerInterface, 
ConfigurationObserver {
       return "callId: " + this.id + " service: " + serviceName +
           " methodName: " + ((this.md != null) ? this.md.getName() : "n/a") +
           " size: " + 
StringUtils.TraditionalBinaryPrefix.long2String(this.size, "", 1) +
-          " connection: " + connection.toString();
+          " connection: " + connection.toString() +
+          " deadline: " + deadline;
     }
 
     String toTraceString() {
@@ -573,6 +574,11 @@ public class RpcServer implements RpcServerInterface, 
ConfigurationObserver {
       responseBlockSize += blockSize;
     }
 
+    @Override
+    public long getDeadline() {
+      return deadline;
+    }
+
     public synchronized void sendResponseIfReady() throws IOException {
       // set param null to reduce memory pressure
       this.param = null;

Reply via email to