[rules-users] Deadlock with multiple Entry Points

Norman C rent_my_time at yahoo.com
Thu Oct 21 02:33:35 EDT 2010


Drools can deadlock when facts are inserted/retracted/modified in multiple entry 
points in the same session.  Since each such action will acquire the lock 
associated with the entry point, it's possible for the order of calls to cause 
deadlock when the locks for two entry points are acquired by two different 
threads, then the change in working memory activates and executes rules which 
also insert/retract/modify and thus require acquiring the lock for the other 
entry point.

As far as I can tell, there is no way to prevent this kind of deadlock other 
than using only one entry point.  Can anyone think of others?

In my case, I'm using Drools Fusion with two different entry points for events.  
Whenever events expire, the engine automatically retracts them, so there are 
lots of opportunities for the locks from each entry point to be acquired after 
already holding the other entry point's lock.  I used two different entry points 
to separate different types of events for code clarity, so it's a simple 
workaround in my application to consolidate all my events to use a single entry 
point.  


I can't think of a compelling reason for employing different entry points, so 
maybe this isn't a big issue.  But it would be good to know if there is another 
way of preventing deadlock with multiple entry points.

Thanks,
Norman


      




More information about the rules-users mailing list