diff --git a/itests/hive-unit/src/test/java/org/apache/hive/service/cli/session/TestQueryDisplay.java b/itests/hive-unit/src/test/java/org/apache/hive/service/cli/session/TestQueryDisplay.java
index 418f71e..98581e0 100644
--- a/itests/hive-unit/src/test/java/org/apache/hive/service/cli/session/TestQueryDisplay.java
+++ b/itests/hive-unit/src/test/java/org/apache/hive/service/cli/session/TestQueryDisplay.java
@@ -133,8 +133,10 @@ private void verifyDDL(SQLOperationDisplay display, String stmt, String handle,
if (finished) {
Assert.assertTrue(display.getEndTime() > 0 && display.getEndTime() >= display.getBeginTime()
&& display.getEndTime() <= System.currentTimeMillis());
+ Assert.assertTrue(display.getRuntime() > 0);
} else {
Assert.assertNull(display.getEndTime());
+ //For runtime, query may have finished.
}
QueryDisplay qDisplay1 = display.getQueryDisplay();
diff --git a/service/src/jamon/org/apache/hive/tmpl/QueryProfileTmpl.jamon b/service/src/jamon/org/apache/hive/tmpl/QueryProfileTmpl.jamon
index 8d51a73..690c6f3 100644
--- a/service/src/jamon/org/apache/hive/tmpl/QueryProfileTmpl.jamon
+++ b/service/src/jamon/org/apache/hive/tmpl/QueryProfileTmpl.jamon
@@ -129,7 +129,7 @@ org.apache.hive.service.cli.operation.SQLOperationDisplay;
<% sod.getQueryDisplay() == null ? "Unknown" : sod.getQueryDisplay().getQueryString() %> |
- | Query Id |
+ Id |
<% sod.getQueryDisplay() == null ? "Unknown" : sod.getQueryDisplay().getQueryId() %> |
@@ -141,23 +141,27 @@ org.apache.hive.service.cli.operation.SQLOperationDisplay;
| <% sod.getState() %> |
- | Begin Time |
+ Opened Timestamp |
<% new Date(sod.getBeginTime()) %> |
- | Elapsed Time (s) |
+ Opened (s) |
<% sod.getElapsedTime()/1000 %> |
- | End Time |
- <% sod.getEndTime() == null ? "In Progress" : new Date(sod.getEndTime()) %> |
+ Closed Timestamp |
+ <% sod.getEndTime() == null ? "Open" : new Date(sod.getEndTime()) %> |
<%if sod.getQueryDisplay() != null && sod.getQueryDisplay().getErrorMessage() != null %>
| Error |
- <% sod.getEndTime() == null ? "In Progress" : new Date(sod.getEndTime()) %> |
+ <% sod.getQueryDisplay().getErrorMessage() %> |
%if>
+
+ | Latency (s) |
+ <% sod.getRuntime()/1000 %> |
+
%def>
diff --git a/service/src/java/org/apache/hive/service/cli/operation/Operation.java b/service/src/java/org/apache/hive/service/cli/operation/Operation.java
index d9a273b..b7d6549 100644
--- a/service/src/java/org/apache/hive/service/cli/operation/Operation.java
+++ b/service/src/java/org/apache/hive/service/cli/operation/Operation.java
@@ -446,7 +446,7 @@ protected OperationState getState() {
protected void onNewState(OperationState state, OperationState prevState) {
switch(state) {
case RUNNING:
- markOperationStartTime();
+ markOperationStartTime();
break;
case ERROR:
case FINISHED:
diff --git a/service/src/java/org/apache/hive/service/cli/operation/SQLOperation.java b/service/src/java/org/apache/hive/service/cli/operation/SQLOperation.java
index 04d816a..9ce6055 100644
--- a/service/src/java/org/apache/hive/service/cli/operation/SQLOperation.java
+++ b/service/src/java/org/apache/hive/service/cli/operation/SQLOperation.java
@@ -556,6 +556,11 @@ protected void onNewState(OperationState state, OperationState prevState) {
}
}
+ if (state == OperationState.FINISHED || state == OperationState.CANCELED || state == OperationState.ERROR) {
+ //update runtime
+ sqlOpDisplay.setRuntime(getOperationComplete() - getOperationStart());
+ }
+
if (state == OperationState.CLOSED) {
sqlOpDisplay.closed();
} else {
diff --git a/service/src/java/org/apache/hive/service/cli/operation/SQLOperationDisplay.java b/service/src/java/org/apache/hive/service/cli/operation/SQLOperationDisplay.java
index d2ca1e7..fe93426 100644
--- a/service/src/java/org/apache/hive/service/cli/operation/SQLOperationDisplay.java
+++ b/service/src/java/org/apache/hive/service/cli/operation/SQLOperationDisplay.java
@@ -32,6 +32,7 @@
public final String executionEngine;
public final long beginTime;
public final String operationId;
+ public Long runtime; //tracks only running portion of the query.
public Long endTime;
public OperationState state;
@@ -96,4 +97,12 @@ public String getOperationId() {
public synchronized void closed() {
this.endTime = System.currentTimeMillis();
}
+
+ public synchronized void setRuntime(long runtime) {
+ this.runtime = runtime;
+ }
+
+ public synchronized Long getRuntime() {
+ return runtime;
+ }
}
diff --git a/service/src/resources/hive-webapps/hiveserver2/hiveserver2.jsp b/service/src/resources/hive-webapps/hiveserver2/hiveserver2.jsp
index 8b46550..293a8ef 100644
--- a/service/src/resources/hive-webapps/hiveserver2/hiveserver2.jsp
+++ b/service/src/resources/hive-webapps/hiveserver2/hiveserver2.jsp
@@ -125,15 +125,16 @@ for (HiveSession hiveSession: hiveSessions) {
-Queries
+Open Queries
| User Name |
Query |
Execution Engine |
State |
- Begin Time |
- Elapsed Time (s) |
+ Opened Timestamp |
+ Opened (s) |
+ Latency (s) |
Drilldown Link |
<%
@@ -149,30 +150,32 @@ for (HiveSession hiveSession: hiveSessions) {
<%= operation.getState() %> |
<%= new Date(operation.getBeginTime()) %> |
<%= operation.getElapsedTime()/1000 %> |
+ <%= operation.getRuntime() == null ? "Not finished" : operation.getRuntime()/1000 %> |
<% String link = "/query_page?operationId=" + operation.getOperationId(); %>
- >Query Drilldown |
+ >Drilldown |
<%
}
%>
- | Total number of queries: <%= queries %> |
+ Total number of queries: <%= queries %> |
-Last Max <%= conf.get(ConfVars.HIVE_SERVER2_WEBUI_MAX_HISTORIC_QUERIES.varname) %> Completed Queries
+Last Max <%= conf.get(ConfVars.HIVE_SERVER2_WEBUI_MAX_HISTORIC_QUERIES.varname) %> Closed Queries
| User Name |
Query |
Execution Engine |
State |
- Elapsed Time (s) |
- End Time |
+ Opened (s) |
+ Closed Timestamp |
+ Latency (s) |
Drilldown Link |
<%
@@ -188,8 +191,9 @@ for (HiveSession hiveSession: hiveSessions) {
<%= operation.getState() %> |
<%= operation.getElapsedTime()/1000 %> |
<%= operation.getEndTime() == null ? "In Progress" : new Date(operation.getEndTime()) %> |
+ <%= operation.getRuntime()/1000 %> |
<% String link = "/query_page?operationId=" + operation.getOperationId(); %>
- >Query Drilldown |
+ >Drilldown |
<%