You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by pr...@apache.org on 2018/02/22 02:10:04 UTC
hive git commit: HIVE-18764: ELAPSED_TIME resource plan setting is
not getting honored (Prasanth Jayachandran reviewed by Sergey Shelukhin)
Repository: hive
Updated Branches:
refs/heads/master dcb3817d6 -> ec2378f53
HIVE-18764: ELAPSED_TIME resource plan setting is not getting honored (Prasanth Jayachandran reviewed by Sergey Shelukhin)
Project: http://git-wip-us.apache.org/repos/asf/hive/repo
Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/ec2378f5
Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/ec2378f5
Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/ec2378f5
Branch: refs/heads/master
Commit: ec2378f53c3e4b79c2a915c7c6091b64f9860917
Parents: dcb3817
Author: Prasanth Jayachandran <pr...@apache.org>
Authored: Wed Feb 21 18:09:46 2018 -0800
Committer: Prasanth Jayachandran <pr...@apache.org>
Committed: Wed Feb 21 18:09:46 2018 -0800
----------------------------------------------------------------------
.../hive/jdbc/TestTriggersTezSessionPoolManager.java | 10 ++++++++++
.../hadoop/hive/ql/exec/tez/TriggerValidatorRunnable.java | 4 +++-
.../hadoop/hive/ql/exec/tez/monitoring/TezJobMonitor.java | 5 -----
ql/src/java/org/apache/hadoop/hive/ql/wm/WmContext.java | 6 ++++++
4 files changed, 19 insertions(+), 6 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hive/blob/ec2378f5/itests/hive-unit/src/test/java/org/apache/hive/jdbc/TestTriggersTezSessionPoolManager.java
----------------------------------------------------------------------
diff --git a/itests/hive-unit/src/test/java/org/apache/hive/jdbc/TestTriggersTezSessionPoolManager.java b/itests/hive-unit/src/test/java/org/apache/hive/jdbc/TestTriggersTezSessionPoolManager.java
index b2bb443..1691f44 100644
--- a/itests/hive-unit/src/test/java/org/apache/hive/jdbc/TestTriggersTezSessionPoolManager.java
+++ b/itests/hive-unit/src/test/java/org/apache/hive/jdbc/TestTriggersTezSessionPoolManager.java
@@ -45,6 +45,16 @@ public class TestTriggersTezSessionPoolManager extends AbstractJdbcTriggersTest
}
@Test(timeout = 60000)
+ public void testTriggerShortQueryElapsedTime() throws Exception {
+ Expression expression = ExpressionFactory.fromString("ELAPSED_TIME > 100");
+ Trigger trigger = new ExecutionTrigger("slow_query", expression, new Action(Action.Type.KILL_QUERY));
+ setupTriggers(Lists.newArrayList(trigger));
+ String query = "select sleep(t1.under_col, 500), t1.value from " + tableName + " t1 join " + tableName +
+ " t2 on t1.under_col>=t2.under_col";
+ runQueryWithTrigger(query, null, trigger + " violated");
+ }
+
+ @Test(timeout = 60000)
public void testTriggerSlowQueryExecutionTime() throws Exception {
Expression expression = ExpressionFactory.fromString("EXECUTION_TIME > 1000");
Trigger trigger = new ExecutionTrigger("slow_query", expression, new Action(Action.Type.KILL_QUERY));
http://git-wip-us.apache.org/repos/asf/hive/blob/ec2378f5/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/TriggerValidatorRunnable.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/TriggerValidatorRunnable.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/TriggerValidatorRunnable.java
index 9ccaa1f..670184b 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/TriggerValidatorRunnable.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/TriggerValidatorRunnable.java
@@ -22,6 +22,7 @@ import java.util.Map;
import org.apache.hadoop.hive.ql.wm.Action;
import org.apache.hadoop.hive.ql.wm.SessionTriggerProvider;
+import org.apache.hadoop.hive.ql.wm.TimeCounterLimit;
import org.apache.hadoop.hive.ql.wm.Trigger;
import org.apache.hadoop.hive.ql.wm.TriggerActionHandler;
import org.apache.hadoop.hive.ql.wm.WmContext;
@@ -48,8 +49,9 @@ public class TriggerValidatorRunnable implements Runnable {
for (TezSessionState sessionState : sessions) {
WmContext wmContext = sessionState.getWmContext();
if (wmContext != null && !wmContext.isQueryCompleted()
- && !wmContext.getCurrentCounters().isEmpty()) {
+ && !wmContext.getSubscribedCounters().isEmpty()) {
Map<String, Long> currentCounters = wmContext.getCurrentCounters();
+ wmContext.updateElapsedTimeCounter();
for (Trigger currentTrigger : triggers) {
String desiredCounter = currentTrigger.getExpression().getCounterLimit().getName();
// there could be interval where desired counter value is not populated by the time we make this check
http://git-wip-us.apache.org/repos/asf/hive/blob/ec2378f5/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/monitoring/TezJobMonitor.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/monitoring/TezJobMonitor.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/monitoring/TezJobMonitor.java
index 166ecfc..98048c8 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/monitoring/TezJobMonitor.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/monitoring/TezJobMonitor.java
@@ -360,11 +360,6 @@ public class TezJobMonitor {
// Time based counters. If DAG is done already don't update these counters.
if (!done) {
- counterName = TimeCounterLimit.TimeCounter.ELAPSED_TIME.name();
- if (desiredCounters.contains(counterName)) {
- updatedCounters.put(counterName, context.getWmContext().getElapsedTime());
- }
-
counterName = TimeCounterLimit.TimeCounter.EXECUTION_TIME.name();
if (desiredCounters.contains(counterName) && executionStartTime > 0) {
updatedCounters.put(counterName, System.currentTimeMillis() - executionStartTime);
http://git-wip-us.apache.org/repos/asf/hive/blob/ec2378f5/ql/src/java/org/apache/hadoop/hive/ql/wm/WmContext.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/wm/WmContext.java b/ql/src/java/org/apache/hadoop/hive/ql/wm/WmContext.java
index d09bf89..b896ddc 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/wm/WmContext.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/wm/WmContext.java
@@ -236,4 +236,10 @@ public class WmContext implements PrintSummary {
" Cluster %: " + WmContext.DECIMAL_FORMAT.format(wmEvent.getWmTezSessionInfo().getClusterPercent()));
}
}
+
+ public void updateElapsedTimeCounter() {
+ if (subscribedCounters.contains(TimeCounterLimit.TimeCounter.ELAPSED_TIME.name())) {
+ currentCounters.put(TimeCounterLimit.TimeCounter.ELAPSED_TIME.name(), getElapsedTime());
+ }
+ }
}