History | Log In     View a printable version of the current page. Get help!  
Issue Details (XML | Word | Printable)

Key: CORE-3408
Type: Bug Bug
Status: Closed Closed
Resolution: Fixed
Priority: Major Major
Assignee: Andy Jefferson
Reporter: Andy Jefferson
Votes: 0
Watchers: 0
Operations

If you were logged in you would be able to see more operations.
JPOX Core

Deadlock due to RDBMSManager locking upon call to get value strategy

Created: 09/Oct/07 09:21 AM   Updated: 10/Jan/08 07:19 AM
Component/s: Datastore Support
Affects Version/s: 1.2.0-beta-1, 1.2.0-beta-2, 1.2.0-beta-3, 1.1.8, 1.2.0-beta-4
Fix Version/s: 1.2.0-beta-5, 1.1.9

Forum Thread URL: http://www.jpox.org/servlet/forum/viewthread?thread=4503


 Description  « Hide
"http-8112-Processor75" daemon prio=10 tid=02388da0 nid=180 lwp_id=394870 in Object.wait() [5fb40000..5fb40b60]
at java.lang.Object.wait(Native Method)
- waiting on <7b87ff48> (a org.apache.tomcat.dbcp.pool.impl.GenericObjectPool)
at java.lang.Object.wait(Object.java:474)
at org.apache.tomcat.dbcp.pool.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:748)
- locked <7b87ff48> (a org.apache.tomcat.dbcp.pool.impl.GenericObjectPool)
at org.apache.tomcat.dbcp.dbcp.PoolingDataSource.getConnection(PoolingDataSource.java:95)
at org.apache.tomcat.dbcp.dbcp.BasicDataSource.getConnection(BasicDataSource.java:540)
at org.jpox.util.FailoverUtils.getConnection(FailoverUtils.java:51)
at org.jpox.store.rdbms.adapter.DatabaseAdapter.getConnection(DatabaseAdapter.java:892)
at org.jpox.store.rdbms.RDBMSNonmanagedTransaction.begin(RDBMSNonmanagedTransaction.java:324)
- locked <8366f678> (a org.jpox.store.rdbms.RDBMSNonmanagedTransaction)
at com.volantis.ticker.model.impl.JDOTickerConfiguration.getAdvertising(JDOTickerConfiguration.java:1283)

"http-8112-Processor50" daemon prio=10 tid=02ffe4b0 nid=155 lwp_id=394843 waiting for monitor entry [60e00000..60e00ae0]
at org.jpox.store.rdbms.RDBMSManager.releaseConnection(RDBMSManager.java:437)
- waiting to lock <7bf6aae0> (a org.jpox.store.rdbms.RDBMSManager)
at org.jpox.store.rdbms.scostore.AbstractListStore.listIterator(AbstractListStore.java:172)

"http-8112-Processor28" daemon prio=10 tid=02f81480 nid=133 lwp_id=394820 waiting for monitor entry [61e80000..61e80be0]
at org.jpox.store.rdbms.RDBMSManager.releaseConnection(RDBMSManager.java:437)
- waiting to lock <7bf6aae0> (a org.jpox.store.rdbms.RDBMSManager)
at org.jpox.store.rdbms.request.FetchRequest.execute(FetchRequest.java:216)

"http-8112-Processor24" daemon prio=10 tid=02830f40 nid=121 lwp_id=394745 in Object.wait() [62780000..62780de0]
at java.lang.Object.wait(Native Method)
- waiting on <7b87ff48> (a org.apache.tomcat.dbcp.pool.impl.GenericObjectPool)
at java.lang.Object.wait(Object.java:474)
at org.apache.tomcat.dbcp.pool.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:748)
- locked <7b87ff48> (a org.apache.tomcat.dbcp.pool.impl.GenericObjectPool)
at org.apache.tomcat.dbcp.dbcp.PoolingDataSource.getConnection(PoolingDataSource.java:95)
at org.apache.tomcat.dbcp.dbcp.BasicDataSource.getConnection(BasicDataSource.java:540)
at org.jpox.util.FailoverUtils.getConnection(FailoverUtils.java:51)
at org.jpox.store.rdbms.adapter.DatabaseAdapter.getConnection(DatabaseAdapter.java:892)
at org.jpox.store.rdbms.RDBMSManager.getConnection(RDBMSManager.java:455)
at org.jpox.store.rdbms.RDBMSManager$2.retrieveConnection(RDBMSManager.java:1565)
at org.jpox.store.rdbms.poid.AbstractRDBMSPoidGenerator.obtainPoidBlock(AbstractRDBMSPoidGenerator.java:80)
at org.jpox.store.poid.AbstractPoidGenerator.obtainPoidBlock(AbstractPoidGenerator.java:187)
at org.jpox.store.poid.AbstractPoidGenerator.next(AbstractPoidGenerator.java:95)
- locked <82ff2ae8> (a org.jpox.store.rdbms.poid.SequenceTablePoidGenerator)
at org.jpox.store.rdbms.RDBMSManager.getStrategyValue(RDBMSManager.java:1622)
- locked <7bf6aae0> (a org.jpox.store.rdbms.RDBMSManager)

 All   Comments   Change History      Sort Order:
Andy Jefferson [09/Oct/07 02:24 PM]
Adapted patch of Allan Boyd (Volantis) to CVS HEAD and CVS RELEASE_1_1 to not sync the RDBMSManager when calling getStrategyValue() and instead sync on the POID generator around its critical calls.