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

mblow pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/asterixdb.git


The following commit(s) were added to refs/heads/master by this push:
     new fce6a0c393 [ASTERIXDB-3687][API] Incorrect metrics and missing fields 
in status API
fce6a0c393 is described below

commit fce6a0c393b1c24e7a872112a5064048670b8867
Author: Peeyush Gupta <[email protected]>
AuthorDate: Wed Jan 7 22:49:29 2026 -0800

    [ASTERIXDB-3687][API] Incorrect metrics and missing fields in status API
    
    - user model changes: no
    - storage format changes: no
    - interface changes: no
    
    Details:
    In case the async request is still queued or running the metrics were 
incorrect. This was because the metrics were set when the job is completed. 
Also, fields except the status field are missing altogether when the request is 
queued or its running but no frame is pushed yet.
    
    Ext-ref: MB-69805, MB-69759, MB-69806
    
    Change-Id: Id5fd38b4273d1a3c98936cea63b8c879e474d619
    Reviewed-on: https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/20771
    Integration-Tests: Jenkins <[email protected]>
    Tested-by: Jenkins <[email protected]>
    Reviewed-by: Ian Maxon <[email protected]>
---
 .../apache/asterix/translator/ClientRequest.java   |  5 ++
 .../api/http/server/NCQueryStatusApiServlet.java   | 32 ++++++++
 .../api/http/server/QueryResultApiServlet.java     | 13 ++--
 .../api/http/server/QueryStatusApiServlet.java     | 89 +++++++++++++++-------
 .../app/message/ClientInfoRequestMessage.java      | 21 ++++-
 .../app/message/ClientInfoResponseMessage.java     | 36 +++++++++
 .../asterix/app/result/JobResultCallback.java      |  1 -
 .../asterix/app/translator/QueryTranslator.java    |  1 +
 .../apache/asterix/utils/AsyncRequestsAPIUtil.java |  2 +-
 .../async-running/async-running.2.json             |  3 -
 .../async-running/async-running.2.regexjson        |  5 ++
 11 files changed, 166 insertions(+), 42 deletions(-)

diff --git 
a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/ClientRequest.java
 
