>From Peeyush Gupta <[email protected]>:

Peeyush Gupta has uploaded this change for review. ( 
https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/17833 )


Change subject: WIP: queue time
......................................................................

WIP: queue time

Change-Id: Id37d19bc520ea5d890e4d5c21e7157b2e93e25bc
---
M 
asterixdb/asterix-app/src/main/java/org/apache/asterix/app/result/fields/MetricsPrinter.java
M 
asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/IStatementExecutor.java
M 
asterixdb/asterix-app/src/main/java/org/apache/asterix/app/translator/QueryTranslator.java
M 
asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/QueryServiceServlet.java
M 
asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/NCQueryServiceServlet.java
M 
asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/QueryResultApiServlet.java
M 
asterixdb/asterix-app/src/main/java/org/apache/asterix/app/result/ResponseMetrics.java
7 files changed, 39 insertions(+), 3 deletions(-)



  git pull ssh://asterix-gerrit.ics.uci.edu:29418/asterixdb 
refs/changes/33/17833/1

diff --git 
a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/IStatementExecutor.java
 
b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/IStatementExecutor.java
index b47d45d..a83aaa2 100644
--- 
a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/IStatementExecutor.java
+++ 
b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/IStatementExecutor.java
@@ -137,6 +137,7 @@
         private ProfileType profileType;
         private long totalWarningsCount;
         private long compileTime;
+        private long queuedTime;

         public long getCount() {
             return count;
@@ -195,6 +196,14 @@
         public long getCompileTime() {
             return compileTime;
         }
+
+        public void setQueuedTime(long queuedTime) {
+            this.queuedTime = queuedTime;
+        }
+
+        public long getQueuedTime() {
+            return queuedTime;
+        }
     }

     class Profile implements Serializable {
diff --git 
a/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/NCQueryServiceServlet.java
 
b/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/NCQueryServiceServlet.java
index 695956c..0d6bcf2 100644
--- 
a/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/NCQueryServiceServlet.java
+++ 
b/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/NCQueryServiceServlet.java
@@ -206,6 +206,7 @@
         stats.setProcessedObjects(responseStats.getProcessedObjects());
         stats.updateTotalWarningsCount(responseStats.getTotalWarningsCount());
         stats.setCompileTime(responseStats.getCompileTime());
+        stats.setQueuedTime(responseStats.getQueuedTime());
     }

     private static void 
updatePropertiesFromCC(IStatementExecutor.StatementProperties 
statementProperties,
diff --git 
a/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/QueryResultApiServlet.java
 
b/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/QueryResultApiServlet.java
index d9df051..2948fd8 100644
--- 
a/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/QueryResultApiServlet.java
+++ 
b/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/QueryResultApiServlet.java
@@ -102,7 +102,7 @@
                 printer.printResults();
                 ResponseMetrics metrics = ResponseMetrics.of(System.nanoTime() 
- elapsedStart,
                         metadata.getJobDuration(), stats.getCount(), 
stats.getSize(), metadata.getProcessedObjects(), 0,
-                        metadata.getTotalWarningsCount(), 
stats.getCompileTime());
+                        metadata.getTotalWarningsCount(), 
stats.getCompileTime(), stats.getQueuedTime());
                 printer.addFooterPrinter(new MetricsPrinter(metrics, 
HttpUtil.getPreferredCharset(request)));
                 if (metadata.getJobProfile() != null) {
                     printer.addFooterPrinter(new 
ProfilePrinter(metadata.getJobProfile()));
diff --git 
a/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/QueryServiceServlet.java
 
b/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/QueryServiceServlet.java
index e14c185..4fcbf6f 100644
--- 
a/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/QueryServiceServlet.java
+++ 
b/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/QueryServiceServlet.java
@@ -359,7 +359,7 @@
         }
         final ResponseMetrics metrics = ResponseMetrics.of(System.nanoTime() - 
elapsedStart, executionState.duration(),
                 stats.getCount(), stats.getSize(), 
stats.getProcessedObjects(), errorCount,
-                stats.getTotalWarningsCount(), stats.getCompileTime());
+                stats.getTotalWarningsCount(), stats.getCompileTime(), 
stats.getQueuedTime());
         responsePrinter.addFooterPrinter(new MetricsPrinter(metrics, 
resultCharset));
         if (isPrintingProfile(stats)) {
             responsePrinter.addFooterPrinter(new 
ProfilePrinter(stats.getJobProfile()));
diff --git 
a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/result/ResponseMetrics.java
 
b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/result/ResponseMetrics.java
index d55bb07..a118575 100644
--- 
a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/result/ResponseMetrics.java
+++ 
b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/result/ResponseMetrics.java
@@ -29,12 +29,13 @@
     private long warnCount;
     private long diskIoCount;
     private long compileTime;
+    private long queuedTime;

     private ResponseMetrics() {
     }

     public static ResponseMetrics of(long elapsedTime, long executionTime, 
long resultCount, long resultSize,
-            long processedObjects, long errorCount, long warnCount, long 
compileTime) {
+            long processedObjects, long errorCount, long warnCount, long 
compileTime, long queuedTime) {
         ResponseMetrics metrics = new ResponseMetrics();
         metrics.elapsedTime = elapsedTime;
         metrics.executionTime = executionTime;
@@ -44,6 +45,7 @@
         metrics.errorCount = errorCount;
         metrics.warnCount = warnCount;
         metrics.compileTime = compileTime;
+        metrics.queuedTime = queuedTime;
         return metrics;
     }

@@ -78,4 +80,8 @@
     public long getCompileTime() {
         return compileTime;
     }
+
+    public long getQueuedTime() {
+        return queuedTime;
+    }
 }
