From a37b7d6efdabe41521bd1a7d08b753b512110bcf Mon Sep 17 00:00:00 2001 From: Nelson Tavares de Sousa <stu103017@mail.uni-kiel.de> Date: Fri, 7 Aug 2015 14:21:40 +0200 Subject: [PATCH] fixed bug which caused an interrupt upon correct termination --- src/main/java/teetime/framework/AbstractRunnableStage.java | 2 +- src/main/java/teetime/framework/AbstractStage.java | 7 ++++++- src/main/java/teetime/framework/Stage.java | 2 ++ src/main/java/teetime/framework/ThreadService.java | 2 +- src/test/java/teetime/framework/TerminationTest.java | 3 +++ 5 files changed, 13 insertions(+), 3 deletions(-) diff --git a/src/main/java/teetime/framework/AbstractRunnableStage.java b/src/main/java/teetime/framework/AbstractRunnableStage.java index 2739161a..6a602321 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 da814420..6a6769ca 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 ae33ba66..4cc0cf76 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 de097190..4528ed5c 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 10d00f1c..ac876760 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> { -- GitLab