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());
