[rules-users] stack overflow in work items

Kris Verlaenen Kris.Verlaenen at cs.kuleuven.be
Wed Apr 1 11:40:59 EDT 2009


Garrett,

No, there is no limit in the number of process instances you can have
simultaneously.  I did manage to reproduce your error though, and
discovered an issue when firing rules (we do not allow nested execution
of fireAllRules() but in some specific case this didn't work correctly).
 This has been fixed on trunk.

Kris

Quoting Garrett Conaty <garrett at conaty.net>:

> 
> 
> My scenario is a rule that is firing over a collection.  For each
> item  
> in that collection a ruleflow starts to handle it.  Right now the  
> ruleflow just uses the log workitem to log the steps.  When there are
>  
> ~600 items in the collection I'm getting stack overflows.  Granted
> the  
> processes could be optimized (I'd really like to take each thing in 
> 
> the collection that matched and start a process for the set of them).
>   
> Still is there a limit to the number of active processes with work  
> items?
> 
> java.lang.StackOverflowError
> 	at java.lang.Long.valueOf(Long.java:547)
> 	at  
> org 
> .drools 
> .workflow.core.impl.NodeContainerImpl.getNode(NodeContainerImpl.java:44)
> 	at  
> org 
> .drools 
> .workflow 
> .core.impl.WorkflowProcessImpl.getNode(WorkflowProcessImpl.java:47)
> 	at  
> org 
> .drools 
> .workflow 
> .core 
> .impl.WorkflowProcessImpl.internalGetNode(WorkflowProcessImpl.java:51)
> 	at  
> org 
> .drools 
> .workflow.instance.impl.NodeInstanceImpl.getNode(NodeInstanceImpl.java:
> 
> 90)
> 	at  
> org 
> .drools 
> .workflow 
> .instance 
> .impl 
> .ExtendedNodeInstanceImpl 
> .getExtendedNode(ExtendedNodeInstanceImpl.java:24)
> 	at  
> org 
> .drools 
> .workflow 
> .instance 
> .impl 
> .ExtendedNodeInstanceImpl.triggerEvent(ExtendedNodeInstanceImpl.java:41)
> 	at  
> org 
> .drools 
> .workflow 
> .instance 
> .impl 
> .ExtendedNodeInstanceImpl 
> .internalTrigger(ExtendedNodeInstanceImpl.java:28)
> 	at  
> org 
> .drools 
> .workflow 
> .instance 
> .node 
> .EventBasedNodeInstance.internalTrigger(EventBasedNodeInstance.java:30)
> 	at  
> org 
> .drools 
> .workflow 
> .instance 
> .node.WorkItemNodeInstance.internalTrigger(WorkItemNodeInstance.java:80)
> 	at  
> org 
> .drools 
> .workflow.instance.impl.NodeInstanceImpl.trigger(NodeInstanceImpl.java:
> 
> 111)
> 	at  
> org 
> .drools 
> .workflow 
> .instance 
> .impl.NodeInstanceImpl.triggerConnection(NodeInstanceImpl.java:141)
> 	at  
> org 
> .drools 
> .workflow 
> .instance.impl.NodeInstanceImpl.triggerCompleted(NodeInstanceImpl.java:
> 
> 128)
> 	at  
> org 
> .drools 
> .workflow 
> .instance 
> .impl 
> .ExtendedNodeInstanceImpl 
> .triggerCompleted(ExtendedNodeInstanceImpl.java:37)
> 	at  
> org 
> .drools 
> .workflow 
> .instance 
> .node 
> .EventBasedNodeInstance.triggerCompleted(EventBasedNodeInstance.java:96)
> 	at  
> org 
> .drools 
> .workflow 
> .instance 
> .node 
> .EventBasedNodeInstance.triggerCompleted(EventBasedNodeInstance.java:77)
> 	at  
> org 
> .drools 
> .workflow 
> .instance 
> .node.WorkItemNodeInstance.triggerCompleted(WorkItemNodeInstance.java:
> 
> 192)
> 	at  
> org 
> .drools 
> .workflow 
> .instance 
> .node.WorkItemNodeInstance.workItemCompleted(WorkItemNodeInstance.java:
> 
> 244)
> 	at  
> org 
> .drools 
> .workflow 
> .instance 
> .node.WorkItemNodeInstance.signalEvent(WorkItemNodeInstance.java:222)
> 	at  
> org 
> .drools 
> .workflow 
> .instance 
> .impl 
> .WorkflowProcessInstanceImpl 
> .signalEvent(WorkflowProcessInstanceImpl.java:258)
> 	at  
> org 
> .drools 
> .process 
> .instance 
> .impl 
> .DefaultWorkItemManager.completeWorkItem(DefaultWorkItemManager.java:96)
> 	at
> com.jsi.inactivity.DroolsTest$1.executeWorkItem(DroolsTest.java:40)






More information about the rules-users mailing list