From fc4837dbb1f2d266b4068941df30c5c804fc4333 Mon Sep 17 00:00:00 2001 From: Joram Barrez Date: Thu, 16 Apr 2015 21:45:29 +0200 Subject: [PATCH] Fixing async gateway test. With a serious change in the way optimistic locking handled --- .../asyncexecutor/ExecuteAsyncRunnable.java | 7 +++- .../entity/ExecutionEntityManager.java | 36 ++++++++++--------- .../bpmn/gateway/InclusiveGatewayTest.java | 2 +- ...veGatewayTest.testAsyncBehavior.bpmn20.xml | 2 +- 4 files changed, 28 insertions(+), 19 deletions(-) diff --git a/modules/activiti-engine/src/main/java/org/activiti/engine/impl/asyncexecutor/ExecuteAsyncRunnable.java b/modules/activiti-engine/src/main/java/org/activiti/engine/impl/asyncexecutor/ExecuteAsyncRunnable.java index d49791e289..85bddaead8 100644 --- a/modules/activiti-engine/src/main/java/org/activiti/engine/impl/asyncexecutor/ExecuteAsyncRunnable.java +++ b/modules/activiti-engine/src/main/java/org/activiti/engine/impl/asyncexecutor/ExecuteAsyncRunnable.java @@ -61,7 +61,12 @@ public class ExecuteAsyncRunnable implements Runnable { optimisticLockingException.getMessage()); } - commandContext.getJobEntityManager().retryAsyncJob(job); + commandExecutor.execute(new Command() { + public Void execute(CommandContext commandContext) { + commandContext.getJobEntityManager().retryAsyncJob(job); + return null; + } + }); return; } catch (Throwable t) { diff --git a/modules/activiti-engine/src/main/java/org/activiti/engine/impl/persistence/entity/ExecutionEntityManager.java b/modules/activiti-engine/src/main/java/org/activiti/engine/impl/persistence/entity/ExecutionEntityManager.java index e695ae7ae1..98e52703bf 100644 --- a/modules/activiti-engine/src/main/java/org/activiti/engine/impl/persistence/entity/ExecutionEntityManager.java +++ b/modules/activiti-engine/src/main/java/org/activiti/engine/impl/persistence/entity/ExecutionEntityManager.java @@ -23,6 +23,7 @@ import java.util.List; import java.util.Map; import org.activiti.engine.ActivitiObjectNotFoundException; +import org.activiti.engine.ActivitiOptimisticLockingException; import org.activiti.engine.delegate.event.ActivitiEventType; import org.activiti.engine.delegate.event.impl.ActivitiEventBuilder; import org.activiti.engine.impl.ExecutionQueryImpl; @@ -223,22 +224,6 @@ public class ExecutionEntityManager extends AbstractEntityManager params = new HashMap(); - params.put("id", processInstanceId); - params.put("lockTime", lockCal.getTime()); - params.put("expirationTime", expirationTime); - - getDbSqlSession().update("updateProcessInstanceLockTime", params); - } - // DELETE METHODS @@ -294,6 +279,25 @@ public class ExecutionEntityManager extends AbstractEntityManager params = new HashMap(); + params.put("id", processInstanceId); + params.put("lockTime", lockCal.getTime()); + params.put("expirationTime", expirationTime); + + int result = getDbSqlSession().update("updateProcessInstanceLockTime", params); + if (result == 0) { + throw new ActivitiOptimisticLockingException("JORAM123"); + } + } + public void clearProcessInstanceLockTime(String processInstanceId) { HashMap params = new HashMap(); diff --git a/modules/activiti-engine/src/test/java/org/activiti/engine/test/bpmn/gateway/InclusiveGatewayTest.java b/modules/activiti-engine/src/test/java/org/activiti/engine/test/bpmn/gateway/InclusiveGatewayTest.java index 25e0f79a53..14d161aa2e 100644 --- a/modules/activiti-engine/src/test/java/org/activiti/engine/test/bpmn/gateway/InclusiveGatewayTest.java +++ b/modules/activiti-engine/src/test/java/org/activiti/engine/test/bpmn/gateway/InclusiveGatewayTest.java @@ -433,7 +433,7 @@ public class InclusiveGatewayTest extends PluggableActivitiTestCase { @Deployment public void testAsyncBehavior() { ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("async"); - waitForJobExecutorToProcessAllJobs(500000000L, 5000L); + waitForJobExecutorToProcessAllJobs(5000L, 250); assertEquals(0, runtimeService.createProcessInstanceQuery().processInstanceId(processInstance.getId()).count()); } diff --git a/modules/activiti-engine/src/test/resources/org/activiti/engine/test/bpmn/gateway/InclusiveGatewayTest.testAsyncBehavior.bpmn20.xml b/modules/activiti-engine/src/test/resources/org/activiti/engine/test/bpmn/gateway/InclusiveGatewayTest.testAsyncBehavior.bpmn20.xml index 37f5feded2..c37aaf8e72 100644 --- a/modules/activiti-engine/src/test/resources/org/activiti/engine/test/bpmn/gateway/InclusiveGatewayTest.testAsyncBehavior.bpmn20.xml +++ b/modules/activiti-engine/src/test/resources/org/activiti/engine/test/bpmn/gateway/InclusiveGatewayTest.testAsyncBehavior.bpmn20.xml @@ -18,7 +18,7 @@ - + -- GitLab