Additional refactoring to open the file only when necessary.
diff --git a/hyracks/hyracks-control/hyracks-control-nc/src/main/java/edu/uci/ics/hyracks/control/nc/dataset/ResultState.java b/hyracks/hyracks-control/hyracks-control-nc/src/main/java/edu/uci/ics/hyracks/control/nc/dataset/ResultState.java
index 097c663..70d9714 100644
--- a/hyracks/hyracks-control/hyracks-control-nc/src/main/java/edu/uci/ics/hyracks/control/nc/dataset/ResultState.java
+++ b/hyracks/hyracks-control/hyracks-control-nc/src/main/java/edu/uci/ics/hyracks/control/nc/dataset/ResultState.java
@@ -58,14 +58,13 @@
         this.frameSize = frameSize;
         eos = new AtomicBoolean(false);
         localPageList = new ArrayList<Page>();
+
+        writeFileHandle = null;
     }
 
     public synchronized void open(FileReference fileRef) throws HyracksDataException {
         this.fileRef = fileRef;
 
-        writeFileHandle = ioManager.open(fileRef, IIOManager.FileReadWriteMode.READ_WRITE,
-                IIOManager.FileSyncMode.METADATA_ASYNC_DATA_ASYNC);
-
         size = 0;
         persistentSize = 0;
         notifyAll();
@@ -170,6 +169,11 @@
 
         page.getBuffer().flip();
 
+        if (writeFileHandle == null) {
+            writeFileHandle = ioManager.open(fileRef, IIOManager.FileReadWriteMode.READ_WRITE,
+                    IIOManager.FileSyncMode.METADATA_ASYNC_DATA_ASYNC);
+        }
+
         long delta = ioManager.syncWrite(writeFileHandle, persistentSize, page.getBuffer());
         persistentSize += delta;
         return page;