Murtadha Hubail has uploaded a new change for review.

  https://asterix-gerrit.ics.uci.edu/3250

Change subject: [NO ISSUE][OTH] Catch All Interrupts on Request Cancellation
......................................................................

[NO ISSUE][OTH] Catch All Interrupts on Request Cancellation

- user model changes: no
- storage format changes: no
- interface changes: no

Details:
- Catch all exception that could be caused by an interrupt
  during request cancellation.
- Re-interrupt the thread after job cancellation due to interrupt.

Change-Id: Ib2595ce8a80d8df324e5d97591639d3f9efe1b9d
---
M 
asterixdb/asterix-app/src/main/java/org/apache/asterix/app/translator/QueryTranslator.java
M 
hyracks-fullstack/hyracks/hyracks-ipc/src/main/java/org/apache/hyracks/ipc/impl/HyracksConnection.java
2 files changed, 8 insertions(+), 3 deletions(-)


  git pull ssh://asterix-gerrit.ics.uci.edu:29418/asterixdb 
refs/changes/50/3250/1

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 c49fcdd..0996c6c 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
@@ -66,6 +66,7 @@
 import org.apache.asterix.common.exceptions.AsterixException;
 import org.apache.asterix.common.exceptions.CompilationException;
 import org.apache.asterix.common.exceptions.ErrorCode;
+import org.apache.asterix.common.exceptions.ExceptionUtils;
 import org.apache.asterix.common.exceptions.MetadataException;
 import org.apache.asterix.common.exceptions.RuntimeDataException;
 import org.apache.asterix.common.functions.FunctionSignature;
@@ -2624,9 +2625,12 @@
                 hcc.waitForCompletion(jobId);
                 printer.print(jobId);
             }
-        } catch (InterruptedException e) {
-            Thread.currentThread().interrupt();
-            throw new RuntimeDataException(ErrorCode.REQUEST_CANCELLED, 
clientRequest.getId());
+        } catch (Exception e) {
+            if (ExceptionUtils.getRootCause(e) instanceof 
InterruptedException) {
+                Thread.currentThread().interrupt();
+                throw new RuntimeDataException(ErrorCode.REQUEST_CANCELLED, 
clientRequest.getId());
+            }
+            throw e;
         } finally {
             // complete async jobs after their job completes
             if (ResultDelivery.ASYNC == resultDelivery) {
diff --git 
a/hyracks-fullstack/hyracks/hyracks-ipc/src/main/java/org/apache/hyracks/ipc/impl/HyracksConnection.java
 
b/hyracks-fullstack/hyracks/hyracks-ipc/src/main/java/org/apache/hyracks/ipc/impl/HyracksConnection.java
index faae14b..000967f 100644
--- 
a/hyracks-fullstack/hyracks/hyracks-ipc/src/main/java/org/apache/hyracks/ipc/impl/HyracksConnection.java
+++ 
b/hyracks-fullstack/hyracks/hyracks-ipc/src/main/java/org/apache/hyracks/ipc/impl/HyracksConnection.java
@@ -191,6 +191,7 @@
         } catch (InterruptedException e) {
             // Cancels an on-going job if the current thread gets interrupted.
             cancelJob(jobId);
+            Thread.currentThread().interrupt();
             throw e;
         }
     }

-- 
To view, visit https://asterix-gerrit.ics.uci.edu/3250
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ib2595ce8a80d8df324e5d97591639d3f9efe1b9d
Gerrit-PatchSet: 1
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Murtadha Hubail <[email protected]>

Reply via email to