Details
-
Bug
-
Resolution: Obsolete
-
Neutral
-
None
-
5.4, 5.5
-
None
-
None
Description
These are assumptions and should be verified:
Compared to jBPM's persistency using JPA we do not use transactions for storing processes, instead we eagerly persist the status under certain conditions.
org.drools.persistence.SimpleSessionCommandService is where the transactions would be committed or rolled back.
Here's where we decide when to persist:
org.jbpm.persistence.JcrPersistProcessInterceptor#isValidCommand
IMO this is the reason that we sometimes run into ConcurrentModificationExceptions.
Here's the stacktrace:
2015-07-15 15:53:54,727 INFO info.magnolia.module.scheduler.CommandJob : Starting job [asyncCommand1436968434726]... 2015-07-15 15:53:54,733 WARN info.magnolia.event.SimpleEventBus : Exception caught when dispatching a class info.magnolia.task.event.TaskEvent event with class info.magnolia.module.workflow.jbpm.humantask.ProcessTaskEventHandler eventHandler. org.jbpm.workflow.instance.WorkflowRuntimeException: [info.magnolia.workflow.ReviewForPublication:1,436,967,381,809 - Publication:4] -- null at org.jbpm.workflow.instance.impl.NodeInstanceImpl.trigger(NodeInstanceImpl.java:177) at org.jbpm.workflow.instance.impl.NodeInstanceImpl.triggerNodeInstance(NodeInstanceImpl.java:364) at org.jbpm.workflow.instance.impl.NodeInstanceImpl.triggerConnection(NodeInstanceImpl.java:379) at org.jbpm.workflow.instance.node.SplitInstance.executeStrategy(SplitInstance.java:117) at org.jbpm.workflow.instance.node.SplitInstance.internalTrigger(SplitInstance.java:63) at org.jbpm.workflow.instance.impl.NodeInstanceImpl.trigger(NodeInstanceImpl.java:171) at org.jbpm.workflow.instance.impl.NodeInstanceImpl.triggerNodeInstance(NodeInstanceImpl.java:364) at org.jbpm.workflow.instance.impl.NodeInstanceImpl.triggerCompleted(NodeInstanceImpl.java:323) at org.jbpm.workflow.instance.impl.ExtendedNodeInstanceImpl.triggerCompleted(ExtendedNodeInstanceImpl.java:44) at org.jbpm.workflow.instance.node.StateBasedNodeInstance.triggerCompleted(StateBasedNodeInstance.java:341) at org.jbpm.workflow.instance.node.StateBasedNodeInstance.triggerCompleted(StateBasedNodeInstance.java:318) at org.jbpm.workflow.instance.node.WorkItemNodeInstance.triggerCompleted(WorkItemNodeInstance.java:316) at org.jbpm.workflow.instance.node.HumanTaskNodeInstance.triggerCompleted(HumanTaskNodeInstance.java:93) at org.jbpm.workflow.instance.node.WorkItemNodeInstance.workItemCompleted(WorkItemNodeInstance.java:378) at org.jbpm.workflow.instance.node.WorkItemNodeInstance.signalEvent(WorkItemNodeInstance.java:354) at org.jbpm.workflow.instance.impl.WorkflowProcessInstanceImpl.signalEvent(WorkflowProcessInstanceImpl.java:434) at org.drools.persistence.jcr.processinstance.JcrWorkItemManager.completeWorkItem(JcrWorkItemManager.java:168) at org.drools.core.command.runtime.process.CompleteWorkItemCommand.execute(CompleteWorkItemCommand.java:75) .... used by: java.util.ConcurrentModificationException at java.util.HashMap$HashIterator.nextEntry(HashMap.java:922) at java.util.HashMap$EntryIterator.next(HashMap.java:962) at java.util.HashMap$EntryIterator.next(HashMap.java:960) at java.util.HashMap.writeObject(HashMap.java:1127) at sun.reflect.GeneratedMethodAccessor660.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:988) at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1495) at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1431) at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1177) at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:347) at java.util.ArrayList.writeObject(ArrayList.java:742) at sun.reflect.GeneratedMethodAccessor675.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:988) at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1495) at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1431) at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1177) at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:347) at java.util.HashMap.writeObject(HashMap.java:1129) at sun.reflect.GeneratedMethodAccessor660.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:988) at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1495) at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1431) at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1177) at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:347) at java.util.ArrayList.writeObject(ArrayList.java:742) at sun.reflect.GeneratedMethodAccessor675.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:988) at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1495) at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1431) at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1177) at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:347) at org.drools.core.marshalling.impl.SerializablePlaceholderResolverStrategy$SerializablePlaceholderStrategyContext.write(SerializablePlaceholderResolverStrategy.java:97) at org.drools.core.marshalling.impl.PersisterHelper.writeStrategiesIndex(PersisterHelper.java:218) at org.drools.core.marshalling.impl.PersisterHelper.writeToStreamWithHeader(PersisterHelper.java:198) at org.jbpm.persistence.processinstance.ProcessInstanceInfo.transform(ProcessInstanceInfo.java:221) at org.jbpm.persistence.JcrPersistProcessInterceptor$PersistProcessCommand.execute(JcrPersistProcessInterceptor.java:109) at org.jbpm.persistence.JcrPersistProcessInterceptor$PersistProcessCommand.execute(JcrPersistProcessInterceptor.java:88) at org.drools.core.command.impl.DefaultCommandService.execute(DefaultCommandService.java:36) at org.drools.core.command.impl.AbstractInterceptor.executeNext(AbstractInterceptor.java:41) at org.drools.persistence.SimpleSessionCommandService$TransactionInterceptor.execute(SimpleSessionCommandService.java:334) at org.drools.core.command.impl.AbstractInterceptor.executeNext(AbstractInterceptor.java:41) at org.drools.persistence.jcr.JcrPersistInterceptor.execute(JcrPersistInterceptor.java:42) at org.drools.core.command.impl.AbstractInterceptor.executeNext(AbstractInterceptor.java:41) at org.jbpm.persistence.JcrPersistProcessInterceptor.execute(JcrPersistProcessInterceptor.java:63) at org.drools.persistence.SimpleSessionCommandService.execute(SimpleSessionCommandService.java:251) at org.drools.core.command.impl.CommandBasedStatefulKnowledgeSession.startProcessInstance(CommandBasedStatefulKnowledgeSession.java:256) at org.jbpm.workflow.instance.node.SubProcessNodeInstance.internalTrigger(SubProcessNodeInstance.java:188) at org.jbpm.workflow.instance.impl.NodeInstanceImpl.trigger(NodeInstanceImpl.java:171) ... 162 more
Checklists
Acceptance criteria
Attachments
Issue Links
- is duplicated by
-
MGNLWORKFLOW-333 ConcurrentModificationException occurred when item was published
-
- Closed
-