This is an automated email from the ASF dual-hosted git repository.

apurtell pushed a commit to branch branch-1.3
in repository https://gitbox.apache.org/repos/asf/hbase.git


The following commit(s) were added to refs/heads/branch-1.3 by this push:
     new 2f01e98  HBASE-22935 Fix false warn of stuck MonitoredRPCHandler 
MonitoredTask
2f01e98 is described below

commit 2f01e98386d0aaf40c1864f69feb71213cd3fbdf
Author: David Manning <[email protected]>
AuthorDate: Tue Aug 27 16:58:02 2019 -0700

    HBASE-22935 Fix false warn of stuck MonitoredRPCHandler MonitoredTask
    
    Signed-off-by: Andrew Purtell <[email protected]>
    
    Conflicts:
        
hbase-server/src/test/java/org/apache/hadoop/hbase/monitoring/TestTaskMonitor.java
---
 .../hbase/monitoring/MonitoredRPCHandlerImpl.java  |  4 ++-
 .../hadoop/hbase/monitoring/TestTaskMonitor.java   | 35 ++++++++++++----------
 2 files changed, 23 insertions(+), 16 deletions(-)

diff --git 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/monitoring/MonitoredRPCHandlerImpl.java
 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/monitoring/MonitoredRPCHandlerImpl.java
index 08c8c9f..133bfb5 100644
--- 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/monitoring/MonitoredRPCHandlerImpl.java
+++ 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/monitoring/MonitoredRPCHandlerImpl.java
@@ -187,7 +187,9 @@ public class MonitoredRPCHandlerImpl extends 
MonitoredTaskImpl
       long queueTime) {
     this.methodName = methodName;
     this.params = params;
-    this.rpcStartTime = System.currentTimeMillis();
+    long now = System.currentTimeMillis();
+    this.rpcStartTime = now;
+    setWarnTime(now);
     this.rpcQueueTime = queueTime;
     this.state = State.RUNNING;
   }
diff --git 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/monitoring/TestTaskMonitor.java
 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/monitoring/TestTaskMonitor.java
index 3734530..8604a68 100644
--- 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/monitoring/TestTaskMonitor.java
+++ 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/monitoring/TestTaskMonitor.java
@@ -104,7 +104,27 @@ public class TestTaskMonitor {
     // Make sure we culled the earlier tasks, not later
     // (i.e. tasks 0 through 9 should have been deleted)
     assertEquals("task 10", tm.getTasks().get(0).getDescription());
+    tm.shutdown();
+  }
 
+  @Test
+  public void testWarnStuckTasks() throws Exception {
+    final int RPC_WARN_TIME = 1500;
+    final int MONITOR_INTERVAL = 500;
+    Configuration conf = new Configuration();
+    conf.setLong(TaskMonitor.RPC_WARN_TIME_KEY, RPC_WARN_TIME);
+    conf.setLong(TaskMonitor.MONITOR_INTERVAL_KEY, MONITOR_INTERVAL);
+    final TaskMonitor tm = new TaskMonitor(conf);
+    MonitoredRPCHandler t = tm.createRPCStatus("test task");
+    long beforeSetRPC = EnvironmentEdgeManager.currentTime();
+    assertTrue("Validating initialization assumption", t.getWarnTime() <= 
beforeSetRPC);
+    Thread.sleep(MONITOR_INTERVAL * 2);
+    t.setRPC("testMethod", new Object[0], beforeSetRPC);
+    long afterSetRPC = EnvironmentEdgeManager.currentTime();
+    Thread.sleep(MONITOR_INTERVAL * 2);
+    assertTrue("Validating no warn after starting RPC", t.getWarnTime() <= 
afterSetRPC);
+    Thread.sleep(MONITOR_INTERVAL * 2);
+    assertTrue("Validating warn after RPC_WARN_TIME", t.getWarnTime() > 
afterSetRPC);
     tm.shutdown();
   }
 
@@ -134,20 +154,5 @@ public class TestTaskMonitor {
     tm.shutdown();
   }
 
-  @Test
-  public void testWarnStuckTasks() throws Exception {
-    final int INTERVAL = 1000;
-    Configuration conf = new Configuration();
-    conf.setLong(TaskMonitor.RPC_WARN_TIME_KEY, INTERVAL);
-    conf.setLong(TaskMonitor.MONITOR_INTERVAL_KEY, INTERVAL);
-    final TaskMonitor tm = new TaskMonitor(conf);
-    MonitoredRPCHandler t = tm.createRPCStatus("test task");
-    long then = EnvironmentEdgeManager.currentTime();
-    t.setRPC("testMethod", new Object[0], then);
-    Thread.sleep(INTERVAL * 2);
-    assertTrue("We did not warn", t.getWarnTime() > then);
-    tm.shutdown();
-  }
-
 }
 

Reply via email to