Hi,

I am using Jboss Pojo cache on top of Jboss cache (3.0.0GA) managing rather big 
object trees of collections. And I am randomly getting 
com.sleepycat.je.DeadlockException(s) when using the BdbjeCacheLoader as cache 
loader. 

There are 10 threads running under a single machine (JSE environment), each 
does both reading and writing. Neither reading nor writing (as I believe) 
should take up to 20 seconds as a transactional batch on my hardware, since the 
objects are not huge (each object is a list of other object that include an 
array of maps of basic types). 

If I set the lockAcquisitionTimeout to smaller value, it happens more 
frequently. But even I set the value to a very big one, like 20000, it still 
happens with less frequency, and it blocks for 20 seconds before this exception 
is thrown.

Due to these posts, I guess it might have something to do with mvcc. (I am 
using je-3.3.82), but really do not hope so, since mvcc is one of the points I 
like jboss cache.

http://forums.oracle.com/forums/thread.jspa?threadID=866063&tstart=60
http://forums.oracle.com/forums/thread.jspa?threadID=616358&tstart=30

Below is the jboss cache configuration and the exception stack trace. Thanks in 
advance for your help!


  | <?xml version="1.0" encoding="UTF-8"?>
  | <jbosscache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
  |     xmlns="urn:jboss:jbosscache-core:config:3.0">
  | 
  |     <locking isolationLevel="READ_COMMITTED"
  |             lockParentForChildInsertRemove="false" 
lockAcquisitionTimeout="5000"
  |             nodeLockingScheme="mvcc" writeSkewCheck="false" 
concurrencyLevel="500" />
  | 
  |     <transaction
  |             
transactionManagerLookupClass="org.jboss.cache.transaction.GenericTransactionManagerLookup"
  |             syncRollbackPhase="false" syncCommitPhase="false" />
  | 
  |     <jmxStatistics enabled="false" />
  | 
  |     <startup regionsInactiveOnStartup="true" />
  | 
  |     <shutdown hookBehavior="DEFAULT" />
  | 
  |     <listeners asyncPoolSize="1" asyncQueueSize="100000" />
  | 
  |     <invocationBatching enabled="false" />
  | 
  |     <eviction wakeUpInterval="1000">
  | 
  |             <!-- Cache wide default -->
  |             <region name="/_default_" 
algorithmClass="org.jboss.cache.eviction.LRUAlgorithm">
  | 
  |                     <property name="maxNodes">10000</property>
  |                     <property name="timeToLiveSeconds">300</property>
  |             </region>
  |     </eviction>
  | 
  |     <loaders passivation="false" shared="true">
  |             <preload>
  |                     <node fqn="/" />
  |             </preload>
  | 
  |             <loader class="org.jboss.cache.loader.bdbje.BdbjeCacheLoader" 
async="false"
  |                     fetchPersistentState="false" ignoreModifications="false"
  |                     purgeOnStartup="false">
  | 
  |                     <properties>
  | 
  |                             cache.jdbc.table.name=Cached_Events
  |                             cache.jdbc.table.create=false
  |                             cache.jdbc.table.drop=false
  |                             cache.jdbc.table.primarykey=jbosscache_pk
  |                             cache.jdbc.fqn.column=fqn
  |                             cache.jdbc.fqn.type=varchar2(255)
  |                             cache.jdbc.node.column=node
  |                             cache.jdbc.node.type=blob
  |                             cache.jdbc.parent.column=parent
  |                             
  |                             cache.jdbc.sql-concat=concat(1,2)
  |                             
  |                             
cache.jdbc.connection.factory=org.jboss.cache.loader.C3p0ConnectionFactory
  |                             c3p0.maxPoolSize=20
  |                             c3p0.checkoutTimeout=5000
  |                             
  |                             location=tmp/jbosscache
  |                     </properties>
  | 
  |             </loader>
  | 
  | 
  |     </loaders>
  | 
  | </jbosscache>
  | 


  | com.sleepycat.je.DeadlockException: (JE 3.3.82) Lock expired. Locker 
6761395 -1_Detection2_ThreadLocker: waited for lock on 
database=JBossCache-Cluster LockAddr:23471145 node=1785 type=READ 
grant=WAIT_NEW timeoutMillis=20000 startTime=1245426236094 endTime=1245426256097
  |     [junit] Owners: [<LockInfo locker="12706060 346_Detection1_Txn" 
type="WRITE"/>]
  |     [junit] Waiters: [<LockInfo locker="24478649 347_Detection4_Txn" 
type="WRITE"/>]
  |     [junit] 
  |     [junit]         at 
com.sleepycat.je.txn.LockManager.makeTimeoutMsgInternal(LockManager.java:469)
  |     [junit]         at 
com.sleepycat.je.txn.SyncedLockManager.makeTimeoutMsg(SyncedLockManager.java:77)
  |     [junit]         at 
com.sleepycat.je.txn.LockManager.lock(LockManager.java:278)
  |     [junit]         at 
com.sleepycat.je.txn.BasicLocker.lockInternal(BasicLocker.java:167)
  |     [junit]         at com.sleepycat.je.txn.Locker.lock(Locker.java:360)
  |     [junit]         at 
com.sleepycat.je.dbi.CursorImpl.lockLNDeletedAllowed(CursorImpl.java:2516)
  |     [junit]         at 
com.sleepycat.je.dbi.CursorImpl.lockLN(CursorImpl.java:2438)
  |     [junit]         at 
com.sleepycat.je.dbi.CursorImpl.fetchCurrent(CursorImpl.java:2368)
  |     [junit]         at 
com.sleepycat.je.dbi.CursorImpl.getCurrentAlreadyLatched(CursorImpl.java:1427)
  |     [junit]         at 
com.sleepycat.je.dbi.CursorImpl.getNextWithKeyChangeStatus(CursorImpl.java:1573)
  |     [junit]         at 
com.sleepycat.je.dbi.CursorImpl.getNext(CursorImpl.java:1499)
  |     [junit]         at 
com.sleepycat.je.dbi.CursorImpl.getNextNoDup(CursorImpl.java:1688)
  |     [junit]         at 
com.sleepycat.je.Cursor.searchInternal(Cursor.java:1936)
  |     [junit]         at 
com.sleepycat.je.Cursor.searchAllowPhantoms(Cursor.java:1748)
  |     [junit]         at com.sleepycat.je.Cursor.search(Cursor.java:1615)
  |     [junit]         at 
com.sleepycat.je.Cursor.getSearchKeyRange(Cursor.java:1117)
  |     [junit]         at 
org.jboss.cache.loader.bdbje.BdbjeCacheLoader.getChildrenNames(BdbjeCacheLoader.java:391)
  |     [junit]         at 
org.jboss.cache.loader.CacheLoaderManager.preload(CacheLoaderManager.java:371)
  | 

View the original post : 
http://www.jboss.org/index.html?module=bb&op=viewtopic&p=4238872#4238872

Reply to the post : 
http://www.jboss.org/index.html?module=bb&op=posting&mode=reply&p=4238872
_______________________________________________
jboss-user mailing list
jboss-user@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/jboss-user

Reply via email to