[jboss-jira] [JBoss JIRA] Updated: (JBRULES-1351) Rules not firing in heavely threaded application

paata lominadze (JIRA) jira-events at lists.jboss.org
Fri Nov 30 00:08:46 EST 2007


     [ http://jira.jboss.com/jira/browse/JBRULES-1351?page=all ]

paata lominadze updated JBRULES-1351:
-------------------------------------

    Description: 
Server application loads precompiled rule package into memory
then it creates as many rulebases as much threads are there.
(every thread has its own rulebase and stateless session)

application receives messages, then it dispatches it to one of the threads.
thread itself executes rules on its own stateless session. 
rules are written such a way so that at least one rule should fire.
but sometimes rules don't fire.

in such situations we are passing same facts to rules engine second time, 
on the same rulebase, using same stateless session. this time one rule is selected.
facts are not modified during two runs. they also dont change from rules.

this makes us to think that the bug is in rules engine, not in the application rule design logic.

going from stateless to stateful session didnot solve this problem

fact shadowing is disabled
rules have unique salience.
all rules belong to same activation group.

we had one rulebase for all the threads and were creating one stateless session 
per thread. but "misfiring" did happen much often this way. giving each thread its own
rulebase reduced "misfirings" dramatically


this bug started to appear after upgrading from 3.0.5 to 4.0.x, currently we are using 4.0.3
i think this problem has same roots as this bug:

http://jira.jboss.org/jira/browse/JBRULES-1330

UPDATE:
here is someone having exactly same problem:
http://www.nabble.com/Multithreading-use-of-RuleBase.newStatefulSession-orRuleBase.newStatelessSession-seems-to-be-causing-the-engine-toget-the-wrong-answer.-t4713597.html
author of above post also managed to attach sample code with example scenario where the problem occurs

  was:
Server application loads precompiled rule package into memory
then it creates as many rulebases as much threads are there.
(every thread has its own rulebase and stateless session)

application receives messages, then it dispatches it to one of the threads.
thread itself executes rules on its own stateless session. 
rules are written such a way so that at least one rule should fire.
but sometimes rules don't fire.

in such situations we are passing same facts to rules engine second time, 
on the same rulebase, using same stateless session. this time one rule is selected.
facts are not modified during two runs. they also dont change from rules.

this makes us to think that the bug is in rules engine, not in the application rule design logic.

going from stateless to stateful session didnot solve this problem

fact shadowing is disabled
rules have unique salience.
all rules belong to same activation group.

we had one rulebase for all the threads and were creating one stateless session 
per thread. but "misfiring" did happen much often this way. giving each thread its own
rulebase reduced "misfirings" dramatically


this bug started to appear after upgrading from 3.0.5 to 4.0.x, currently we are using 4.0.3
i think this problem has same roots as this bug:

http://jira.jboss.org/jira/browse/JBRULES-1330




> Rules not firing in heavely threaded application
> ------------------------------------------------
>
>                 Key: JBRULES-1351
>                 URL: http://jira.jboss.com/jira/browse/JBRULES-1351
>             Project: JBoss Drools
>          Issue Type: Bug
>      Security Level: Public(Everyone can see) 
>    Affects Versions: 4.0.2, 4.0.3
>            Reporter: paata lominadze
>
> Server application loads precompiled rule package into memory
> then it creates as many rulebases as much threads are there.
> (every thread has its own rulebase and stateless session)
> application receives messages, then it dispatches it to one of the threads.
> thread itself executes rules on its own stateless session. 
> rules are written such a way so that at least one rule should fire.
> but sometimes rules don't fire.
> in such situations we are passing same facts to rules engine second time, 
> on the same rulebase, using same stateless session. this time one rule is selected.
> facts are not modified during two runs. they also dont change from rules.
> this makes us to think that the bug is in rules engine, not in the application rule design logic.
> going from stateless to stateful session didnot solve this problem
> fact shadowing is disabled
> rules have unique salience.
> all rules belong to same activation group.
> we had one rulebase for all the threads and were creating one stateless session 
> per thread. but "misfiring" did happen much often this way. giving each thread its own
> rulebase reduced "misfirings" dramatically
> this bug started to appear after upgrading from 3.0.5 to 4.0.x, currently we are using 4.0.3
> i think this problem has same roots as this bug:
> http://jira.jboss.org/jira/browse/JBRULES-1330
> UPDATE:
> here is someone having exactly same problem:
> http://www.nabble.com/Multithreading-use-of-RuleBase.newStatefulSession-orRuleBase.newStatelessSession-seems-to-be-causing-the-engine-toget-the-wrong-answer.-t4713597.html
> author of above post also managed to attach sample code with example scenario where the problem occurs

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.jboss.com/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        



More information about the jboss-jira mailing list