diff --git 
a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/result/fields/MetricsPrinter.java
 
b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/result/fields/MetricsPrinter.java
index 6b1d670..140bbf2 100644
--- 
a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/result/fields/MetricsPrinter.java
+++ 
b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/result/fields/MetricsPrinter.java
@@ -33,6 +33,7 @@
         ELAPSED_TIME("elapsedTime"),
         EXECUTION_TIME("executionTime"),
         COMPILE_TIME("compileTime"),
+        QUEUED_TIME("queuedTime"),
         RESULT_COUNT("resultCount"),
         RESULT_SIZE("resultSize"),
         ERROR_COUNT("errorCount"),
@@ -74,6 +75,8 @@
         pw.print("\n\t");
         ResultUtil.printField(pw, Metrics.COMPILE_TIME.str(), 
Duration.formatNanos(metrics.getCompileTime(), useAscii));
         pw.print("\n\t");
+        ResultUtil.printField(pw, Metrics.QUEUED_TIME.str(), 
Duration.formatNanos(metrics.getQueuedTime(), useAscii));
+        pw.print("\n\t");
         ResultUtil.printField(pw, Metrics.RESULT_COUNT.str(), 
metrics.getResultCount(), true);
         pw.print("\n\t");
         ResultUtil.printField(pw, Metrics.RESULT_SIZE.str(), 
metrics.getResultSize(), true);
diff --git 
a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/translator/QueryTranslator.java
 
b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/translator/QueryTranslator.java
index 7ca021a..d28121b 100644
--- 
a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/translator/QueryTranslator.java
+++ 
b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/translator/QueryTranslator.java
@@ -260,6 +260,8 @@
 import org.apache.hyracks.api.result.IResultSet;
 import org.apache.hyracks.api.result.ResultSetId;
 import org.apache.hyracks.control.cc.ClusterControllerService;
+import org.apache.hyracks.control.cc.job.IJobManager;
+import org.apache.hyracks.control.cc.job.JobRun;
 import org.apache.hyracks.control.common.controllers.CCConfig;
 import 
org.apache.hyracks.storage.am.common.dataflow.IndexDropOperatorDescriptor.DropOption;
 import org.apache.hyracks.storage.am.lsm.common.api.ILSMMergePolicyFactory;
@@ -5155,6 +5157,12 @@
             if (atomic) {
                 globalTxManager.commitTransaction(jobId);
             }
+            IJobManager jobManager =
+                    ((ClusterControllerService) 
appCtx.getServiceContext().getControllerService()).getJobManager();
+            JobRun run = jobManager.get(jobId);
+            if (jobId != null) {
+                requestParameters.getStats().setQueuedTime(run.getStartTime() 
- run.getCreateTime());
+            }
         } catch (Exception e) {
             if (atomic && jobId != null) {
                 globalTxManager.abortTransaction(jobId);

--
To view, visit https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/17833
To unsubscribe, or for help writing mail filters, visit 
https://asterix-gerrit.ics.uci.edu/settings

Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Change-Id: Id37d19bc520ea5d890e4d5c21e7157b2e93e25bc
Gerrit-Change-Number: 17833
Gerrit-PatchSet: 1
Gerrit-Owner: Peeyush Gupta <[email protected]>
Gerrit-MessageType: newchange

Reply via email to