>From Ali Alsuliman <[email protected]>:
Ali Alsuliman has uploaded this change for review. (
https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/21180?usp=email )
Change subject: [ASTERIXDB-3649][API] Print request status after receiving CC
response
......................................................................
[ASTERIXDB-3649][API] Print request status after receiving CC response
- user model changes: no
- storage format changes: no
- interface changes: no
Details:
For async request, print the request status after the node
receives the response from the CC. For SUCCESS,RUNNING,QUEUED
statuses, print them as QUEUED.
- report jobQueueTime only if the job was created, otherwise
set to 0.
Ext-ref: MB-69763
Change-Id: I71ab1e4b9d58ac36ae9f0560b20b2c28eaa06657
---
M
asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/ClientRequest.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/app/translator/QueryTranslator.java
3 files changed, 15 insertions(+), 8 deletions(-)
git pull ssh://asterix-gerrit.ics.uci.edu:29418/asterixdb
refs/changes/80/21180/1
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 5c8310d..4e9a366 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
@@ -181,7 +181,10 @@
putTime(json, state.createTime, "jobCreateTime", dateTime);
putTime(json, state.startTime, "jobStartTime", dateTime);
putTime(json, state.endTime, "jobEndTime", dateTime);
- long queueTime = (state.startTime > 0 ? state.startTime :
System.currentTimeMillis()) - state.createTime;
+ long queueTime = 0;
+ if (state.createTime > 0) {
+ queueTime = (state.startTime > 0 ? state.startTime :
System.currentTimeMillis()) - state.createTime;
+ }
json.put("jobQueueTime", TimeUnit.MILLISECONDS.toSeconds(queueTime));
json.put("jobStatus", String.valueOf(state.status));
json.put("jobRequiredCPUs", state.requiredCPUs);
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 879332c..23e3d2b 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
@@ -322,10 +322,8 @@
responsePrinter.addFooterPrinter(new
StatusPrinter(executionState.getResultStatus()));
responsePrinter.addFooterPrinter(new MetricsPrinter(metrics,
resultCharset));
} else {
- // in case of ASYNC mode and compilation/parsing error, we need to
print the statust
- if (executionState.getResultStatus() == ResultStatus.FATAL) {
- responsePrinter.addFooterPrinter(new
StatusPrinter(ResultStatus.FATAL));
- }
+ // in case of ASYNC mode and compilation/parsing error, we need to
print the status
+ responsePrinter.addFooterPrinter(new
StatusPrinter(getAsyncResultStatus(executionState.getResultStatus())));
// Only print selected metrics for async requests
responsePrinter.addFooterPrinter(new MetricsPrinter(metrics,
resultCharset,
Set.of(MetricsPrinter.Metrics.ELAPSED_TIME,
MetricsPrinter.Metrics.QUEUE_WAIT_TIME,
@@ -339,6 +337,15 @@
return metrics;
}
+ private static ResultStatus getAsyncResultStatus(ResultStatus
resultStatus) {
+ return switch (resultStatus) {
+ case FATAL -> ResultStatus.FATAL;
+ case TIMEOUT -> ResultStatus.TIMEOUT;
+ case FAILED -> ResultStatus.FAILED;
+ default -> ResultStatus.QUEUED;
+ };
+ }
+
protected void validateStatement(String statement) throws
RuntimeDataException {
if (statement == null || statement.isEmpty()) {
throw new RuntimeDataException(NO_STATEMENT_PROVIDED);
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 53d2ec4..ea42a3d 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
@@ -59,7 +59,6 @@
import org.apache.asterix.algebra.base.ILangExpressionToPlanTranslatorFactory;
import org.apache.asterix.algebra.extension.ExtensionStatement;
import org.apache.asterix.api.common.APIFramework;
-import org.apache.asterix.api.http.server.AbstractQueryApiServlet;
import org.apache.asterix.api.http.server.ApiServlet;
import org.apache.asterix.app.active.ActiveEntityEventsListener;
import org.apache.asterix.app.active.ActiveNotificationHandler;
@@ -69,7 +68,6 @@
import org.apache.asterix.app.result.ResultReader;
import org.apache.asterix.app.result.fields.ResultHandlePrinter;
import org.apache.asterix.app.result.fields.ResultsPrinter;
-import org.apache.asterix.app.result.fields.StatusPrinter;
import
org.apache.asterix.app.translator.handlers.IcebergCatalogStatementHandler;
import
org.apache.asterix.app.translator.helpers.IcebergStatementValidationHelper;
import org.apache.asterix.column.validation.ColumnPropertiesValidationUtil;
@@ -5705,7 +5703,6 @@
jobIdFuture.complete(id);
final ResultHandle handle = sessionConfig.isIncludeHost()
? new ResultHandle(id, resultSetId, null)
: new ResultHandle(id, resultSetId,
requestParameters.getRequestReference().getUuid());
- responsePrinter.addResultPrinter(new
StatusPrinter(AbstractQueryApiServlet.ResultStatus.QUEUED));
responsePrinter.addResultPrinter(new
ResultHandlePrinter(sessionOutput, handle));
responsePrinter.printResults();
synchronized (printed) {
--
To view, visit https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/21180?usp=email
To unsubscribe, or for help writing mail filters, visit
https://asterix-gerrit.ics.uci.edu/settings?usp=email
Gerrit-MessageType: newchange
Gerrit-Project: asterixdb
Gerrit-Branch: lumina
Gerrit-Change-Id: I71ab1e4b9d58ac36ae9f0560b20b2c28eaa06657
Gerrit-Change-Number: 21180
Gerrit-PatchSet: 1
Gerrit-Owner: Ali Alsuliman <[email protected]>