This content has been marked as final.
Show 19 replies
-
15. Re: workaround for StackOverflow exception
insanely.freak Jan 8, 2009 10:44 AM (in response to vanyatka)"vanyatka" wrote:
Here is what I've tried:<state name="state2"> <timer duedate="1 seconds" transition="check more banners" > <action class="com.agava.cbn.ods.action.SimpleStateHandler"></action> </timer> </state>
Not the best solution, but I thought I'd do the trick. Unfortunately there is another problem, now in Seam:
https://jira.jboss.org/jira/browse/JBSEAM-2575 -
16. Re: workaround for StackOverflow exception
insanely.freak Jan 12, 2009 8:58 AM (in response to vanyatka)Hi,
I am gettin a Stakcoverflow exception when I try to use ActionHandler or DecisionHandlers/AssignmentHandler in my code.
Following is my processdefinition file<?xml version="1.0" encoding="UTF-8"?> <process-definition xmlns="urn:jbpm.org:jpdl-3.1" name="timer_19"> <start-state name="start"> <transition to="decision" ></transition> </start-state> <decision name="decision"> <handler class="com.workflow.CostCenterDecisionHandler"></handler> <transition to="to_end" name="to_end"> <condition> <![CDATA[to_end]]> </condition> </transition> <transition to="taskNode" name="taskNode"> <condition> <![CDATA[taskNode]]> </condition> </transition> </decision> <task-node name="taskNode" create-tasks="true"> <task name="approve_task" description="hula"> <assignment class="com.workflow.CostCenterAssignmentHandler"> </assignment> </task> <transition to="decision" name="decision"/> </task-node> <end-state name="to_end"></end-state> </process-definition>
[/url]
Here I am trying to come back to task node with new task untill decision node explicitly decides to move to end state.
I have tested this using junit in Eclipse it works fine. Only when I persist in db and then try to end a task by fetching task instance using Id from db, it gives me STACKOVERFLOW exception.
Following is the stachtraceCaused by: java.lang.StackOverflowError at java.lang.System.arraycopy(Native Method) at java.lang.AbstractStringBuilder.expandCapacity(AbstractStringBuilder.java:100) at java.lang.AbstractStringBuilder.append(AbstractStringBuilder.java:490) at java.lang.StringBuffer.append(StringBuffer.java:302) at org.apache.log4j.helpers.ISO8601DateFormat.format(ISO8601DateFormat.java:124) at java.text.DateFormat.format(DateFormat.java:314) at org.apache.log4j.helpers.PatternParser$DatePatternConverter.convert(PatternParser.java:436) at org.apache.log4j.helpers.PatternConverter.format(PatternConverter.java:56) at org.apache.log4j.PatternLayout.format(PatternLayout.java:495) at org.apache.log4j.WriterAppender.subAppend(WriterAppender.java:292) at org.apache.log4j.DailyRollingFileAppender.subAppend(DailyRollingFileAppender.java:349) at org.apache.log4j.WriterAppender.append(WriterAppender.java:150) at org.apache.log4j.AppenderSkeleton.doAppend(AppenderSkeleton.java:221) at org.apache.log4j.helpers.AppenderAttachableImpl.appendLoopOnAppenders(AppenderAttachableImpl.java:57) at org.apache.log4j.Category.callAppenders(Category.java:187) at org.apache.log4j.Category.forcedLog(Category.java:372) at org.apache.log4j.Category.log(Category.java:864) at org.apache.commons.logging.impl.Log4JLogger.debug(Log4JLogger.java:137) at org.hibernate.loader.Loader.loadCollection(Loader.java:1911) 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.AbstractPersistentCollection.readElementByIndex(AbstractPersistentCollection.java:161) at org.hibernate.collection.PersistentMap.get(PersistentMap.java:127) at org.jbpm.graph.def.ProcessDefinition.getDefinition(ProcessDefinition.java:431) at org.jbpm.graph.def.ProcessDefinition.getFileDefinition(ProcessDefinition.java:441) at org.jbpm.graph.def.ProcessDefinition$$FastClassByCGLIB$$b47a0f4a.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.ProcessDefinition$$EnhancerByCGLIB$$4e8ff03.getFileDefinition(<generated>) at org.jbpm.instantiation.ProcessClassLoader.findResource(ProcessClassLoader.java:47) at java.lang.ClassLoader.getResource(ClassLoader.java:977) at java.lang.ClassLoader.getResourceAsStream(ClassLoader.java:1159) at org.apache.commons.logging.LogFactory$3.run(LogFactory.java:627) at java.security.AccessController.doPrivileged(Native Method) at org.apache.commons.logging.LogFactory.getResourceAsStream(LogFactory.java:623) at org.apache.commons.logging.LogFactory.getFactory(LogFactory.java:281) at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:395) at org.hibernate.type.NullableType.nullSafeSet(NullableType.java:79) at org.hibernate.type.NullableType.nullSafeSet(NullableType.java:63) at org.hibernate.loader.Loader.bindPositionalParameters(Loader.java:1514) at org.hibernate.loader.Loader.prepareQueryStatement(Loader.java:1576) at org.hibernate.loader.Loader.doQuery(Loader.java:661) at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:224) at org.hibernate.loader.Loader.loadCollection(Loader.java:1919) 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.AbstractPersistentCollection.readElementByIndex(AbstractPersistentCollection.java:161) at org.hibernate.collection.PersistentMap.get(PersistentMap.java:127) at org.jbpm.graph.def.ProcessDefinition.getDefinition(ProcessDefinition.java:431) at org.jbpm.graph.def.ProcessDefinition.getFileDefinition(ProcessDefinition.java:441) at org.jbpm.graph.def.ProcessDefinition$$FastClassByCGLIB$$b47a0f4a.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.ProcessDefinition$$EnhancerByCGLIB$$4e8ff03.getFileDefinition(<generated>) at org.jbpm.instantiation.ProcessClassLoader.findResource(ProcessClassLoader.java:47) at java.lang.ClassLoader.getResource(ClassLoader.java:977) at java.lang.ClassLoader.getResourceAsStream(ClassLoader.java:1159) at org.apache.commons.logging.LogFactory$3.run(LogFactory.java:627) at java.security.AccessController.doPrivileged(Native Method) at org.apache.commons.logging.LogFactory.getResourceAsStream(LogFactory.java:623) at org.apache.commons.logging.LogFactory.getFactory(LogFactory.java:281) at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:395) at org.hibernate.type.NullableType.nullSafeSet(NullableType.java:79) at org.hibernate.type.NullableType.nullSafeSet(NullableType.java:63) at org.hibernate.loader.Loader.bindPositionalParameters(Loader.java:1514) at org.hibernate.loader.Loader.prepareQueryStatement(Loader.java:1576) at org.hibernate.loader.Loader.doQuery(Loader.java:661) at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:224) at org.hibernate.loader.Loader.loadCollection(Loader.java:1919) 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.AbstractPersistentCollection.readElementByIndex(AbstractPersistentCollection.java:161) at org.hibernate.collection.PersistentMap.get(PersistentMap.java:127) at org.jbpm.graph.def.ProcessDefinition.getDefinition(ProcessDefinition.java:431) at org.jbpm.graph.def.ProcessDefinition.getFileDefinition(ProcessDefinition.java:441) at org.jbpm.graph.def.ProcessDefinition$$FastClassByCGLIB$$b47a0f4a.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.ProcessDefinition$$EnhancerByCGLIB$$4e8ff03.getFileDefinition(<generated>) at org.jbpm.instantiation.ProcessClassLoader.findResource(ProcessClassLoader.java:47)
I get a very huge stack trace with above repeating block of trace.
I have already spent 4 days debuging the issue. Any input/help from any body is appreciated.
ThankX in advance -
17. Re: workaround for StackOverflow exception
kukeltje Jan 12, 2009 9:20 AM (in response to vanyatka)unittests can also store in DB... just extend the AbstractDBTestCase.... best real-world representation.
-
18. Re: workaround for StackOverflow exception
insanely.freak Jan 12, 2009 9:35 AM (in response to vanyatka)From one of the post in forum I got to know that there should be a wait state when we try to implement such loop cases, which in my case is there.
I have also tried with two Task nodes but still i get same result following is the processdefinition.xml file for aboce case:<process-definition xmlns="urn:jbpm.org:jpdl-3.1" name="process_name"> <start-state name="start"> <transition to="decision" ></transition> </start-state> <task-node name="decision" create-tasks="true"> <task name="decision_task" description="decision"> </task> <transition to="to_end" name="to_end"/> <transition to="taskNode" name="taskNode"/> </task-node> <task-node name="taskNode" create-tasks="true"> <task name="approve_task" description="hula"> <assignment class="com.workflow.CostCenterAssignmentHandler"> </assignment> </task> <transition to="decision" name="decision"/> </task-node> <end-state name="to_end"></end-state> </process-definition>
-
19. Re: workaround for StackOverflow exception
kukeltje Jan 12, 2009 11:40 AM (in response to vanyatka)Sigh.....
MAKE A FULL TRIMMED DOWN UNITTEST WITH EMBEDDED PROCESSDEFINITION AND INNER CLASSES FOR THE ACTIONHANDLER.
please..............