We have multiple threads performing inserts/updates/queries/fireAllRules and had to synchronize access on working memory. The performance impact is surprisingly almost non-existent.
________________________________ From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Anstis, Michael (M.) Sent: Monday, July 14, 2008 9:24 AM To: Rules Dev List Subject: RE: [rules-dev] Multi threading usage best practice Hi, Would synchronising on working memory effectively serialise the effects of fireAllRules()? ... synchronised(wm) { wm.fireAllRules(); } ... I don't know whether this would kill your through-put either. Cheers, Mike ________________________________ From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of 9Lives 9Lives Sent: 14 July 2008 13:41 To: [email protected] Subject: [rules-dev] Multi threading usage best practice Hello I'm using Drools 4.0.7 inside a mail relay application 2 determine the operations that need 2 b executed on each passing message. To do this i'm using the following scenario: 1. I have a ruleBase.newStatefulSession(). 2. I have a fixed set of facts. 3. I have a fixed set of rules. 4. Each mailer (a thread that is handling a single message) is inserting the message to the working memory, calls the "fireAllRules" method and retracts the message. 5. Rules that r executed change custom attributes in the message. Problem: I noticed that sometimes a rule can b executed on the same message more then once. Assumption: My guess is that because i'm working is a multi threading environment but using a stateful session, what happens is: 1. Thread A is inserting Message A. 2. Thread B is inserting Message B 3. Thread A is calling fireAllRules 4. Rule X is executed on messages A + B. 5. Thread B is calling fireAllRules 6. Rule X is executed on messages A + B 7. Thread A is retracting Message A 8. Thread B is retracting message B Question: My goal is 2 make sure a rule is executed only once on a single message. Any ideas on how 2 avoid the situation described above? TnX Dotan ________________________________ Invite your mail contacts to join your friends list with Windows Live Spaces. It's easy! Try it! <http://spaces.live.com/spacesapi.aspx?wx_action=create&wx_url=/friends. aspx&mkt=en-us>
_______________________________________________ rules-dev mailing list [email protected] https://lists.jboss.org/mailman/listinfo/rules-dev
