[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 <jenkins@fulliautomatix.ics.uci.edu>
Reviewed-by: Peeyush Gupta <peeyush.gupta@couchbase.com>
Reviewed-by: Murtadha Hubail <mhubail@apache.org>
Tested-by: Murtadha Hubail <mhubail@apache.org>
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 78f84ff..60f4939 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 @@
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 @@
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 66d81d2..ebf169f 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 @@
}
}
}
+ 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 fc539ef..d8b5d84 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 @@
(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());