[jboss-user] [JBoss jBPM] - Re: workaround for StackOverflow exception

insanely.freak do-not-reply at jboss.com
Mon Jan 12 08:58:43 EST 2009


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 stachtrace

  | Caused 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

View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4201003#4201003

Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4201003



More information about the jboss-user mailing list