[NO ISSUE][RT] Fail Fast When Interrupted on Frame Write Attempt

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

Details:
- Before writing a frame to the next operator, check the thread
  interrupted status and fail fast if the thread is interrupted.
  This ensures that queries that were aborted will fail as soon
  as they attempt to write a frame.

Change-Id: If4f154f11305e2f8286e0707b5b3adec905633a4
Reviewed-on: https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/4203
Integration-Tests: Jenkins <jenkins@fulliautomatix.ics.uci.edu>
Tested-by: Jenkins <jenkins@fulliautomatix.ics.uci.edu>
Reviewed-by: Murtadha Hubail <mhubail@apache.org>
Reviewed-by: Till Westmann <tillw@apache.org>
diff --git a/hyracks-fullstack/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/comm/io/AbstractFrameAppender.java b/hyracks-fullstack/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/comm/io/AbstractFrameAppender.java
index 18ddf3e..a9371e9 100644
--- a/hyracks-fullstack/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/comm/io/AbstractFrameAppender.java
+++ b/hyracks-fullstack/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/comm/io/AbstractFrameAppender.java
@@ -89,6 +89,7 @@
 
     @Override
     public void write(IFrameWriter outWriter, boolean clearFrame) throws HyracksDataException {
+        failIfInterrupted();
         getBuffer().clear();
         outWriter.nextFrame(getBuffer());
         if (clearFrame) {
@@ -126,4 +127,10 @@
             tracer.durationE(tid, traceCategory, args);
         }
     }
+
+    protected void failIfInterrupted() throws HyracksDataException {
+        if (Thread.currentThread().isInterrupted()) {
+            throw HyracksDataException.create(new InterruptedException());
+        }
+    }
 }
diff --git a/hyracks-fullstack/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/io/MessagingFrameTupleAppender.java b/hyracks-fullstack/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/io/MessagingFrameTupleAppender.java
index 77020f8..c27a7e6 100644
--- a/hyracks-fullstack/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/io/MessagingFrameTupleAppender.java
+++ b/hyracks-fullstack/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/io/MessagingFrameTupleAppender.java
@@ -110,6 +110,7 @@
 
     @Override
     public void write(IFrameWriter outWriter, boolean clearFrame) throws HyracksDataException {
+        failIfInterrupted();
         if (!initialized) {
             init();
         }