here's what happens.
two threads read a lazy loaded object graph at the same time and print it.
The first thread exits and the commit works just fine. The next thread gets
a LockNotGrantedException when trying to commit. The problem is that the
objects were not modified at all, and yet castor seems to think that it
needs a write lock.
turning off lazy loading or reading the object with a readonly flag fixes
the problem, but lazy loading is important to us. Has anyone else run this
problem?
here's the stack trace
ERROR [org.jboss.jdo.castor.CastorJDOImpl]
org.exolab.castor.jdo.LockNotGrantedException: persist.deadlock4
ERROR [org.jboss.jdo.castor.CastorJDOImpl] at
org.exolab.castor.persist.ObjectLock.detectDeadlock(ObjectLock.java:932)
ERROR [org.jboss.jdo.castor.CastorJDOImpl] at
org.exolab.castor.persist.ObjectLock.upgrade(ObjectLock.java:723)
ERROR [org.jboss.jdo.castor.CastorJDOImpl] at
org.exolab.castor.persist.LockEngine$TypeInfo.upgrade(LockEngine.java:1154)
ERROR [org.jboss.jdo.castor.CastorJDOImpl] at
org.exolab.castor.persist.LockEngine$TypeInfo.access$600(LockEngine.java:967
)
ERROR [org.jboss.jdo.castor.CastorJDOImpl] at
org.exolab.castor.persist.LockEngine.writeLock(LockEngine.java:809)
ERROR [org.jboss.jdo.castor.CastorJDOImpl] at
org.exolab.castor.persist.TransactionContext.writeLock(TransactionContext.ja
va:1183)
ERROR [org.jboss.jdo.castor.CastorJDOImpl] at
org.exolab.castor.persist.ClassMolder.preStore(ClassMolder.java:1504)
ERROR [org.jboss.jdo.castor.CastorJDOImpl] at
org.exolab.castor.persist.LockEngine.preStore(LockEngine.java:727)
ERROR [org.jboss.jdo.castor.CastorJDOImpl] at
org.exolab.castor.persist.TransactionContext.prepare(TransactionContext.java
:1360)
ERROR [org.jboss.jdo.castor.CastorJDOImpl] at
org.exolab.castor.jdo.engine.DatabaseImpl.beforeCompletion(DatabaseImpl.java
:542)
ERROR [org.jboss.jdo.castor.CastorJDOImpl] at
org.jboss.tm.TxCapsule.doBeforeCompletion(TxCapsule.java:1210)
ERROR [org.jboss.jdo.castor.CastorJDOImpl] at
org.jboss.tm.TxCapsule.commit
(TxCapsule.java:304)
ERROR [org.jboss.jdo.castor.CastorJDOImpl] at
org.jboss.tm.TransactionImpl.commit(TransactionImpl.java:76)
ERROR [org.jboss.jdo.castor.CastorJDOImpl] at
com.saltare.server.jboss.TxCustomTimeoutInterceptorCMT.runWithTransaction(Tx
CustomTimeoutInterceptorCMT.java
:377)
ERROR [org.jboss.jdo.castor.CastorJDOImpl] at
com.saltare.server.jboss.TxCustomTimeoutInterceptorCMT.invoke(TxCustomTimeou
tInterceptorCMT.java:116)
ERROR [org.jboss.jdo.castor.CastorJDOImpl] at
org.jboss.ejb.plugins.SecurityInterceptor.invoke(SecurityInterceptor.java:12
8)
ERROR [org.jboss.jdo.castor.CastorJDOImpl] at
org.jboss.ejb.plugins.LogInterceptor.invoke(LogInterceptor.java:195)
ERROR [org.jboss.jdo.castor.CastorJDOImpl] at
org.jboss.ejb.StatelessSessionContainer.invoke(StatelessSessionContainer.jav
a:286)
ERROR [org.jboss.jdo.castor.CastorJDOImpl] at
org.jboss.ejb.plugins.jrmp.server.JRMPContainerInvoker.invoke(JRMPContainerI
nvoker.java:483)
ERROR [org.jboss.jdo.castor.CastorJDOImpl] at
org.jboss.ejb.plugins.jrmp.interfaces.GenericProxy.invokeContainer(GenericPr
oxy.java:335)
ERROR [org.jboss.jdo.castor.CastorJDOImpl] at
org.jboss.ejb.plugins.jrmp.interfaces.StatelessSessionProxy.invoke(Stateless
SessionProxy.java:123)
ERROR [org.jboss.jdo.castor.CastorJDOImpl] at
$Proxy29.distributeEventOnSameThread(Unknown Source)
ERROR [org.jboss.jdo.castor.CastorJDOImpl] at
com.saltare.server.jmx.RegistryService$EventPropagator.sendEvent(RegistrySer
vice.java:283)
ERROR [org.jboss.jdo.castor.CastorJDOImpl] at
com.saltare.server.jmx.RegistryService$EventPropagator.run(RegistryService.j
ava:224)
ERROR [org.jboss.jdo.castor.CastorJDOImpl] at
java.lang.Thread.run(Thread.java:484)
INFO [Default] Release
com.saltare.server.dao.EventTypeData/com.saltare.core.event.CastorEvent/0
R/- by org.exolab.castor.jdo.engine.TransactionContextImpl@a9d2a
INFO [Default] Acquired on com.saltare.server.dao.EventTypeData/com.saltare
.cor
e.event.CastorEvent/0 R/- by
org.exolab.castor.jdo.engine.TransactionContextImpl
@34cd65
INFO [Default] [Castor] LockEngine: Object name =
com.saltare.server.dao.EventI
dxFieldsData
INFO [Default] Delete com.saltare.server.dao.EventIdxFieldsData/122/5 -/W
by or
g.exolab.castor.jdo.engine.TransactionContextImpl@a9d2a
INFO [Default] Release com.saltare.server.dao.EventIdxFieldsData/122/5 -/W
by o
rg.exolab.castor.jdo.engine.TransactionContextImpl@a9d2a
INFO [Default] Release com.saltare.server.dao.UserData/User/2 R/- by
org.exolab
.castor.jdo.engine.TransactionContextImpl@a9d2a
INFO [Default] Release com.saltare.server.dao.EventData/4/3 R/- by
org.exolab.c
astor.jdo.engine.TransactionContextImpl@a9d2a
INFO [Default] Release
com.saltare.server.dao.EventTypeData/com.saltare.core.ev
ent.StockOutAlert/4 R/- by
org.exolab.castor.jdo.engine.TransactionContextImpl@a
9d2a
ERROR [server.jmx.RegistryService$EventPropagator] Error in
EventPropagator.run(
) (thread=1).
javax.transaction.RollbackException: Unable to commit, tx=XidImpl
[FormatId=257,
GlobalId=dominik//9, BranchQual=] status=STATUS_ROLLEDBACK
at org.jboss.tm.TxCapsule.commit(TxCapsule.java:350)
at org.jboss.tm.TransactionImpl.commit(TransactionImpl.java:76)
at
com.saltare.server.jboss.TxCustomTimeoutInterceptorCMT.runWithTransac
tions(TxCustomTimeoutInterceptorCMT.java:377)
at
com.saltare.server.jboss.TxCustomTimeoutInterceptorCMT.invoke(TxCusto
mTimeoutInterceptorCMT.java:116)
at
org.jboss.ejb.plugins.SecurityInterceptor.invoke(SecurityInterceptor.
java:128)
at
org.jboss.ejb.plugins.LogInterceptor.invoke(LogInterceptor.java:195)
at
org.jboss.ejb.StatelessSessionContainer.invoke(StatelessSessionContai
ner.java:286)
at
org.jboss.ejb.plugins.jrmp.server.JRMPContainerInvoker.invoke(JRMPCon
tainerInvoker.java:483)
at
org.jboss.ejb.plugins.jrmp.interfaces.GenericProxy.invokeContainer(Ge
nericProxy.java:335)
at
org.jboss.ejb.plugins.jrmp.interfaces.StatelessSessionProxy.invoke(St
atelessSessionProxy.java:123)
at $Proxy29.distributeEventOnSameThread(Unknown Source)
at
com.saltare.server.jmx.RegistryService$EventPropagator.sendEvent(Regi
stryService.java:283)
at
com.saltare.server.jmx.RegistryService$EventPropagator.run(RegistrySe
rvice.java:224)
at java.lang.Thread.run(Thread.java:484)
INFO [Default] [Castor] LockEngine: Object name =
com.saltare.server.dao.UserDa
ta
-----------------------------------------------------------
If you wish to unsubscribe from this mailing, send mail to
[EMAIL PROTECTED] with a subject of:
unsubscribe castor-dev