[jboss-jira] [JBoss JIRA] Updated: (JBRULES-1770) IndexOutOfBoundsException with subflows while removing listener from RuleFlowEventSupport
Mark Proctor (JIRA)
jira-events at lists.jboss.org
Fri Jan 16 02:08:04 EST 2009
[ https://jira.jboss.org/jira/browse/JBRULES-1770?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Mark Proctor updated JBRULES-1770:
----------------------------------
Fix Version/s: 4.0.8
> IndexOutOfBoundsException with subflows while removing listener from RuleFlowEventSupport
> -----------------------------------------------------------------------------------------
>
> Key: JBRULES-1770
> URL: https://jira.jboss.org/jira/browse/JBRULES-1770
> Project: JBoss Drools
> Issue Type: Bug
> Security Level: Public(Everyone can see)
> Components: drools-core (flow)
> Affects Versions: 4.0.7
> Environment: MyEclipse Blue, Windows XP,
> Reporter: Richard bedard
> Assignee: Kris Verlaenen
> Fix For: 4.0.8
>
>
> I have 9 ruleFlows, A, B and C and 6 others
> A is the main one that include B as a subflow and 6 others, B include C as a subflow
> When RuleFlowEventSupport.fireRuleFlowProcessCompleted is called, the listeners list contains 8 elements, 1 per sub ruleflow.
> The size of the list is set in a variable "size" for performance i guess:
> for ( int i = 0, size = this.listeners.size(); i < size; i++ ) {
> But somehow, i didn't check the reason, the method removeEventListener is called and the list size is now 7, so im
> having an java.lang.IndexOutOfBoundsException.
> This appen when the subflow C isn't changing the working memory(no insert, modify or remove), when an object is inserted,
> there is no error... I've tried with and without shadow fact "setShadowProxy( false/true );"
> Object removed:
> listener RuleFlowProcessInstanceImpl (id=7454)
> id 2
> nodeInstances ArrayList<E> (id=7749)
> process RuleFlowProcessImpl (id=7750)
> state 2
> workingMemory ReteooStatefulSession (id=7444)
> Stack that show the object removing while iterating on the list:
> RuleFlowEventSupport.removeEventListener(RuleFlowEventListener) line: 48 <----- A listener is removed here
> ReteooStatefulSession(AbstractWorkingMemory).removeEventListener(RuleFlowEventListener) line: 306
> RuleFlowProcessInstanceImpl.setState(int) line: 184
> EndNodeInstanceImpl.trigger(RuleFlowNodeInstance) line: 30
> RuleFlowJoinInstanceImpl.triggerCompleted() line: 89
> RuleFlowJoinInstanceImpl.checkActivation() line: 85
> RuleFlowJoinInstanceImpl.trigger(RuleFlowNodeInstance) line: 59
> SubFlowNodeInstanceImpl.triggerCompleted() line: 51
> RuleFlowProcessInstanceImpl.ruleFlowCompleted(RuleFlowCompletedEvent, WorkingMemory) line: 262
> RuleFlowEventSupport.fireRuleFlowProcessCompleted(RuleFlowProcessInstance, InternalWorkingMemory) line: 86 <--- Iterating on the listeners list here
> RuleFlowProcessInstanceImpl.setState(int) line: 185
> EndNodeInstanceImpl.trigger(RuleFlowNodeInstance) line: 30
> RuleFlowJoinInstanceImpl.triggerCompleted() line: 89
> RuleFlowJoinInstanceImpl.checkActivation() line: 85
> RuleFlowJoinInstanceImpl.trigger(RuleFlowNodeInstance) line: 59
> RuleFlowGroupImpl(RuleFlowSequenceNodeInstanceImpl).triggerCompleted() line: 38
> RuleFlowGroupImpl.setActive(boolean) line: 103
> RuleFlowGroupImpl$DeactivateCallback.execute(InternalWorkingMemory) line: 211
> ReteooStatefulSession(AbstractWorkingMemory).executeQueuedActions() line: 1312
> ReteooStatefulSession(AbstractWorkingMemory).fireAllRules(AgendaFilter, int) line: 467
> ReteooStatefulSession(AbstractWorkingMemory).fireAllRules() line: 439
> DroolsStdImpl.executeRulesEngine(List<Object>, String) line: 100
> UPDATE:
> When i remove the subflow C from the ruleflow B, and move the 2 ruleFlowGroup from C to B, there is no error.
--
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
More information about the jboss-jira
mailing list