I was using cmt on session beans, and had a deadlock situation.
No exceptions being thrown. When I changed to bean managed
transactions I did get an exception being thrown. The access mode
is set to db-locked.
org.exolab.castor.jdo.LockNotGrantedException: persist.deadlock>
org.exolab.castor.jdo.LockNotGrantedException: persist.deadlock
at org.exolab.castor.persist.ObjectLock.detectDeadlock(Unknown
The full exception message is below.
There is no deadlock situation that I can see. However I do have
bed objects, which may or may not have an encounter assigned to
them. And it is set up as a unidirectional relationship which may
be causing problems.
An encounter contains a patient and a bed may or maynot contain a
encounter. Every time a patient is moved to a different bed, the
encounter gets placed in the waiting room, disassociated from the
bed, then moved from the waiting room to the new bed. These are 2
distinct transactions.
The listing below is where the exception is thrown.
public void moveBedToWaitingRoom2(long currBedId, String
currBedNumber, long currBedVersion,long currEncVersion) throws
Exception
{
BedDAO bedDAO = null;
BedRec temp = null;
BedRec currBedRec = null;
String newBedNumber = BedConstants.WAITING_ROOM;
EncounterRec currEncRec = null;
try
{
if (currBedId == 0L)
{
return;
}
bedDAO = new BedDAO ();
bedDAO.begin();
// just uses oql to retrieve the record by id. Doesn't use
load
currBedRec = bedDAO.loadRecord(currBedId);
currEncRec = currBedRec.getEdEncounter();
if (currEncRec == null)
{
bedDAO.rollback();
throw new BedAssignedException();
}
if (!(newBedNumber.equals(BedConstants.WAITING_ROOM)))
{
bedDAO.rollback();
throw new BedAssignedException();
}
if (currEncVersion != currEncRec.getVersion())
{
bedDAO.rollback();
throw new OptimisticLockException();
}
currEncRec = currBedRec.getEdEncounter();
currEncRec.setVersion(currEncRec.getVersion() + 1L);
// disassociate the bed from the encounter
currEncRec.setEdBedId(0L);
// disassociate the encounter from the bed
currEncRec.setBed(null);
currBedRec.setEdEncounter(null);
currBedRec.setBedStatus(BedConstants.AVAILABLE);
bedDAO.commit();
}
catch (Exception e)
{
//new 5/31
if(bedDAO != null)
bedDAO.rollback();
throw e;
}
finally
{
if(bedDAO != null)
bedDAO.close();
}
}
org.exolab.castor.jdo.LockNotGrantedException: persist.deadlock>
org.exolab.castor.jdo.LockNotGrantedException: persist.deadlock
at org.exolab.castor.persist.ObjectLock.detectDeadlock(Unknown
Source)
at org.exolab.castor.persist.ObjectLock.upgrade(Unknown Source)
at org.exolab.castor.persist.LockEngine$TypeInfo.upgrade(Unknown
Source)
at
org.exolab.castor.persist.LockEngine$TypeInfo.access$600(Unknown
Source)
at org.exolab.castor.persist.LockEngine.writeLock(Unknown Source)
at org.exolab.castor.persist.TransactionContext.writeLock(Unknown
Source)
at org.exolab.castor.persist.ClassMolder.preStore(Unknown Source)
at org.exolab.castor.persist.LockEngine.preStore(Unknown Source)
at org.exolab.castor.persist.TransactionContext.prepare(Unknown
Source)
at org.exolab.castor.jdo.engine.DatabaseImpl.commit(Unknown Source)
at vanderbilt.ed.dao.BaseDAO.commit(BaseDAO.java:175)
at
vanderbilt.ed.beds.ejb.EDBedBean.moveWaitingRoomToBed2(EDBedBean.ja
va:415)
at
vanderbilt.ed.beds.ejb.EDBedBean.moveBedToBed(EDBedBean.java:222)
at vanderbilt.ed.beds.ejb.EDBedBean.assignBeds(EDBedBean.java:686)
at
vanderbilt.ed.beds.ejb.EDBedBean.processRequest(EDBedBean.java:710)
at
vanderbilt.ed.beds.ejb.EDBedBean_7vrpou_EOImpl.processRequest(EDBed
Bean_7vrpou_EOImpl.java:81)
at
vanderbilt.ed.servlets.beds.BedsServlet.assignBeds(BedsServlet.java
:147)
at
vanderbilt.ed.servlets.beds.BedsServlet.processRequest(BedsServlet.
java:244)
at
vanderbilt.ed.servlets.beds.BedsServlet.doPost(BedsServlet.java:212)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at
weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStub
Impl.java:265)
at
weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:21)
at
weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.
java:27)
at
weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebApp
ServletContext.java:2552)
at
weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequest
Impl.java:2260)
at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:139)
at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:120)
####<Sep 23, 2002 9:36:00 PM CDT> <Error> <EDWhiteboard>
<harpo.mc.vanderbilt.edu> <edisServer> <ExecuteThread: '16' for
queue: 'CriticalAppQueue'> <> <> <000000> <Rollback failed This
transaction is not open>
org.exolab.castor.jdo.TransactionNotInProgressException: This
transaction is not open
at org.exolab.castor.jdo.engine.DatabaseImpl.rollback(Unknown
Source)
at vanderbilt.ed.dao.BaseDAO.rollback(BaseDAO.java:185)
at
vanderbilt.ed.beds.ejb.EDBedBean.moveWaitingRoomToBed2(EDBedBean.ja
va:422)
at
vanderbilt.ed.beds.ejb.EDBedBean.moveBedToBed(EDBedBean.java:222)
at vanderbilt.ed.beds.ejb.EDBedBean.assignBeds(EDBedBean.java:686)
at
vanderbilt.ed.beds.ejb.EDBedBean.processRequest(EDBedBean.java:710)
at
vanderbilt.ed.beds.ejb.EDBedBean_7vrpou_EOImpl.processRequest(EDBed
Bean_7vrpou_EOImpl.java:81)
at
vanderbilt.ed.servlets.beds.BedsServlet.assignBeds(BedsServlet.java
:147)
at
vanderbilt.ed.servlets.beds.BedsServlet.processRequest(BedsServlet.
java:244)
at
vanderbilt.ed.servlets.beds.BedsServlet.doPost(BedsServlet.java:212)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at
weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStub
Impl.java:265)
at
weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:21)
at
weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.
java:27)
at
weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebApp
ServletContext.java:2552)
at
weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequest
Impl.java:2260)
at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:139)
at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:120)
####<Sep 23, 2002 9:36:00 PM CDT> <Error> <EDWhiteboard>
<harpo.mc.vanderbilt.edu> <edisServer> <ExecuteThread: '16' for
queue: 'CriticalAppQueue'> <> <> <000000> <moveWaitingRoomToBed
Exception: Nested error:
org.exolab.castor.jdo.LockNotGrantedException: persist.deadlock>
org.exolab.castor.jdo.LockNotGrantedException: persist.deadlock
at org.exolab.castor.persist.ObjectLock.detectDeadlock(Unknown
Source)
at org.exolab.castor.persist.ObjectLock.upgrade(Unknown Source)
at org.exolab.castor.persist.LockEngine$TypeInfo.upgrade(Unknown
Source)
at
org.exolab.castor.persist.LockEngine$TypeInfo.access$600(Unknown
Source)
at org.exolab.castor.persist.LockEngine.writeLock(Unknown Source)
at org.exolab.castor.persist.TransactionContext.writeLock(Unknown
Source)
at org.exolab.castor.persist.ClassMolder.preStore(Unknown Source)
at org.exolab.castor.persist.LockEngine.preStore(Unknown Source)
at org.exolab.castor.persist.TransactionContext.prepare(Unknown
Source)
at org.exolab.castor.jdo.engine.DatabaseImpl.commit(Unknown Source)
at vanderbilt.ed.dao.BaseDAO.commit(BaseDAO.java:175)
at
vanderbilt.ed.beds.ejb.EDBedBean.moveWaitingRoomToBed2(EDBedBean.ja
va:415)
at
vanderbilt.ed.beds.ejb.EDBedBean.moveBedToBed(EDBedBean.java:222)
at vanderbilt.ed.beds.ejb.EDBedBean.assignBeds(EDBedBean.java:686)
at
vanderbilt.ed.beds.ejb.EDBedBean.processRequest(EDBedBean.java:710)
at
vanderbilt.ed.beds.ejb.EDBedBean_7vrpou_EOImpl.processRequest(EDBed
Bean_7vrpou_EOImpl.java:81)
at
vanderbilt.ed.servlets.beds.BedsServlet.assignBeds(BedsServlet.java
:147)
at
vanderbilt.ed.servlets.beds.BedsServlet.processRequest(BedsServlet.
java:244)
at
vanderbilt.ed.servlets.beds.BedsServlet.doPost(BedsServlet.java:212)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at
weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStub
Impl.java:265)
at
weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:21)
at
weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.
java:27)
at
weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebApp
ServletContext.java:2552)
at
weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequest
Impl.java:2260)
at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:139)
at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:120)
####<Sep 23, 2002 9:36:00 PM CDT> <Info> <EDWhiteboard>
<harpo.mc.vanderbilt.edu> <edisServer> <ExecuteThread: '16' for
queue: 'CriticalAppQueue'> <> <> <000000> <BaseDAO:close():
SUCCESSFUL >
-----------------------------------------------------------
If you wish to unsubscribe from this mailing, send mail to
[EMAIL PROTECTED] with a subject of:
unsubscribe castor-dev