De-init the state only if the state for a partition was initialized at all on this node controller.
diff --git a/hyracks/hyracks-control/hyracks-control-nc/src/main/java/edu/uci/ics/hyracks/control/nc/dataset/DatasetPartitionManager.java b/hyracks/hyracks-control/hyracks-control-nc/src/main/java/edu/uci/ics/hyracks/control/nc/dataset/DatasetPartitionManager.java
index af9a607..04dfb33 100644
--- a/hyracks/hyracks-control/hyracks-control-nc/src/main/java/edu/uci/ics/hyracks/control/nc/dataset/DatasetPartitionManager.java
+++ b/hyracks/hyracks-control/hyracks-control-nc/src/main/java/edu/uci/ics/hyracks/control/nc/dataset/DatasetPartitionManager.java
@@ -55,13 +55,19 @@
             private static final long serialVersionUID = 1L;
 
             protected boolean removeEldestEntry(Map.Entry<JobId, ResultState[]> eldest) {
-                if (size() > resultHistorySize) {
-                    for (ResultState state : eldest.getValue()) {
-                        state.deinit();
+                synchronized (DatasetPartitionManager.this) {
+                    if (size() > resultHistorySize) {
+                        ResultState[] resultStates = eldest.getValue();
+                        for (int i = 0; i < resultStates.length; i++) {
+                            ResultState state = resultStates[i];
+                            if (state != null) {
+                                state.deinit();
+                            }
+                        }
+                        return true;
                     }
-                    return true;
+                    return false;
                 }
-                return false;
             }
         };
     }