>From Ali Alsuliman <[email protected]>:
Ali Alsuliman has uploaded this change for review. (
https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/18565 )
Change subject: WIP: catch Task exceptions
......................................................................
WIP: catch Task exceptions
Change-Id: I5e0f1e6b906c15932a3bb7ae740b5a7c89198cae
---
M
hyracks-fullstack/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/comm/IFrameWriter.java
M
hyracks-fullstack/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/comm/IPartitionCollector.java
M
hyracks-fullstack/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/comm/IFrameReader.java
M
hyracks-fullstack/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/Task.java
4 files changed, 34 insertions(+), 9 deletions(-)
git pull ssh://asterix-gerrit.ics.uci.edu:29418/asterixdb
refs/changes/65/18565/1
diff --git
a/hyracks-fullstack/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/comm/IFrameReader.java
b/hyracks-fullstack/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/comm/IFrameReader.java
index 62eacc8..3e7e2ab 100644
---
a/hyracks-fullstack/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/comm/IFrameReader.java
+++
b/hyracks-fullstack/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/comm/IFrameReader.java
@@ -20,7 +20,7 @@
import org.apache.hyracks.api.exceptions.HyracksDataException;
-public interface IFrameReader {
+public interface IFrameReader extends AutoCloseable {
void open() throws HyracksDataException;
boolean nextFrame(IFrame frame) throws HyracksDataException;
diff --git
a/hyracks-fullstack/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/comm/IFrameWriter.java
b/hyracks-fullstack/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/comm/IFrameWriter.java
index 19d7afb..a49f226 100644
---
a/hyracks-fullstack/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/comm/IFrameWriter.java
+++
b/hyracks-fullstack/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/comm/IFrameWriter.java
@@ -56,7 +56,7 @@
* Note: If the call to {@link IFrameWriter#open()} failed, the {@link
IFrameWriter#close()} must still be called by the
* producer.
*/
-public interface IFrameWriter {
+public interface IFrameWriter extends AutoCloseable {
/**
* First call to allocate any resources.
*/
diff --git
a/hyracks-fullstack/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/comm/IPartitionCollector.java
b/hyracks-fullstack/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/comm/IPartitionCollector.java
index 4a977ec..7b52875 100644
---
a/hyracks-fullstack/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/comm/IPartitionCollector.java
+++
b/hyracks-fullstack/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/comm/IPartitionCollector.java
@@ -25,7 +25,7 @@
import org.apache.hyracks.api.job.JobId;
import org.apache.hyracks.api.partitions.PartitionId;
-public interface IPartitionCollector {
+public interface IPartitionCollector extends AutoCloseable {
public JobId getJobId();
public ConnectorDescriptorId getConnectorId();
diff --git
a/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/Task.java
b/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/Task.java
index 0c5c233..9d4d4ae 100644
---
a/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/Task.java
+++
b/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/Task.java
@@ -406,6 +406,7 @@
if (aborted) {
return;
}
+ Exception originalEx = null;
try {
collector.open();
try {
@@ -430,24 +431,39 @@
buffer.compact();
}
} catch (Exception e) {
+ originalEx = e;
try {
writer.fail();
} catch (HyracksDataException e1) {
- e.addSuppressed(e1);
+ originalEx.addSuppressed(e1);
}
- throw e;
} finally {
- writer.close();
+ originalEx = autoClose(writer, originalEx);
}
} finally {
- reader.close();
+ originalEx = autoClose(reader, originalEx);
}
+ } catch (Exception e) {
+ originalEx = ExceptionUtils.suppress(originalEx, e);
} finally {
- collector.close();
+ originalEx = autoClose(collector, originalEx);
}
} catch (Exception e) {
- throw HyracksDataException.create(e);
+ originalEx = ExceptionUtils.suppress(originalEx, e);
}
+ if (originalEx != null) {
+ throw HyracksDataException.create(originalEx);
+ }
+ }
+
+ private static Exception autoClose(AutoCloseable closeable, Exception ex) {
+ Exception exception = ex;
+ try {
+ closeable.close();
+ } catch (Exception e) {
+ exception = ExceptionUtils.suppress(exception, e);
+ }
+ return exception;
}
@Override
--
To view, visit https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/18565
To unsubscribe, or for help writing mail filters, visit
https://asterix-gerrit.ics.uci.edu/settings
Gerrit-Project: asterixdb
Gerrit-Branch: trinity
Gerrit-Change-Id: I5e0f1e6b906c15932a3bb7ae740b5a7c89198cae
Gerrit-Change-Number: 18565
Gerrit-PatchSet: 1
Gerrit-Owner: Ali Alsuliman <[email protected]>
Gerrit-MessageType: newchange