[rules-users] Question on data safety and threading...

Michael Neale michael.neale at gmail.com
Tue Mar 13 19:32:51 EDT 2007


in your case - as you are swapping out the RuleBase - I woudl suggest
locking or syncing things when swapping - not sure how to do that given that
spring is in control.

Also, i would suggest you use RuleBase#newWorkingMemory(false) so that it
doesn't keep a weakhashmap around pointint back to the working memories, as
you don't need it (it will mean less big GC pauses under heavy load in your
case).

Michael.

On 3/13/07, jdepaul <jjdepaul at us.ibm.com> wrote:
>
>
> I know the threading topic has been discussed quite extensively, but I
> still
> need some guidance in the following case:
>
> My application has a RuleManager object that maintains references to many
> RuleBase objects in a HashMap. I'm using Spring Framework to wire the bean
> relationships together.
>
> The RulesManager is typically busy servicing client requests for instances
> of WorkingMemory objects which it fetches from the individual RuleBase
> objects it maintains in its Hash (wm.newWorkingMemory() ).
>
> >From time to time, I'll need RulesManager to reaload the rules that are
> associated with the individual RuleBase object - for that, I'm going to
> create a new instance of the RuleBase object and then I need an efficient
> and safe way to 'swap' this new RuleBase object for the old object
> reference
> in the RulesManager's map.
>
> My question is: should I synchronize the getWorkingMemory(..) method
> inside
> my RulesManager object that uses the hashmap, AND also synchronize the
> code
> that does the object swap - would that be sufficient?! How would I do it
> using Collections.synchronizedMap() - remember that I don't have that much
> control over the creation of the Map since Spring controls that part of
> populating hashmap at startup.
>
> The critical factors for me are speed and efficiency in servicing regular
> client requests for WorkingMemory - ideally, I'd synchronize only the
> method
> that does the object swap, but I'm sure that may have some bad
> consequences... though as long as I can avoid the race condition I could
> probably live with it.
>
> Thanks in advance for ideas -
> --
> View this message in context:
> http://www.nabble.com/Question-on-data-safety-and-threading...-tf3396050.html#a9454823
> Sent from the drools - user mailing list archive at Nabble.com.
>
> _______________________________________________
> rules-users mailing list
> rules-users at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-users
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/rules-users/attachments/20070314/b7b683ad/attachment.html 


More information about the rules-users mailing list