From 20c1f563813a6d7b655df6b094f28a21fa306ad4 Mon Sep 17 00:00:00 2001 From: Janne Valkealahti Date: Wed, 25 Dec 2019 07:40:26 +0000 Subject: [PATCH] Relax sync in DefaultStateMachineService - Now starting machine outside of a sycn block with acquire vs. release. This should allow long running start in a machine to allow next acquire to work faster. - Forwardport #770 - Relates #777 --- .../statemachine/service/DefaultStateMachineService.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) 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