b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/ClientRequest.java
index f7ddcf535e..bd67c50fd4 100644
--- 
a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/ClientRequest.java
+++ 
b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/ClientRequest.java
@@ -43,6 +43,7 @@ public class ClientRequest extends BaseClientRequest {
     protected static final int MAX_STATEMENT_LENGTH =
             StorageUtil.getIntSizeInBytes(64, 
StorageUtil.StorageUnit.KILOBYTE);
     protected final long creationTime = System.nanoTime();
+    protected final long creationSystemTime = System.currentTimeMillis();
     protected final Thread executor;
     protected final String statement;
     protected final String clientContextId;
@@ -103,6 +104,10 @@ public class ClientRequest extends BaseClientRequest {
         return creationTime;
     }
 
+    public long getCreationSystemTime() {
+        return creationSystemTime;
+    }
+
     @Override
     public ObjectNode asJson() {
         ObjectNode json = super.asJson();
diff --git 
a/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/NCQueryStatusApiServlet.java
 
b/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/NCQueryStatusApiServlet.java
index 4c0ce1df5a..8244f928a6 100644
--- 
a/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/NCQueryStatusApiServlet.java
+++ 
b/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/NCQueryStatusApiServlet.java
@@ -18,10 +18,19 @@
  */
 package org.apache.asterix.api.http.server;
 
+import static org.apache.asterix.utils.AsyncRequestsAPIUtil.NC_TIMEOUT_MILLIS;
+
 import java.util.concurrent.ConcurrentMap;
+import java.util.concurrent.TimeUnit;
 
+import org.apache.asterix.app.message.ClientInfoRequestMessage;
+import org.apache.asterix.app.message.ClientInfoResponseMessage;
+import org.apache.asterix.app.result.ResponsePrinter;
 import org.apache.asterix.common.api.IApplicationContext;
+import org.apache.asterix.common.messaging.api.INCMessageBroker;
+import org.apache.asterix.common.messaging.api.MessageFuture;
 import org.apache.asterix.utils.AsyncRequestsAPIUtil;
+import org.apache.hyracks.api.application.INCServiceContext;
 import org.apache.hyracks.api.exceptions.HyracksDataException;
 import org.apache.hyracks.api.job.JobId;
 import org.apache.hyracks.http.api.IServletRequest;
@@ -37,4 +46,27 @@ public class NCQueryStatusApiServlet extends 
QueryStatusApiServlet {
             throws HyracksDataException {
         return AsyncRequestsAPIUtil.isValidRequest(appCtx, requestId, jobId, 
response);
     }
+
+    public void printMetricsWithoutResultMetadata(ResponsePrinter printer, 
IServletRequest request, String requestId,
+            JobId jobId, ResultStatus status) throws HyracksDataException {
+        INCServiceContext serviceCtx = (INCServiceContext) 
appCtx.getServiceContext();
+        INCMessageBroker messageBroker = (INCMessageBroker) 
serviceCtx.getMessageBroker();
+        MessageFuture messageFuture = messageBroker.registerMessageFuture();
+        long futureId = messageFuture.getFutureId();
+        ClientInfoRequestMessage clientInfoRequestMessage =
+                new ClientInfoRequestMessage(serviceCtx.getNodeId(), futureId, 
jobId, requestId, true);
+        try {
+            messageBroker.sendMessageToPrimaryCC(clientInfoRequestMessage);
+            ClientInfoResponseMessage responseMessage =
+                    (ClientInfoResponseMessage) 
messageFuture.get(NC_TIMEOUT_MILLIS, TimeUnit.MILLISECONDS);
+            if (responseMessage == null || 
!responseMessage.isValidRequestId()) {
+                return;
+            }
+            printMetrics(printer, request, status, 
responseMessage.getRequestCreateTime(),
+                    responseMessage.getJobCreateTime(), 
responseMessage.getJobStartTime(),
+                    responseMessage.getJobQueueWaitTime());
+        } catch (Exception e) {
+            throw HyracksDataException.create(e);
+        }
+    }
 }
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 21f2267a6c..ad3a9de184 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
@@ -20,6 +20,7 @@ package org.apache.asterix.api.http.server;
 
 import java.io.IOException;
 import java.util.concurrent.ConcurrentMap;
+import java.util.concurrent.TimeUnit;
 
 import org.apache.asterix.app.result.ResponseMetrics;
 import org.apache.asterix.app.result.ResponsePrinter;
@@ -165,7 +166,7 @@ public class QueryResultApiServlet extends 
AbstractQueryApiServlet {
     }
 
     private ResponseMetrics buildMetrics(Stats stats, ResultMetadata metadata) 
{
-        long endTime = System.currentTimeMillis();
+        long endTime = System.nanoTime();
         stats.setProcessedObjects(metadata.getProcessedObjects());
         stats.setQueueWaitTime(metadata.getQueueWaitTimeInNanos());
         stats.setBufferCacheHitRatio(metadata.getBufferCacheHitRatio());
@@ -174,11 +175,11 @@ public class QueryResultApiServlet extends 
AbstractQueryApiServlet {
         stats.setCloudPagesReadCount(metadata.getCloudPagesReadCount());
         
stats.setCloudPagesPersistedCount(metadata.getCloudPagesPersistedCount());
         stats.updateTotalWarningsCount(metadata.getTotalWarningsCount());
-        return ResponseMetrics.of(endTime - metadata.getCreateTime(), 
metadata.getJobDuration(), stats.getCount(),
-                stats.getSize(), metadata.getProcessedObjects(), 0, 
metadata.getTotalWarningsCount(),
-                metadata.getCompileTime(), stats.getQueueWaitTime(), 
stats.getBufferCacheHitRatio(),
-                stats.getBufferCachePageReadCount(), 
stats.getCloudReadRequestsCount(), stats.getCloudPagesReadCount(),
-                stats.getCloudPagesPersistedCount());
+        return ResponseMetrics.of(TimeUnit.MILLISECONDS.toNanos(endTime - 
metadata.getCreateTime()),
+                metadata.getJobDuration(), stats.getCount(), stats.getSize(), 
metadata.getProcessedObjects(), 0,
+                metadata.getTotalWarningsCount(), metadata.getCompileTime(), 
stats.getQueueWaitTime(),
+                stats.getBufferCacheHitRatio(), 
stats.getBufferCachePageReadCount(), stats.getCloudReadRequestsCount(),
+                stats.getCloudPagesReadCount(), 
stats.getCloudPagesPersistedCount());
     }
 
     /**
diff --git 
a/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/QueryStatusApiServlet.java
 
b/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/QueryStatusApiServlet.java
index 9052f8f655..cf70ef420f 100644
--- 
a/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/QueryStatusApiServlet.java
+++ 
b/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/QueryStatusApiServlet.java
@@ -20,8 +20,10 @@ package org.apache.asterix.api.http.server;
 
 import java.io.PrintWriter;
 import java.util.List;
+import java.util.Optional;
 import java.util.Set;
 import java.util.concurrent.ConcurrentMap;
+import java.util.concurrent.TimeUnit;
 import java.util.concurrent.TimeoutException;
 
 import org.apache.asterix.app.result.ResponseMetrics;
@@ -35,13 +37,18 @@ import 
org.apache.asterix.app.result.fields.ResultCountPrinter;
 import org.apache.asterix.app.result.fields.ResultHandlePrinter;
 import org.apache.asterix.app.result.fields.StatusPrinter;
 import org.apache.asterix.common.api.IApplicationContext;
+import org.apache.asterix.common.api.IClientRequest;
+import org.apache.asterix.common.dataflow.ICcApplicationContext;
 import org.apache.asterix.common.exceptions.ErrorCode;
 import org.apache.asterix.common.exceptions.RuntimeDataException;
-import org.apache.asterix.translator.IStatementExecutor;
+import org.apache.asterix.translator.ClientRequest;
 import org.apache.asterix.translator.ResultMetadata;
 import org.apache.asterix.translator.SessionOutput;
 import org.apache.hyracks.api.exceptions.HyracksDataException;
+import org.apache.hyracks.api.job.JobId;
 import org.apache.hyracks.api.result.ResultJobRecord;
+import org.apache.hyracks.control.cc.ClusterControllerService;
+import org.apache.hyracks.control.cc.job.JobRun;
 import org.apache.hyracks.http.api.IServletRequest;
 import org.apache.hyracks.http.api.IServletResponse;
 import org.apache.hyracks.http.server.utils.HttpUtil;
@@ -91,7 +98,7 @@ public class QueryStatusApiServlet extends 
AbstractQueryApiServlet {
         }
         printer.printResults();
         if (uriMode) {
-            printMetricsAndFooters(printer, resultReader, request);
+            printMetricsAndFooters(printer, resultReader, request, 
handle.getRequestId(), handle.getJobId(), resultStatus);
         }
         printer.end();
         if (response.writer().checkError()) {
@@ -165,33 +172,61 @@ public class QueryStatusApiServlet extends 
AbstractQueryApiServlet {
         }
     }
 
-    private void printMetricsAndFooters(ResponsePrinter printer, ResultReader 
resultReader, IServletRequest request)
-            throws HyracksDataException {
+    private void printMetricsAndFooters(ResponsePrinter printer, ResultReader 
resultReader, IServletRequest request,
+            String requestId, JobId jobId, ResultStatus status) throws 
HyracksDataException {
         ResultMetadata metadata = (ResultMetadata) resultReader.getMetadata();
-        if (metadata != null) {
-            final IStatementExecutor.Stats stats = new 
IStatementExecutor.Stats();
-            stats.setProcessedObjects(metadata.getProcessedObjects());
-            stats.setQueueWaitTime(metadata.getQueueWaitTimeInNanos());
-            stats.setBufferCacheHitRatio(metadata.getBufferCacheHitRatio());
-            
stats.setBufferCachePageReadCount(metadata.getBufferCachePageReadCount());
-            
stats.setCloudReadRequestsCount(metadata.getCloudReadRequestsCount());
-            stats.setCloudPagesReadCount(metadata.getCloudPagesReadCount());
-            
stats.setCloudPagesPersistedCount(metadata.getCloudPagesPersistedCount());
-            stats.updateTotalWarningsCount(metadata.getTotalWarningsCount());
-            long endTime = System.currentTimeMillis();
-            ResponseMetrics metrics =
-                    ResponseMetrics.of(endTime - metadata.getCreateTime(), 
metadata.getJobDuration(), stats.getCount(),
-                            stats.getSize(), metadata.getProcessedObjects(), 
0, metadata.getTotalWarningsCount(),
-                            metadata.getCompileTime(), 
stats.getQueueWaitTime(), stats.getBufferCacheHitRatio(),
-                            stats.getBufferCachePageReadCount(), 
stats.getCloudReadRequestsCount(),
-                            stats.getCloudPagesReadCount(), 
stats.getCloudPagesPersistedCount());
-            printer.addFooterPrinter(new MetricsPrinter(metrics, 
HttpUtil.getPreferredCharset(request),
-                    Set.of(MetricsPrinter.Metrics.ELAPSED_TIME, 
MetricsPrinter.Metrics.EXECUTION_TIME,
-                            MetricsPrinter.Metrics.QUEUE_WAIT_TIME, 
MetricsPrinter.Metrics.COMPILE_TIME,
-                            MetricsPrinter.Metrics.WARNING_COUNT, 
MetricsPrinter.Metrics.ERROR_COUNT,
-                            MetricsPrinter.Metrics.PROCESSED_OBJECTS_COUNT)));
-            printer.addFooterPrinter(new 
CreatedAtPrinter(metadata.getCreateTime()));
+        if (metadata != null && status != ResultStatus.QUEUED && status != 
ResultStatus.RUNNING) {
+            printMetricsWithResultMetadata(printer, request, metadata);
+        } else {
+            printMetricsWithoutResultMetadata(printer, request, requestId, 
jobId, status);
         }
         printer.printFooters();
     }
+
+    public void printMetricsWithResultMetadata(ResponsePrinter printer, 
IServletRequest request,
+            ResultMetadata metadata) {
+        long endTime = System.currentTimeMillis();
+        ResponseMetrics metrics = 
ResponseMetrics.of(TimeUnit.MILLISECONDS.toNanos(endTime - 
metadata.getCreateTime()),
+                metadata.getJobDuration(), 0, 0, 
metadata.getProcessedObjects(), 0, metadata.getTotalWarningsCount(),
+                metadata.getCompileTime(), metadata.getQueueWaitTimeInNanos(), 
0, 0, 0, 0, 0);
+        printer.addFooterPrinter(new MetricsPrinter(metrics, 
HttpUtil.getPreferredCharset(request),
+                Set.of(MetricsPrinter.Metrics.ELAPSED_TIME, 
MetricsPrinter.Metrics.EXECUTION_TIME,
+                        MetricsPrinter.Metrics.QUEUE_WAIT_TIME, 
MetricsPrinter.Metrics.COMPILE_TIME,
+                        MetricsPrinter.Metrics.WARNING_COUNT, 
MetricsPrinter.Metrics.ERROR_COUNT,
+                        MetricsPrinter.Metrics.PROCESSED_OBJECTS_COUNT)));
+        printer.addFooterPrinter(new 
CreatedAtPrinter(metadata.getCreateTime()));
+    }
+
+    public void printMetricsWithoutResultMetadata(ResponsePrinter printer, 
IServletRequest request, String requestId,
+            JobId jobId, ResultStatus status) throws HyracksDataException {
+        try {
+            ClusterControllerService ccs = (ClusterControllerService) 
appCtx.getServiceContext().getControllerService();
+            JobRun run = ccs.getJobManager().get(jobId);
+            Optional<IClientRequest> clientRequest =
+                    ((ICcApplicationContext) 
appCtx).getRequestTracker().getAsyncOrDeferredRequest(requestId);
+
+            long requestCreateTime = ((ClientRequest) 
clientRequest.get()).getCreationSystemTime();
+            printMetrics(printer, request, status, requestCreateTime, 
run.getCreateTime(), run.getStartTime(),
+                    run.getQueueWaitTimeInMillis());
+        } catch (Exception e) {
+            throw HyracksDataException.create(e);
+        }
+    }
+
+    protected void printMetrics(ResponsePrinter printer, IServletRequest 
request, ResultStatus status,
+            long requestCreateTime, long jobCreateTime, long jobStartTime, 
long queueWaitTime) {
+        long currentTime = System.currentTimeMillis();
+        long elapsedTime = TimeUnit.MILLISECONDS.toNanos(currentTime - 
requestCreateTime);
+        long compileTime = TimeUnit.MILLISECONDS.toNanos(jobCreateTime - 
requestCreateTime);
+        long executionTime =
+                status == ResultStatus.RUNNING ? 
TimeUnit.MILLISECONDS.toNanos(currentTime - jobStartTime) : 0;
+
+        ResponseMetrics metrics = ResponseMetrics.of(elapsedTime, 
executionTime, 0, 0, 0, 0, 0, compileTime,
+                queueWaitTime, 0, 0, 0, 0, 0);
+
+        printer.addFooterPrinter(new MetricsPrinter(metrics, 
HttpUtil.getPreferredCharset(request),
+                Set.of(MetricsPrinter.Metrics.ELAPSED_TIME, 
MetricsPrinter.Metrics.EXECUTION_TIME,
+                        MetricsPrinter.Metrics.QUEUE_WAIT_TIME, 
MetricsPrinter.Metrics.COMPILE_TIME)));
+        printer.addFooterPrinter(new CreatedAtPrinter(requestCreateTime));
+    }
 }
diff --git 
a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/message/ClientInfoRequestMessage.java
 
b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/message/ClientInfoRequestMessage.java
index c244aa0f56..0e717198bc 100644
--- 
a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/message/ClientInfoRequestMessage.java
+++ 
b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/message/ClientInfoRequestMessage.java
@@ -27,6 +27,8 @@ import org.apache.asterix.messaging.CCMessageBroker;
 import org.apache.asterix.translator.ClientRequest;
 import org.apache.hyracks.api.exceptions.HyracksDataException;
 import org.apache.hyracks.api.job.JobId;
+import org.apache.hyracks.control.cc.ClusterControllerService;
+import org.apache.hyracks.control.cc.job.JobRun;
 import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;
 
@@ -38,12 +40,15 @@ public class ClientInfoRequestMessage implements 
ICcAddressedMessage {
     private final JobId jobId;
     private final String requestId;
     private final long ncReqId;
+    private final boolean metricsRequired;
 
-    public ClientInfoRequestMessage(String nodeId, long ncReqId, JobId jobId, 
String requestId) {
+    public ClientInfoRequestMessage(String nodeId, long ncReqId, JobId jobId, 
String requestId,
+            boolean metricsRequired) {
         this.nodeId = nodeId;
         this.ncReqId = ncReqId;
         this.jobId = jobId;
         this.requestId = requestId;
+        this.metricsRequired = metricsRequired;
     }
 
     @Override
@@ -51,11 +56,19 @@ public class ClientInfoRequestMessage implements 
ICcAddressedMessage {
         CCMessageBroker messageBroker = (CCMessageBroker) 
appCtx.getServiceContext().getMessageBroker();
         Optional<IClientRequest> clientRequest = 
appCtx.getRequestTracker().getAsyncOrDeferredRequest(requestId);
         ClientInfoResponseMessage response;
-        if (clientRequest.isEmpty()) {
+        if (clientRequest.isEmpty() || !jobId.equals(((ClientRequest) 
clientRequest.get()).getJobId())) {
             response = new ClientInfoResponseMessage(ncReqId, false);
         } else {
-            response = new ClientInfoResponseMessage(ncReqId,
-                    jobId.equals(((ClientRequest) 
clientRequest.get()).getJobId()));
+            if (metricsRequired) {
+                ClusterControllerService ccs =
+                        (ClusterControllerService) 
appCtx.getServiceContext().getControllerService();
+                JobRun run = ccs.getJobManager().get(jobId);
+                response = new ClientInfoResponseMessage(ncReqId, true,
+                        ((ClientRequest) 
clientRequest.get()).getCreationSystemTime(), run.getCreateTime(),
+                        run.getStartTime(), run.getEndTime(), 
run.getQueueWaitTimeInMillis());
+            } else {
+                response = new ClientInfoResponseMessage(ncReqId, true);
+            }
         }
         try {
             messageBroker.sendApplicationMessageToNC(response, nodeId);
diff --git 
a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/message/ClientInfoResponseMessage.java
 
b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/message/ClientInfoResponseMessage.java
index 9952a9aba0..29200c53f8 100644
--- 
a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/message/ClientInfoResponseMessage.java
+++ 
b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/message/ClientInfoResponseMessage.java
@@ -29,10 +29,26 @@ public class ClientInfoResponseMessage implements 
INcAddressedMessage {
     private static final long serialVersionUID = 1L;
     private final long reqId;
     private final boolean validRequestId;
+    // All time are in millis
+    private final long requestCreateTime;
+    private final long jobCreateTime;
+    private final long jobStartTime;
+    private final long jobEndTime;
+    private final long jobQueueWaitTime;
 
     public ClientInfoResponseMessage(long reqId, boolean validRequestId) {
+        this(reqId, validRequestId, 0, 0, 0, 0, 0);
+    }
+
+    public ClientInfoResponseMessage(long reqId, boolean validRequestId, long 
requestCreateTime, long jobCreateTime,
+            long jobStartTime, long jobEndTime, long jobQueueWaitTime) {
         this.reqId = reqId;
         this.validRequestId = validRequestId;
+        this.requestCreateTime = requestCreateTime;
+        this.jobStartTime = jobStartTime;
+        this.jobCreateTime = jobCreateTime;
+        this.jobEndTime = jobEndTime;
+        this.jobQueueWaitTime = jobQueueWaitTime;
     }
 
     @Override
@@ -47,4 +63,24 @@ public class ClientInfoResponseMessage implements 
INcAddressedMessage {
     public boolean isValidRequestId() {
         return validRequestId;
     }
+
+    public long getRequestCreateTime() {
+        return requestCreateTime;
+    }
+
+    public long getJobCreateTime() {
+        return jobCreateTime;
+    }
+
+    public long getJobStartTime() {
+        return jobStartTime;
+    }
+
+    public long getJobEndTime() {
+        return jobEndTime;
+    }
+
+    public long getJobQueueWaitTime() {
+        return jobQueueWaitTime;
+    }
 }
diff --git 
a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/result/JobResultCallback.java
 
b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/result/JobResultCallback.java
index 08c459d6f9..ef36bc8883 100644
--- 
a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/result/JobResultCallback.java
+++ 
b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/result/JobResultCallback.java
@@ -108,7 +108,6 @@ public class JobResultCallback implements 
IJobResultCallback {
                 }
             }
             metadata.setEndTime(System.currentTimeMillis());
-            metadata.setCreateTime(run.getCreateTime());
             
metadata.setQueueWaitTimeInNanos(TimeUnit.MILLISECONDS.toNanos(run.getQueueWaitTimeInMillis()));
         }
         metadata.setProcessedObjects(processedObjects);
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 9d019959c8..0c5cd98582 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
@@ -5570,6 +5570,7 @@ public class QueryTranslator extends 
AbstractLangTranslator implements IStatemen
             try {
                 org.apache.asterix.translator.ResultMetadata resultMetadata =
                         new 
org.apache.asterix.translator.ResultMetadata(sessionConfig.fmt());
+                resultMetadata.setCreateTime(System.currentTimeMillis());
                 final JobSpecification jobSpec = rewriteCompileQuery(hcc, 
metadataProvider, query, null, stmtParams,
                         requestParameters, resultMetadata);
                 // update stats with count of compile-time warnings. needs to 
be adapted for multi-statement.
diff --git 
a/asterixdb/asterix-app/src/main/java/org/apache/asterix/utils/AsyncRequestsAPIUtil.java
 
b/asterixdb/asterix-app/src/main/java/org/apache/asterix/utils/AsyncRequestsAPIUtil.java
index 8884b4483a..88184fad53 100644
--- 
a/asterixdb/asterix-app/src/main/java/org/apache/asterix/utils/AsyncRequestsAPIUtil.java
+++ 
b/asterixdb/asterix-app/src/main/java/org/apache/asterix/utils/AsyncRequestsAPIUtil.java
@@ -134,7 +134,7 @@ public class AsyncRequestsAPIUtil {
         MessageFuture messageFuture = messageBroker.registerMessageFuture();
         long futureId = messageFuture.getFutureId();
         ClientInfoRequestMessage clientInfoRequestMessage =
-                new ClientInfoRequestMessage(serviceCtx.getNodeId(), futureId, 
jobId, requestId);
+                new ClientInfoRequestMessage(serviceCtx.getNodeId(), futureId, 
jobId, requestId, false);
         try {
             messageBroker.sendMessageToPrimaryCC(clientInfoRequestMessage);
             ClientInfoResponseMessage responseMessage =
diff --git 
a/asterixdb/asterix-app/src/test/resources/runtimets/results/async-deferred-improved/async-running/async-running.2.json
 
b/asterixdb/asterix-app/src/test/resources/runtimets/results/async-deferred-improved/async-running/async-running.2.json
deleted file mode 100644
index 272762e81c..0000000000
--- 
a/asterixdb/asterix-app/src/test/resources/runtimets/results/async-deferred-improved/async-running/async-running.2.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
-       "status": "running"
-}
diff --git 
a/asterixdb/asterix-app/src/test/resources/runtimets/results/async-deferred-improved/async-running/async-running.2.regexjson
 
b/asterixdb/asterix-app/src/test/resources/runtimets/results/async-deferred-improved/async-running/async-running.2.regexjson
new file mode 100644
index 0000000000..0e7ce1c2aa
--- /dev/null
+++ 
b/asterixdb/asterix-app/src/test/resources/runtimets/results/async-deferred-improved/async-running/async-running.2.regexjson
@@ -0,0 +1,5 @@
+{
+  "status":"running",
+  "metrics": "R{.*}",
+  "createdAt": "R{.*}"
+}
\ No newline at end of file

Reply via email to