[
https://jira.jboss.org/jira/browse/JBPM-1145?page=com.atlassian.jira.plug...
]
Ivan B commented on JBPM-1145:
------------------------------
I've got the same situation. There is a long decision loop and it breaks after a while
with StackOverflowError.
All jBPM context variables (used via Seam) are kept in memory for simplicity and
performance reasons.
Is there any workaround for this issue except making the process persistent?
Loops realized via a decision node will eventually cause a
StackOverflow Exception
----------------------------------------------------------------------------------
Key: JBPM-1145
URL:
https://jira.jboss.org/jira/browse/JBPM-1145
Project: JBoss jBPM
Issue Type: Bug
Components: Core Engine
Affects Versions: jBPM 3.1, jBPM 3.1.4
Reporter: R??diger Schmitz
Assignee: Tom Baeyens
Executing a simple, iterative loop implemented with a decision node will cause a
StackOverflowException (see below for stacktrace). Apparently the iterative calls are
executing using recursive calls. This approach fails if a medium sized loop should be
executed (a simple reproducing testcase only reached 161 loop iterations before failing).
I see this implementation style as highly problematic when processing medium-sized
quantities of input data...
java.lang.StackOverflowError
at java.lang.ClassLoader.findBootstrapClass(Native Method)
at java.lang.ClassLoader.findBootstrapClass0(ClassLoader.java:891)
at java.lang.ClassLoader.loadClass(ClassLoader.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:299)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:268)
at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
at org.hibernate.loader.Loader.loadCollection(Loader.java:1926)
at
org.hibernate.loader.collection.CollectionLoader.initialize(CollectionLoader.java:71)
at
org.hibernate.persister.collection.AbstractCollectionPersister.initialize(AbstractCollectionPersister.java:520)
at
org.hibernate.event.def.DefaultInitializeCollectionEventListener.onInitializeCollection(DefaultInitializeCollectionEventListener.java:60)
at org.hibernate.impl.SessionImpl.initializeCollection(SessionImpl.java:1627)
at
org.hibernate.collection.AbstractPersistentCollection.initialize(AbstractPersistentCollection.java:344)
at
org.hibernate.collection.AbstractPersistentCollection.read(AbstractPersistentCollection.java:86)
at org.hibernate.collection.PersistentList.iterator(PersistentList.java:115)
at org.jbpm.graph.def.GraphElement.findExceptionHandler(GraphElement.java:358)
at org.jbpm.graph.def.GraphElement.raiseException(GraphElement.java:326)
at org.jbpm.graph.def.GraphElement.raiseException(GraphElement.java:343)
at org.jbpm.graph.def.Node.execute(Node.java:332)
at org.jbpm.graph.def.Node.enter(Node.java:316)
at org.jbpm.graph.def.Node$$FastClassByCGLIB$$d187eeda.invoke(<generated>)
at net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:149)
at org.hibernate.proxy.CGLIBLazyInitializer.intercept(CGLIBLazyInitializer.java:161)
<snip>...a ton of repeating stacktraceelements omitted... <snap>
at org.hibernate.proxy.CGLIBLazyInitializer.intercept(CGLIBLazyInitializer.java:161)
at org.jbpm.graph.def.Node$$EnhancerByCGLIB$$cb94b78_3.enter(<generated>)
at org.jbpm.graph.def.Transition.take(Transition.java:119)
at org.jbpm.graph.def.Node.leave(Node.java:382)
at org.jbpm.graph.exe.ExecutionContext.leaveNode(ExecutionContext.java:136)
at org.jbpm.graph.node.Decision.execute(Decision.java:145)
at org.jbpm.graph.def.Node.enter(Node.java:316)
at org.jbpm.graph.def.Node$$FastClassByCGLIB$$d187eeda.invoke(<generated>)
at net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:149)
at org.hibernate.proxy.CGLIBLazyInitializer.intercept(CGLIBLazyInitializer.java:161)
at org.jbpm.graph.def.Node$$EnhancerByCGLIB$$cb94b78_3.enter(<generated>)
at org.jbpm.graph.def.Transition.take(Transition.java:119)
at org.jbpm.graph.def.Node.leave(Node.java:382)
at org.jbpm.graph.def.Node.leave(Node.java:346)
at org.jbpm.graph.exe.ExecutionContext.leaveNode(ExecutionContext.java:120)
at
com.atos.worldline.kams.workflow.pf.BusinessObjectAccessHandler.doExecute(BusinessObjectAccessHandler.java:114)
at
com.atos.worldline.kams.workflow.pf.AbstractBusinessMethodHandler.execute(AbstractBusinessMethodHandler.java:60)
at org.jbpm.graph.def.Action.execute(Action.java:123)
at org.jbpm.graph.def.Action$$FastClassByCGLIB$$7876e90e.invoke(<generated>)
at net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:149)
at org.hibernate.proxy.CGLIBLazyInitializer.intercept(CGLIBLazyInitializer.java:161)
at org.jbpm.graph.def.Action$$EnhancerByCGLIB$$889386ac_3.execute(<generated>)
at org.jbpm.graph.def.Node.execute(Node.java:328)
at org.jbpm.graph.def.Node.enter(Node.java:316)
at org.jbpm.graph.def.Node$$FastClassByCGLIB$$d187eeda.invoke(<generated>)
at net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:149)
at org.hibernate.proxy.CGLIBLazyInitializer.intercept(CGLIBLazyInitializer.java:161)
at org.jbpm.graph.def.Node$$EnhancerByCGLIB$$cb94b78_3.enter(<generated>)
at org.jbpm.graph.def.Transition.take(Transition.java:119)
at org.jbpm.graph.def.Node.leave(Node.java:382)
at org.jbpm.graph.exe.ExecutionContext.leaveNode(ExecutionContext.java:136)
at org.jbpm.graph.node.Decision.execute(Decision.java:145)
at org.jbpm.graph.def.Node.enter(Node.java:316)
at org.jbpm.graph.def.Node$$FastClassByCGLIB$$d187eeda.invoke(<generated>)
at net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:149)
at org.hibernate.proxy.CGLIBLazyInitializer.intercept(CGLIBLazyInitializer.java:161)
at org.jbpm.graph.def.Node$$EnhancerByCGLIB$$cb94b78_3.enter(<generated>)
at org.jbpm.graph.def.Transition.take(Transition.java:119)
at org.jbpm.graph.def.Node.leave(Node.java:382)
at org.jbpm.graph.def.Node.leave(Node.java:346)
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
https://jira.jboss.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira