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

commit 4a5fba2ba6802d5c6ce28230fc77e5b08169224e
Author: Peeyush Gupta <[email protected]>
AuthorDate: Wed Oct 25 22:02:38 2023 -0700

    [NO ISSUE][API] Fixing regression introduced in fix for ASTERIXDB-3277
    
    - user model changes: no
    - storage format changes: no
    - interface changes: no
    
    Details:
    In the fix for ASTERIXDB-3277 a thread unsafe access to JobManager internal
    state was used causing NullPointerException. This patch removes the unsafe
    access.
    
    Change-Id: I87df9b6e180a49ecccfc9fd2bcb2fa70c515c14d
    Reviewed-on: https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/17882
    Integration-Tests: Jenkins <[email protected]>
    Reviewed-by: Peeyush Gupta <[email protected]>
    Reviewed-by: Murtadha Hubail <[email protected]>
    Tested-by: Murtadha Hubail <[email protected]>
---
 .../main/java/org/apache/asterix/translator/ResultMetadata.java  | 9 +++++++++
 .../java/org/apache/asterix/app/result/JobResultCallback.java    | 1 +
 .../java/org/apache/asterix/app/translator/QueryTranslator.java  | 5 +----
 3 files changed, 11 insertions(+), 4 deletions(-)

diff --git 
a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/ResultMetadata.java
 
b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/ResultMetadata.java
index 78f84ffaa5..60f4939a43 100644
--- 
a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/ResultMetadata.java
+++ 
b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/ResultMetadata.java
@@ -37,6 +37,7 @@ public class ResultMetadata implements IResultMetadata {
     private Set<Warning> warnings;
     private long totalWarningsCount;
     private transient List<Object> outputTypes;
+    private long queueWaitTimeInNanos;
 
     public ResultMetadata(SessionConfig.OutputFormat format) {
         this.format = format;
@@ -104,6 +105,14 @@ public class ResultMetadata implements IResultMetadata {
         return outputTypes;
     }
 
+    public long getQueueWaitTimeInNanos() {
+        return queueWaitTimeInNanos;
+    }
+
+    public void setQueueWaitTimeInNanos(long queueWaitTimeInNanos) {
+        this.queueWaitTimeInNanos = queueWaitTimeInNanos;
+    }
+
     @Override
     public String toString() {
         return "ResultMetadata{" + "format=" + format + ", jobDuration=" + 
jobDuration + ", processedObjects="
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 66d81d2ac4..ebf169fc65 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
@@ -93,6 +93,7 @@ public class JobResultCallback implements IJobResultCallback {
                     }
                 }
             }
+            
metadata.setQueueWaitTimeInNanos(run.getJobProfile().getQueueWaitTimeInNanos());
         }
         metadata.setProcessedObjects(processedObjects);
         metadata.setWarnings(AggregateWarnings);
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 fc539ef3a0..d8b5d846cb 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
@@ -4778,10 +4778,7 @@ public class QueryTranslator extends 
AbstractLangTranslator implements IStatemen
                 (org.apache.asterix.translator.ResultMetadata) 
controllerService.getResultDirectoryService()
                         .getResultMetadata(jobId, rsId);
         stats.setProcessedObjects(resultMetadata.getProcessedObjects());
-        if (controllerService.getJobManager().get(jobId) != null) {
-            stats.setQueueWaitTime(
-                    
controllerService.getJobManager().get(jobId).getJobProfile().getQueueWaitTimeInNanos());
-        }
+        stats.setQueueWaitTime(resultMetadata.getQueueWaitTimeInNanos());
         if (jobFlags.contains(JobFlag.PROFILE_RUNTIME)) {
             stats.setJobProfile(resultMetadata.getJobProfile());
             
apiFramework.generateOptimizedLogicalPlanWithProfile(resultMetadata.getJobProfile());

Reply via email to