Fixed race condition when aborting
git-svn-id: https://hyracks.googlecode.com/svn/trunk@616 123451ca-8445-de46-9d55-352943316053
diff --git a/hyracks/hyracks-control-nc/src/main/java/edu/uci/ics/hyracks/control/nc/Stagelet.java b/hyracks/hyracks-control-nc/src/main/java/edu/uci/ics/hyracks/control/nc/Stagelet.java
index a838f55..7b5c1b7 100644
--- a/hyracks/hyracks-control-nc/src/main/java/edu/uci/ics/hyracks/control/nc/Stagelet.java
+++ b/hyracks/hyracks-control-nc/src/main/java/edu/uci/ics/hyracks/control/nc/Stagelet.java
@@ -65,7 +65,7 @@
private boolean started;
- private volatile boolean abort;
+ private boolean abort;
private final Set<OperatorInstanceId> pendingOperators;
@@ -109,10 +109,14 @@
public synchronized void abort() {
this.abort = true;
- notifyAll();
for (OperatorRunnable r : honMap.values()) {
r.abort();
}
+ notifyAll();
+ }
+
+ private synchronized boolean aborted() {
+ return abort;
}
public void installRunnable(final OperatorInstanceId opIId) {
@@ -126,10 +130,10 @@
try {
waitUntilStarted();
} catch (InterruptedException e) {
- e.printStackTrace();
+ Thread.currentThread().interrupt();
return;
}
- if (abort) {
+ if (aborted()) {
return;
}
try {