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 a03151e1b8 [ASTERIXDB-3685][API] Async request shown in active 
requests even after completion
a03151e1b8 is described below

commit a03151e1b86fd34f1d56d975e3a9dc451ea23041
Author: Peeyush Gupta <[email protected]>
AuthorDate: Wed Jan 7 22:01:03 2026 -0800

    [ASTERIXDB-3685][API] Async request shown in active requests even after 
completion
    
    - user model changes: no
    - storage format changes: no
    - interface changes: no
    
    Details:
    A request with mode parameter set as async can be seen in active requests 
even after completion in cas the statement itself was empty or the statement 
does not support async result delivery. The patch fixes both these cases
    
    Ext-ref: MB-69765, MB-69763
    Change-Id: Ie304a6831eadb93b7b8cb825b2180b933b208dbb
    Reviewed-on: https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/20770
    Reviewed-by: Peeyush Gupta <[email protected]>
    Reviewed-by: Ian Maxon <[email protected]>
    Tested-by: Jenkins <[email protected]>
---
 .../java/org/apache/asterix/app/translator/QueryTranslator.java     | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

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 c3f7c55469..c4f5b3d01c 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
@@ -392,6 +392,7 @@ public class QueryTranslator extends AbstractLangTranslator 
implements IStatemen
         final ResultMetadata outMetadata = requestParameters.getOutMetadata();
         final Map<String, IAObject> stmtParams = 
requestParameters.getStatementParameters();
         warningCollector.setMaxWarnings(sessionConfig.getMaxWarnings());
+        boolean stmtWithAsyncSupportUsed = false;
         try {
             for (Statement stmt : statements) {
                 if (sessionConfig.is(SessionConfig.FORMAT_HTML)) {
@@ -521,6 +522,7 @@ public class QueryTranslator extends AbstractLangTranslator 
implements IStatemen
                         }
                         handleCopyToStatement(metadataProvider, stmt, hcc, 
resultSet, resultDelivery, outMetadata,
                                 requestParameters, stmtParams, stats);
+                        stmtWithAsyncSupportUsed = true;
                         break;
                     case INSERT:
                     case UPDATE:
@@ -530,6 +532,7 @@ public class QueryTranslator extends AbstractLangTranslator 
implements IStatemen
                             metadataProvider.setResultAsyncMode(resultDelivery 
== ResultDelivery.ASYNC
                                     || resultDelivery == 
ResultDelivery.DEFERRED);
                             metadataProvider.setMaxResultReads(maxResultReads);
+                            stmtWithAsyncSupportUsed = true;
                         }
                         if (stats.getProfileType() == Stats.ProfileType.FULL) {
                             this.jobFlags.add(JobFlag.PROFILE_RUNTIME);
@@ -575,6 +578,7 @@ public class QueryTranslator extends AbstractLangTranslator 
implements IStatemen
                         }
                         handleQuery(metadataProvider, (Query) stmt, hcc, 
resultSet, resultDelivery, outMetadata, stats,
                                 requestParameters, stmtParams, stmtRewriter);
+                        stmtWithAsyncSupportUsed = true;
                         break;
                     case ANALYZE:
                         handleAnalyzeStatement(metadataProvider, stmt, hcc, 
requestParameters);
@@ -610,7 +614,7 @@ public class QueryTranslator extends AbstractLangTranslator 
implements IStatemen
             throw ex;
         } finally {
             // async queries are completed after their job completes
-            if (ResultDelivery.ASYNC != resultDelivery) {
+            if (statements.isEmpty() || ResultDelivery.ASYNC != resultDelivery 
|| !stmtWithAsyncSupportUsed) {
                 
appCtx.getRequestTracker().complete(requestParameters.getRequestReference().getUuid());
             }
             Thread.currentThread().setName(threadName);

Reply via email to