diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/RunState.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/RunState.java
index 0476dc762..17180dfc9 100644
--- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/RunState.java
+++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityapi/core/RunState.java
@@ -106,7 +106,7 @@ public enum RunState {
case Stopping, Finished, Errored -> true;// A motor has exhausted its input, and is finished with its work
default -> false;
};
- case Stopping -> (target == Stopped||target==Finished); // A motor was stopped by request before exhausting input
+ case Stopping -> (target == Stopped||target==Finished||target==Errored); // A motor was stopped by request before exhausting input
case Finished -> (target == Running); // A motor was restarted?
case Errored -> target==Errored;
};
diff --git a/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/activity/ActivityExecutor.java b/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/activity/ActivityExecutor.java
index bfdaf695e..8b55b6717 100644
--- a/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/activity/ActivityExecutor.java
+++ b/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/activity/ActivityExecutor.java
@@ -87,10 +87,10 @@ public class ActivityExecutor implements ActivityController, ParameterMap.Listen
activity.setRunState(RunState.Stopping);
motors.forEach(Motor::requestStop);
- tally.awaitNoneOther(RunState.Stopped, RunState.Finished);
+ tally.awaitNoneOther(RunState.Stopped, RunState.Finished, RunState.Errored);
shutdownExecutorService(Integer.MAX_VALUE);
- tally.awaitNoneOther(RunState.Stopped, RunState.Finished);
+ tally.awaitNoneOther(RunState.Stopped, RunState.Finished, RunState.Errored);
activity.setRunState(RunState.Stopped);
logger.info(() -> "stopped: " + this.getActivityDef().getAlias() + " with " + motors.size() + " slots");
@@ -349,7 +349,7 @@ public class ActivityExecutor implements ActivityController, ParameterMap.Listen
return activity;
}
- public void notifyException(Thread t, Throwable e) {
+ public synchronized void notifyException(Thread t, Throwable e) {
logger.debug(() -> "Uncaught exception in activity thread forwarded to activity executor: " + e.getMessage());
this.exception = new RuntimeException("Error in activity thread " + t.getName(), e);
this.requestStopMotors();
diff --git a/mvn-defaults/pom.xml b/mvn-defaults/pom.xml
index 86b3f7919..96d7baf94 100644
--- a/mvn-defaults/pom.xml
+++ b/mvn-defaults/pom.xml
@@ -79,7 +79,7 @@
org.snakeyaml
snakeyaml-engine
- 2.5
+ 2.6