diff options
Diffstat (limited to 'plugins/plugins-executor')
2 files changed, 17 insertions, 5 deletions
diff --git a/plugins/plugins-executor/plugins-executor-javascript/src/main/java/org/onap/policy/apex/plugins/executor/javascript/JavascriptExecutor.java b/plugins/plugins-executor/plugins-executor-javascript/src/main/java/org/onap/policy/apex/plugins/executor/javascript/JavascriptExecutor.java index 489489ff0..f70bf580b 100644 --- a/plugins/plugins-executor/plugins-executor-javascript/src/main/java/org/onap/policy/apex/plugins/executor/javascript/JavascriptExecutor.java +++ b/plugins/plugins-executor/plugins-executor-javascript/src/main/java/org/onap/policy/apex/plugins/executor/javascript/JavascriptExecutor.java @@ -56,6 +56,7 @@ public class JavascriptExecutor implements Runnable { // Recurring string constants private static final String WITH_MESSAGE = " with message: "; private static final String JAVASCRIPT_EXECUTOR = "JavascriptExecutor "; + private static final String EXECUTION_FAILED_EXECUTOR = "execution failed, executor "; @Setter(AccessLevel.PROTECTED) private static TimeUnit timeunit4Latches = TimeUnit.SECONDS; @@ -132,6 +133,11 @@ public class JavascriptExecutor implements Runnable { Thread.currentThread().interrupt(); } + if (executorException.get() != null) { + executorThread.interrupt(); + checkAndThrowExecutorException(); + } + checkAndThrowExecutorException(); LOGGER.debug("JavascriptExecutor {} started ... ", subjectKey.getId()); @@ -146,11 +152,11 @@ public class JavascriptExecutor implements Runnable { */ public synchronized boolean execute(final Object executionContext) throws StateMachineException { if (executorThread == null) { - throw new StateMachineException("execution failed, executor " + subjectKey.getId() + " is not initialized"); + throw new StateMachineException(EXECUTION_FAILED_EXECUTOR + subjectKey.getId() + " is not initialized"); } - if (!executorThread.isAlive()) { - throw new StateMachineException("execution failed, executor " + subjectKey.getId() + if (!executorThread.isAlive() || executorThread.isInterrupted()) { + throw new StateMachineException(EXECUTION_FAILED_EXECUTOR + subjectKey.getId() + " is not running, run cleanUp to clear executor and init to restart executor"); } diff --git a/plugins/plugins-executor/plugins-executor-javascript/src/test/java/org/onap/policy/apex/plugins/executor/javascript/JavascriptExecutorTest.java b/plugins/plugins-executor/plugins-executor-javascript/src/test/java/org/onap/policy/apex/plugins/executor/javascript/JavascriptExecutorTest.java index 6ea15fc35..56ebf9972 100644 --- a/plugins/plugins-executor/plugins-executor-javascript/src/test/java/org/onap/policy/apex/plugins/executor/javascript/JavascriptExecutorTest.java +++ b/plugins/plugins-executor/plugins-executor-javascript/src/test/java/org/onap/policy/apex/plugins/executor/javascript/JavascriptExecutorTest.java @@ -34,8 +34,12 @@ import org.junit.Before; import org.junit.Test; import org.onap.policy.apex.core.engine.executor.exception.StateMachineException; import org.onap.policy.apex.model.basicmodel.concepts.AxArtifactKey; +import org.slf4j.ext.XLogger; +import org.slf4j.ext.XLoggerFactory; public class JavascriptExecutorTest { + private static final XLogger LOGGER = XLoggerFactory.getXLogger(JavascriptExecutorTest.class); + private AtomicBoolean concurrentResult = new AtomicBoolean(); @Before @@ -277,12 +281,14 @@ public class JavascriptExecutorTest { public void run() { try { while (executor.execute("hello")) { + LOGGER.debug("test thread running . . ."); // Loop until interrupted } - concurrentResult.set(false); } catch (StateMachineException e) { - // Do nothing + LOGGER.debug("test thread caught exception", e); } + concurrentResult.set(false); + LOGGER.debug("test thread exited"); } }).start(); |