diff --git a/spring-statemachine-core/src/main/java/org/springframework/statemachine/service/DefaultStateMachineService.java b/spring-statemachine-core/src/main/java/org/springframework/statemachine/service/DefaultStateMachineService.java index 5439ce30..0fb67ff8 100644 --- a/spring-statemachine-core/src/main/java/org/springframework/statemachine/service/DefaultStateMachineService.java +++ b/spring-statemachine-core/src/main/java/org/springframework/statemachine/service/DefaultStateMachineService.java @@ -82,8 +82,10 @@ public class DefaultStateMachineService implements StateMachineService acquireStateMachine(String machineId, boolean start) { log.info("Acquiring machine with id " + machineId); + StateMachine stateMachine; + // naive sync to handle concurrency with release synchronized (machines) { - StateMachine stateMachine = machines.get(machineId); + stateMachine = machines.get(machineId); if (stateMachine == null) { log.info("Getting new machine from factory with id " + machineId); stateMachine = stateMachineFactory.getStateMachine(machineId); @@ -98,8 +100,9 @@ public class DefaultStateMachineService implements StateMachineService