Merge branch 'gerrit/stabilization-6a10f3f81d' into 'gerrit/trinity'
Ext-ref: MB-61840
Change-Id: I5ac772b21a4cbaa2e6c1a14969149b0715508f97
diff --git a/hyracks-fullstack/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/join/OptimizedHybridHashJoin.java b/hyracks-fullstack/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/join/OptimizedHybridHashJoin.java
index 04f5fe8..ddf94db 100644
--- a/hyracks-fullstack/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/join/OptimizedHybridHashJoin.java
+++ b/hyracks-fullstack/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/join/OptimizedHybridHashJoin.java
@@ -255,7 +255,7 @@
}
}
- public void fail() throws HyracksDataException {
+ public void fail() {
for (RunFileWriter writer : buildRFWriters) {
if (writer != null) {
CleanupUtils.fail(writer, null);
diff --git a/hyracks-fullstack/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/join/OptimizedHybridHashJoinOperatorDescriptor.java b/hyracks-fullstack/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/join/OptimizedHybridHashJoinOperatorDescriptor.java
index ed53a7e..91e94dc 100644
--- a/hyracks-fullstack/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/join/OptimizedHybridHashJoinOperatorDescriptor.java
+++ b/hyracks-fullstack/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/join/OptimizedHybridHashJoinOperatorDescriptor.java
@@ -47,6 +47,7 @@
import org.apache.hyracks.api.job.JobId;
import org.apache.hyracks.api.job.profiling.IOperatorStats;
import org.apache.hyracks.api.job.profiling.NoOpOperatorStats;
+import org.apache.hyracks.api.util.CleanupUtils;
import org.apache.hyracks.dataflow.common.comm.io.ArrayTupleBuilder;
import org.apache.hyracks.dataflow.common.comm.io.FrameTupleAccessor;
import org.apache.hyracks.dataflow.common.comm.io.FrameTupleAppender;
@@ -440,6 +441,7 @@
}
return;
}
+ Throwable ex = null;
try {
try {
state.hybridHJ.completeProbe(writer);
@@ -470,19 +472,21 @@
joinPartitionPair(bReader, pReader, bSize, pSize, 1);
}
} catch (Exception e) {
+ ex = e;
if (state.hybridHJ != null) {
state.hybridHJ.fail();
}
// Since writer.nextFrame() is called in the above "try" body, we have to call writer.fail()
// to send the failure signal to the downstream, when there is a throwable thrown.
- writer.fail();
+ CleanupUtils.fail(writer, ex);
// Clear temp files as this.fail() nor this.close() will no longer be called after close().
state.hybridHJ.clearBuildTempFiles();
state.hybridHJ.clearProbeTempFiles();
- // Re-throw the whatever is caught.
- throw e;
} finally {
- writer.close();
+ ex = CleanupUtils.close(writer, ex);
+ }
+ if (ex != null) {
+ throw HyracksDataException.create(ex);
}
}