You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by ap...@apache.org on 2019/08/28 01:22:03 UTC
[hbase] branch master updated: HBASE-22935 Fix false warn of stuck
MonitoredRPCHandler MonitoredTask
This is an automated email from the ASF dual-hosted git repository.
apurtell pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/hbase.git
The following commit(s) were added to refs/heads/master by this push:
new f2425c7 HBASE-22935 Fix false warn of stuck MonitoredRPCHandler MonitoredTask
f2425c7 is described below
commit f2425c74a98c3b21181bb91a5c13265d1ea0c9a2
Author: David Manning <da...@salesforce.com>
AuthorDate: Tue Aug 27 16:58:02 2019 -0700
HBASE-22935 Fix false warn of stuck MonitoredRPCHandler MonitoredTask
Signed-off-by: Andrew Purtell <ap...@apache.org>
---
.../hbase/monitoring/MonitoredRPCHandlerImpl.java | 4 +++-
.../hadoop/hbase/monitoring/TestTaskMonitor.java | 20 +++++++++++++-------
2 files changed, 16 insertions(+), 8 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 1b6ad91..d194d10 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
@@ -196,7 +196,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 38c0308..1145131 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
@@ -140,16 +140,22 @@ public class TestTaskMonitor {
@Test
public void testWarnStuckTasks() throws Exception {
- final int INTERVAL = 1000;
+ final int RPC_WARN_TIME = 1500;
+ final int MONITOR_INTERVAL = 500;
Configuration conf = new Configuration();
- conf.setLong(TaskMonitor.RPC_WARN_TIME_KEY, INTERVAL);
- conf.setLong(TaskMonitor.MONITOR_INTERVAL_KEY, INTERVAL);
+ 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 then = EnvironmentEdgeManager.currentTime();
- t.setRPC("testMethod", new Object[0], then);
- Thread.sleep(INTERVAL * 2);
- assertTrue("We did not warn", t.getWarnTime() > then);
+ 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();
}