[rules-users] Pooling KnowledgeBase instances

Mark Proctor mproctor at codehaus.org
Wed Jan 29 13:37:11 EST 2014


We don’t know what version you are running on. Various fixes have gone into threading over the years, try 5.6  or 6.0 and come back if there are problems.

Makr

On 29 Jan 2014, at 18:10, travistcummings <travistcummings at yahoo.com> wrote:

> Hi,
> 
> I am running into an issue in a highly concurrent environment where my
> threads are waiting on locking of the rule base when I try to insert into
> the session.  I am wondering if an appropriate solution would be to create a
> pool of KnowledgeBase objects, each having its own rule base.  A thread dump
> of my server had the message below for about 40 threads.
> 
> For my use case, I create the knowledge base once, then don't modify it in
> any way.
> 
> Thank you!
> Travis
> 
> 
> "ajp-bio-8010-exec-984" daemon prio=10 tid=0x081f3800 nid=0x2a7c waiting on
> condition [0x9f368000]
>   java.lang.Thread.State: WAITING (parking)
> 	at sun.misc.Unsafe.park(Native Method)
> 	- parking to wait for  <0xf0489a50> (a
> java.util.concurrent.locks.ReentrantReadWriteLock$NonfairSync)
> 	at java.util.concurrent.locks.LockSupport.park(LockSupport.java:186)
> 	at
> java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:834)
> 	at
> java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireQueued(AbstractQueuedSynchronizer.java:867)
> 	at
> java.util.concurrent.locks.AbstractQueuedSynchronizer.acquire(AbstractQueuedSynchronizer.java:1197)
> 	at
> java.util.concurrent.locks.ReentrantReadWriteLock$WriteLock.lock(ReentrantReadWriteLock.java:945)
> 	at
> org.drools.common.UpgradableReentrantReadWriteLock.lowPriorityWriteLock(UpgradableReentrantReadWriteLock.java:105)
> 	at
> org.drools.common.UpgradableReentrantReadWriteLock.writeLock(UpgradableReentrantReadWriteLock.java:88)
> 	at org.drools.common.AbstractRuleBase.lock(AbstractRuleBase.java:475)
> 	at
> org.drools.reteoo.builder.PatternBuilder.attachObjectTypeNode(PatternBuilder.java:276)
> 	at
> org.drools.reteoo.ClassObjectTypeConf.<init>(ClassObjectTypeConf.java:103)
> 	at
> org.drools.common.ObjectTypeConfigurationRegistry.getObjectTypeConf(ObjectTypeConfigurationRegistry.java:71)
> 	at org.drools.reteoo.Rete.assertObject(Rete.java:107)
> 	at org.drools.reteoo.ReteooRuleBase.assertObject(ReteooRuleBase.java:286)
> 	at
> org.drools.reteoo.ReteooWorkingMemory$WorkingMemoryReteAssertAction.execute(ReteooWorkingMemory.java:434)
> 	at
> org.drools.common.AbstractWorkingMemory.executeQueuedActions(AbstractWorkingMemory.java:993)
> 	at org.drools.common.NamedEntryPoint.insert(NamedEntryPoint.java:335)
> 	at org.drools.common.NamedEntryPoint.insert(NamedEntryPoint.java:311)
> 	at
> org.drools.common.AbstractWorkingMemory.insert(AbstractWorkingMemory.java:903)
> 	at
> org.drools.common.AbstractWorkingMemory.insert(AbstractWorkingMemory.java:847)
> 	at
> org.drools.impl.StatefulKnowledgeSessionImpl.insert(StatefulKnowledgeSessionImpl.java:269)
> 
> 
> 
> --
> View this message in context: http://drools.46999.n3.nabble.com/Pooling-KnowledgeBase-instances-tp4027911.html
> Sent from the Drools: User forum mailing list archive at Nabble.com.
> _______________________________________________
> rules-users mailing list
> rules-users at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-users




More information about the rules-users mailing list