diff --git a/spring-statemachine-core/src/main/java/org/springframework/statemachine/support/DefaultStateMachineExecutor.java b/spring-statemachine-core/src/main/java/org/springframework/statemachine/support/DefaultStateMachineExecutor.java index 5a6616d1..3ad5673f 100644 --- a/spring-statemachine-core/src/main/java/org/springframework/statemachine/support/DefaultStateMachineExecutor.java +++ b/spring-statemachine-core/src/main/java/org/springframework/statemachine/support/DefaultStateMachineExecutor.java @@ -384,8 +384,16 @@ public class DefaultStateMachineExecutor extends LifecycleObjectSupport im } private void processTriggerQueue() { + while(processTriggerQueueUntilConsumed()) { + if (log.isTraceEnabled()) { + log.trace("calling next processTriggerQueueUntilConsumed"); + } + } + } + + private boolean processTriggerQueueUntilConsumed() { if (!isRunning()) { - return; + return false; } if (!initialHandled.getAndSet(true)) { ArrayList> trans = new ArrayList>(); @@ -396,7 +404,7 @@ public class DefaultStateMachineExecutor extends LifecycleObjectSupport im } else { handleInitialTrans(initialTransition, forwardedInitialEvent); } - return; + return false; } if (log.isDebugEnabled()) { log.debug("Process trigger queue, size=" + triggerQueue.size() + " " + this); @@ -464,7 +472,7 @@ public class DefaultStateMachineExecutor extends LifecycleObjectSupport im transit = handleTriggerTrans(transWithGuards, queuedMessage); } while (transit); } - + return !triggerQueue.isEmpty(); } @Override