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
commit f5cf736db8e43446ccc07d0afeab458a249be45d Author: Murtadha Hubail <[email protected]> AuthorDate: Mon Nov 18 06:14:25 2019 +0300 [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 <[email protected]> Tested-by: Jenkins <[email protected]> Reviewed-by: Murtadha Hubail <[email protected]> Reviewed-by: Till Westmann <[email protected]> --- .../hyracks/dataflow/common/comm/io/AbstractFrameAppender.java | 7 +++++++ .../hyracks/dataflow/common/io/MessagingFrameTupleAppender.java | 1 + 2 files changed, 8 insertions(+) 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 @@ public class AbstractFrameAppender implements IFrameAppender { @Override public void write(IFrameWriter outWriter, boolean clearFrame) throws HyracksDataException { + failIfInterrupted(); getBuffer().clear(); outWriter.nextFrame(getBuffer()); if (clearFrame) { @@ -126,4 +127,10 @@ public class AbstractFrameAppender implements IFrameAppender { 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 @@ public class MessagingFrameTupleAppender extends FrameTupleAppender { @Override public void write(IFrameWriter outWriter, boolean clearFrame) throws HyracksDataException { + failIfInterrupted(); if (!initialized) { init(); }
