Remove the partition immediately after reading only if the query is a sychronous query.
diff --git a/hyracks/hyracks-control/hyracks-control-nc/src/main/java/edu/uci/ics/hyracks/control/nc/dataset/DatasetPartitionReader.java b/hyracks/hyracks-control/hyracks-control-nc/src/main/java/edu/uci/ics/hyracks/control/nc/dataset/DatasetPartitionReader.java
index a4a7130..b374e18 100644
--- a/hyracks/hyracks-control/hyracks-control-nc/src/main/java/edu/uci/ics/hyracks/control/nc/dataset/DatasetPartitionReader.java
+++ b/hyracks/hyracks-control/hyracks-control-nc/src/main/java/edu/uci/ics/hyracks/control/nc/dataset/DatasetPartitionReader.java
@@ -70,9 +70,12 @@
} finally {
channel.close();
resultState.readClose();
- datasetPartitionManager.removePartition(resultState.getResultSetPartitionId().getJobId(),
- resultState.getResultSetPartitionId().getResultSetId(), resultState
- .getResultSetPartitionId().getPartition());
+ // If the query is a synchronous query, remove its partition as soon as it is read.
+ if (!resultState.getAsyncMode()) {
+ datasetPartitionManager.removePartition(resultState.getResultSetPartitionId().getJobId(),
+ resultState.getResultSetPartitionId().getResultSetId(), resultState
+ .getResultSetPartitionId().getPartition());
+ }
}
} catch (HyracksDataException e) {
throw new RuntimeException(e);