diff --git a/src/main/java/teetime/framework/AbstractRunnableStage.java b/src/main/java/teetime/framework/AbstractRunnableStage.java index 2739161a86a81c7fa18d57a8df215f809e21701b..6a60232182d242ffbf3641d5f47651f82fa9b9f7 100644 --- a/src/main/java/teetime/framework/AbstractRunnableStage.java +++ b/src/main/java/teetime/framework/AbstractRunnableStage.java @@ -53,7 +53,7 @@ abstract class AbstractRunnableStage implements Runnable { executeStage(); } } catch (TerminateException e) { - this.stage.terminate(); + this.stage.abort(); stage.getOwningContext().abortConfigurationRun(); } finally { afterStageExecution(); diff --git a/src/main/java/teetime/framework/AbstractStage.java b/src/main/java/teetime/framework/AbstractStage.java index da8144202a25ec4c17f880f3b3b0e499ad3e7d38..6a6769cae34e0e2bdad803326a9bddcedfefa4dd 100644 --- a/src/main/java/teetime/framework/AbstractStage.java +++ b/src/main/java/teetime/framework/AbstractStage.java @@ -254,9 +254,14 @@ public abstract class AbstractStage extends Stage { @Override protected void terminate() { changeState(StageState.TERMINATING); - getOwningThread().interrupt(); } + @Override + protected void abort() { + this.terminate(); + this.getOwningThread().interrupt(); + }; + @Override protected boolean shouldBeTerminated() { return (getCurrentState() == StageState.TERMINATING); diff --git a/src/main/java/teetime/framework/Stage.java b/src/main/java/teetime/framework/Stage.java index ae33ba66d87b285c4b6adb1f85f7b4e79ed358cd..4cc0cf7673b735c4641265ac624e68d0204a1970 100644 --- a/src/main/java/teetime/framework/Stage.java +++ b/src/main/java/teetime/framework/Stage.java @@ -134,6 +134,8 @@ public abstract class Stage { protected abstract void terminate(); + protected abstract void abort(); + protected abstract boolean shouldBeTerminated(); public abstract StageState getCurrentState(); diff --git a/src/main/java/teetime/framework/ThreadService.java b/src/main/java/teetime/framework/ThreadService.java index de097190d01fbe68e913b394659ef9a747d6163f..4528ed5c90e621ce93fc0a038b46b36add26eafe 100644 --- a/src/main/java/teetime/framework/ThreadService.java +++ b/src/main/java/teetime/framework/ThreadService.java @@ -149,7 +149,7 @@ class ThreadService extends AbstractService<ThreadService> { private void abortStages(final Set<Stage> currentTreadableStages) { synchronized (currentTreadableStages) { for (Stage stage : currentTreadableStages) { - stage.terminate(); + stage.abort(); } } } diff --git a/src/test/java/teetime/framework/TerminationTest.java b/src/test/java/teetime/framework/TerminationTest.java index 10d00f1c2e27bc2c2414601a17104e395077b37d..ac8767608de4dfc61647426a8b7579929dc7fd70 100644 --- a/src/test/java/teetime/framework/TerminationTest.java +++ b/src/test/java/teetime/framework/TerminationTest.java @@ -94,6 +94,9 @@ public class TerminationTest { @Override protected void terminate() {} + @Override + protected void abort() {} + } private class Propagator extends AbstractConsumerStage<Integer> {