Skip to content
Snippets Groups Projects
Commit a37b7d6e authored by Nelson Tavares de Sousa's avatar Nelson Tavares de Sousa
Browse files

fixed bug which caused an interrupt upon correct termination

parent 433526e5
No related branches found
No related tags found
No related merge requests found
...@@ -53,7 +53,7 @@ abstract class AbstractRunnableStage implements Runnable { ...@@ -53,7 +53,7 @@ abstract class AbstractRunnableStage implements Runnable {
executeStage(); executeStage();
} }
} catch (TerminateException e) { } catch (TerminateException e) {
this.stage.terminate(); this.stage.abort();
stage.getOwningContext().abortConfigurationRun(); stage.getOwningContext().abortConfigurationRun();
} finally { } finally {
afterStageExecution(); afterStageExecution();
......
...@@ -254,9 +254,14 @@ public abstract class AbstractStage extends Stage { ...@@ -254,9 +254,14 @@ public abstract class AbstractStage extends Stage {
@Override @Override
protected void terminate() { protected void terminate() {
changeState(StageState.TERMINATING); changeState(StageState.TERMINATING);
getOwningThread().interrupt();
} }
@Override
protected void abort() {
this.terminate();
this.getOwningThread().interrupt();
};
@Override @Override
protected boolean shouldBeTerminated() { protected boolean shouldBeTerminated() {
return (getCurrentState() == StageState.TERMINATING); return (getCurrentState() == StageState.TERMINATING);
......
...@@ -134,6 +134,8 @@ public abstract class Stage { ...@@ -134,6 +134,8 @@ public abstract class Stage {
protected abstract void terminate(); protected abstract void terminate();
protected abstract void abort();
protected abstract boolean shouldBeTerminated(); protected abstract boolean shouldBeTerminated();
public abstract StageState getCurrentState(); public abstract StageState getCurrentState();
......
...@@ -149,7 +149,7 @@ class ThreadService extends AbstractService<ThreadService> { ...@@ -149,7 +149,7 @@ class ThreadService extends AbstractService<ThreadService> {
private void abortStages(final Set<Stage> currentTreadableStages) { private void abortStages(final Set<Stage> currentTreadableStages) {
synchronized (currentTreadableStages) { synchronized (currentTreadableStages) {
for (Stage stage : currentTreadableStages) { for (Stage stage : currentTreadableStages) {
stage.terminate(); stage.abort();
} }
} }
} }
......
...@@ -94,6 +94,9 @@ public class TerminationTest { ...@@ -94,6 +94,9 @@ public class TerminationTest {
@Override @Override
protected void terminate() {} protected void terminate() {}
@Override
protected void abort() {}
} }
private class Propagator extends AbstractConsumerStage<Integer> { private class Propagator extends AbstractConsumerStage<Integer> {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment