[rules-users] deadlock when rules get updated?
Zoltan Farkas
zoly at daxtechnologies.com
Fri Feb 22 11:13:00 EST 2008
I use a Ruleagent with the following params:
localCacheDir=.
url=.
poll=30
name=eventexpertrules
Here is my session initialization:
RuleAgent agent = RuleAgent.newRuleAgent("/rules.properties");
RuleBase retValue = agent.getRuleBase();
final RuleBase ruleBase = agent.getRuleBase();
session = ruleBase.newStatefulSession();
DroolsLogger drlogger = new DroolsLogger(session); // add logger
//Insert Event Processor Instance as global
session.setGlobal("processor", this);
Here is the stack trace of the thread that updates the rule base
"Timer-2" daemon prio=3 tid=0x0000000002356800 nid=0x24 waiting for monitor entry [0xfffffd7fe28b7000..0xfffffd7fe28b7a20]
java.lang.Thread.State: BLOCKED (on object monitor)
at org.drools.common.AbstractWorkingMemory.fireAllRules(AbstractWorkingMemory.java:433)
- waiting to lock <0xfffffd7feb474680> (a org.drools.reteoo.ReteooStatefulSession)
at org.drools.base.FireAllRulesRuleBaseUpdateListener.beforeRuleBaseUnlocked(FireAllRulesRuleBaseUpdateListener.java:29)
at org.drools.event.RuleBaseEventSupport.fireBeforeRuleBaseUnlocked(RuleBaseEventSupport.java:168)
at org.drools.common.AbstractRuleBase.unlock(AbstractRuleBase.java:351)
at org.drools.agent.PackageProvider.applyChanges(PackageProvider.java:73)
at org.drools.agent.RuleAgent.refreshRuleBase(RuleAgent.java:320)
at org.drools.agent.RuleAgent$2.run(RuleAgent.java:438)
at java.util.TimerThread.mainLoop(Timer.java:512)
at java.util.TimerThread.run(Timer.java:462)
Here is the stack trace of my application that basically inserts facts and fires rules .
"ActiveMQ Session Task" daemon prio=3 tid=0x0000000002564400 nid=0x142e in Object.wait() [0xfffffd7fe01dd000..0xfffffd7fe01ddaa0]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0xfffffd7feb49a9e0> (a org.drools.util.concurrent.locks.ReentrantLock$NonfairSync)
at java.lang.Object.wait(Object.java:485)
at org.drools.util.concurrent.locks.ReentrantLock$NonfairSync.lock(ReentrantLock.java:106)
- locked <0xfffffd7feb49a9e0> (a org.drools.util.concurrent.locks.ReentrantLock$NonfairSync)
at org.drools.util.concurrent.locks.ReentrantLock.lock(ReentrantLock.java:195)
at org.drools.common.AbstractWorkingMemory.getGlobal(AbstractWorkingMemory.java:397)
at com.daxtechnologies.optima.fault.eventprocessor.Rule_EventForwarder_0ConsequenceInvoker.evaluate(Unknown Source)
at org.drools.common.DefaultAgenda.fireActivation(DefaultAgenda.java:550)
- locked <0xfffffd7feb49a3f8> (a org.drools.common.DefaultAgenda)
at org.drools.common.DefaultAgenda.fireNextItem(DefaultAgenda.java:514)
at org.drools.common.AbstractWorkingMemory.fireAllRules(AbstractWorkingMemory.java:471)
- locked <0xfffffd7feb474680> (a org.drools.reteoo.ReteooStatefulSession)
at org.drools.common.AbstractWorkingMemory.fireAllRules(AbstractWorkingMemory.java:433)
- locked <0xfffffd7feb474680> (a org.drools.reteoo.ReteooStatefulSession)
at com.daxtechnologies.optima.fault.eventprocessor.fault.level2.maps.EventExpertProcessor.processEventVO(EventExpertProcessor.java:147)
- locked <0xfffffd7feb474a18> (a com.daxtechnologies.optima.fault.eventprocessor.fault.level2.maps.EventExpertProcessor)
at com.daxtechnologies.optima.fault.eventprocessor.fault.level2.maps.EventExpertProcessor.doProcessEvent(EventExpertProcessor.java:70)
As you see my app thread waits for something .
thanks
--zoly
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/rules-users/attachments/20080222/fc6c77ed/attachment.html
More information about the rules-users
mailing list