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]>