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

Reply via email to