ORA-0060 (database deadlock) with Weblogic CMP EJB

Janne Mattila <[email protected]>
Newsgroups gmane.comp.java.sun.ejb.general
Message-ID <OF54773A7E.5C0996C2-ONC2256DBA.0030525C@S>
First of all, apologies if this is a duplicate post. I've had some
difficulties with the LISTSERV.

I am running some performance tests on a simple EJB application and end up
getting
ORA-0060 exceptions when load gets big enough. I have separate JSP and EJB
servers.
I've isolated the problem to a simple JSP page, which creates a new Artist
EJB and
then deletes it. Both actions are done thorgh a session facade EJB which
operates
on CMP entity beans. Artist EJB also has CMR relationships to a CD EJB, but
in
this isolated case I do not set them.

Both servers are Weblogic 6.1sp5 on Windows 2000. Database is Oracle 9.2.

Part of JSP page:
------------------------

Context ctx = ContextService.getRemoteContext();

ArtistManagerHome home = (ArtistManagerHome) ctx.lookup
("ArtistManagerHome");
ArtistManager aManager = home.create();
ArtistDTO artist = aManager.createArtistLocal(newRecordArtistName,
newRecordArtistFirstName, article);
Integer artistId = artist.getId();
System.out.println("Created artist: " + artistId);

ArtistManagerHome home2 = (ArtistManagerHome) ctx.lookup
("ArtistManagerHome");
ArtistManager aManager2 = home.create();
aManager2.deleteArtistLocal(artistId);
System.out.println("Deleted artist: " + artistId);

------------------------

Session facade either creates a new Artist item or deletes it, through
local home / local
interface. ArtistBean's createUniqueLocal -method is called, and first it
does a check to find
out that a duplicate item (same firstname / lastname) does not exist
already

Parts of Artist bean:

------------------------

    public Integer ejbCreateUniqueLocal(String name, String firstName,
Character article)
        throws CreateException {

      ArtistLocalHome home = (ArtistLocalHome) ctx.getEJBLocalHome();

      try {
        home.findByNames(name, firstName, article);
      } catch (ObjectNotFoundException o) {
        // good, we did not find it
        return ejbCreate(name, firstName, article);
      } catch (FinderException f) {
        throw new CreateException("f");
      }

      // we found it - error!

      throw new DuplicateKeyException
      ("artist already exists");
    }


    public Integer ejbCreate(String name, String firstName, Character
article)
      throws CreateException {

      if (article != null && !article.equals(new Character('t'))) {
          throw new CreateException
            ("Unsupported article");
      }

      setName(name);
      setFirstName(firstName);
      setArticle(article);

      return null;  // container is responsible for returning the
      // primary key
    }

------------------------

Primary keys are created using oracle sequences

weblogic-cmp-rdbms-jar.xml:

------------------------
 <weblogic-rdbms-bean>
  <ejb-name>Artist</ejb-name>
  <data-source-name>TestDS</data-source-name>
  <table-name>Artist</table-name>
  <field-map>
   <cmp-field>name</cmp-field>
   <dbms-column>name</dbms-column>
  </field-map>
  <field-map>
   <cmp-field>firstName</cmp-field>
   <dbms-column>firstName</dbms-column>
  </field-map>
  <field-map>
   <cmp-field>article</cmp-field>
   <dbms-column>article</dbms-column>
  </field-map>
  <field-map>
   <cmp-field>id</cmp-field>
   <dbms-column>id</dbms-column>
  </field-map>
  <automatic-key-generation>
   <generator-type>ORACLE</generator-type>
   <generator-name>seq_Artist</generator-name>
   <key-cache-size>1</key-cache-size>
  </automatic-key-generation>
 </weblogic-rdbms-bean>
------------------------

Finally, stacktraces that get thrown (very long so only beginning....)

------------------------
...
Created artist: 21223
Deleted artist: 21209
Deleted artist: 21220
Deleted artist: 21207
Deleted artist: 21215
Deleted artist: 21216
Deleted artist: 21211
Deleted artist: 21221
Deleted artist: 21223
Exception stacktrace: java.rmi.RemoteException: EJB Exception: ; nested
exceptio
n is:
        javax.ejb.EJBException:
Start server side stack trace:
javax.transaction.TransactionRolledbackException: EJB Exception::
java.sql.SQLEx
ception: ORA-00060: lukkiutuma havaittu resurssin odotuksen aikana
        at weblogic.db.oci.OciCursor.getCDAException(OciCursor.java:243)
        at weblogic.jdbc.oci.Statement.executeUpdate(Statement.java:989)
        at weblogic.jdbc.jts.Statement.executeUpdate(Statement.java:503)
        at
cd.Artist_wkqag7__WebLogic_CMP_RDBMS.ejbRemove(Artist_wkqag7__WebLogi
c_CMP_RDBMS.java:1838)
        at weblogic.ejb20.manager.DBManager.remove(DBManager.java:659)
        at
weblogic.ejb20.internal.EntityEJBObject.remove(EntityEJBObject.java:1
23)
        at
cd.ArtistBean_wkqag7_EOImpl.remove(ArtistBean_wkqag7_EOImpl.java:436)

        at cd.session.ArtistManagerBean.deleteArtist(Unknown Source)
        at
cd.session.ArtistManagerBean_6on7i2_EOImpl.deleteArtist(ArtistManager
Bean_6on7i2_EOImpl.java:120)
        at cd.session.ArtistManagerBean_6on7i2_EOImpl_WLSkel.invoke(Unknown
Sour
ce)
        at
weblogic.rmi.internal.BasicServerRef.invoke(BasicServerRef.java:360)
        at
weblogic.rmi.cluster.ReplicaAwareServerRef.invoke(ReplicaAwareServerR
ef.java:93)
        at
weblogic.rmi.internal.BasicServerRef.handleRequest(BasicServerRef.jav
a:329)
        at
weblogic.rmi.internal.BasicExecuteRequest.execute(BasicExecuteRequest
.java:22)
        at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:140)
        at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:121)
; nested exception is:
        java.sql.SQLException: ORA-00060: lukkiutuma havaittu resurssin
odotukse
n aikana
java.sql.SQLException: ORA-00060: lukkiutuma havaittu resurssin odotuksen
aikana

        at weblogic.db.oci.OciCursor.getCDAException(OciCursor.java:243)
        at weblogic.jdbc.oci.Statement.executeUpdate(Statement.java:989)
        at weblogic.jdbc.jts.Statement.executeUpdate(Statement.java:503)
        at
cd.Artist_wkqag7__WebLogic_CMP_RDBMS.ejbRemove(Artist_wkqag7__WebLogi
c_CMP_RDBMS.java:1838)
        at weblogic.ejb20.manager.DBManager.remove(DBManager.java:659)
        at
weblogic.ejb20.internal.EntityEJBObject.remove(EntityEJBObject.java:1
23)
        at
cd.ArtistBean_wkqag7_EOImpl.remove(ArtistBean_wkqag7_EOImpl.java:436)

        at cd.session.ArtistManagerBean.deleteArtist(Unknown Source)
        at
cd.session.ArtistManagerBean_6on7i2_EOImpl.deleteArtist(ArtistManager
Bean_6on7i2_EOImpl.java:120)
        at cd.session.ArtistManagerBean_6on7i2_EOImpl_WLSkel.invoke(Unknown
Sour
ce)
        at
weblogic.rmi.internal.BasicServerRef.invoke(BasicServerRef.java:360)
        at
weblogic.rmi.cluster.ReplicaAwareServerRef.invoke(ReplicaAwareServerR
ef.java:93)
        at
weblogic.rmi.internal.BasicServerRef.handleRequest(BasicServerRef.jav
a:329)
        at
weblogic.rmi.internal.BasicExecuteRequest.execute(BasicExecuteRequest
.java:22)
        at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:140)
        at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:121)
--------------- nested within: ------------------
javax.ejb.EJBException
 - with nested exception:
[javax.transaction.TransactionRolledbackException: EJB Exception::
java.sql.SQLE
xception: ORA-00060: lukkiutuma havaittu resurssin odotuksen aikana
        at weblogic.db.oci.OciCursor.getCDAException(OciCursor.java:243)
        at weblogic.jdbc.oci.Statement.executeUpdate(Statement.java:989)
        at weblogic.jdbc.jts.Statement.executeUpdate(Statement.java:503)
        at
cd.Artist_wkqag7__WebLogic_CMP_RDBMS.ejbRemove(Artist_wkqag7__WebLogi
c_CMP_RDBMS.java:1838)
        at weblogic.ejb20.manager.DBManager.remove(DBManager.java:659)
        at
weblogic.ejb20.internal.EntityEJBObject.remove(EntityEJBObject.java:1
23)
        at
cd.ArtistBean_wkqag7_EOImpl.remove(ArtistBean_wkqag7_EOImpl.java:436)

        at cd.session.ArtistManagerBean.deleteArtist(Unknown Source)
        at
cd.session.ArtistManagerBean_6on7i2_EOImpl.deleteArtist(ArtistManager
Bean_6on7i2_EOImpl.java:120)
        at cd.session.ArtistManagerBean_6on7i2_EOImpl_WLSkel.invoke(Unknown
Sour
ce)
        at
weblogic.rmi.internal.BasicServerRef.invoke(BasicServerRef.java:360)
        at
weblogic.rmi.cluster.ReplicaAwareServerRef.invoke(ReplicaAwareServerR
ef.java:93)
        at
weblogic.rmi.internal.BasicServerRef.handleRequest(BasicServerRef.jav
a:329)
        at
weblogic.rmi.internal.BasicExecuteRequest.execute(BasicExecuteRequest
.java:22)
        at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:140)
        at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:121)
; nested exception is:
        java.sql.SQLException: ORA-00060: lukkiutuma havaittu resurssin
odotukse
n aikana]
        at cd.session.ArtistManagerBean.deleteArtist(Unknown Source)
        at
cd.session.ArtistManagerBean_6on7i2_EOImpl.deleteArtist(ArtistManager
Bean_6on7i2_EOImpl.java:120)
        at cd.session.ArtistManagerBean_6on7i2_EOImpl_WLSkel.invoke(Unknown
Sour
ce)
        at
weblogic.rmi.internal.BasicServerRef.invoke(BasicServerRef.java:360)
        at
weblogic.rmi.cluster.ReplicaAwareServerRef.invoke(ReplicaAwareServerR
ef.java:93)
        at
weblogic.rmi.internal.BasicServerRef.handleRequest(BasicServerRef.jav
a:329)
        at
weblogic.rmi.internal.BasicExecuteRequest.execute(BasicExecuteRequest
.java:22)
        at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:140)
        at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:121)
End  server side stack trace

 - with nested exception:
[javax.transaction.TransactionRolledbackException: EJB Exception::
java.sql.SQLE
xception: ORA-00060: lukkiutuma havaittu resurssin odotuksen aikana
        at weblogic.db.oci.OciCursor.getCDAException(OciCursor.java:243)
        at weblogic.jdbc.oci.Statement.executeUpdate(Statement.java:989)
        at weblogic.jdbc.jts.Statement.executeUpdate(Statement.java:503)
        at
cd.Artist_wkqag7__WebLogic_CMP_RDBMS.ejbRemove(Artist_wkqag7__WebLogi
c_CMP_RDBMS.java:1838)
        at weblogic.ejb20.manager.DBManager.remove(DBManager.java:659)
        at
weblogic.ejb20.internal.EntityEJBObject.remove(EntityEJBObject.java:1
23)
        at
cd.ArtistBean_wkqag7_EOImpl.remove(ArtistBean_wkqag7_EOImpl.java:436)

        at cd.session.ArtistManagerBean.deleteArtist(Unknown Source)
        at
cd.session.ArtistManagerBean_6on7i2_EOImpl.deleteArtist(ArtistManager
Bean_6on7i2_EOImpl.java:120)
        at cd.session.ArtistManagerBean_6on7i2_EOImpl_WLSkel.invoke(Unknown
Sour
ce)
        at
weblogic.rmi.internal.BasicServerRef.invoke(BasicServerRef.java:360)
        at
weblogic.rmi.cluster.ReplicaAwareServerRef.invoke(ReplicaAwareServerR
ef.java:93)
        at
weblogic.rmi.internal.BasicServerRef.handleRequest(BasicServerRef.jav
a:329)
        at
weblogic.rmi.internal.BasicExecuteRequest.execute(BasicExecuteRequest
.java:22)
        at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:140)
        at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:121)
; nested exception is:
        java.sql.SQLException: ORA-00060: lukkiutuma havaittu resurssin
odotukse
n aikana

Start server side stack trace:
java.sql.SQLException: ORA-00060: lukkiutuma havaittu resurssin odotuksen
aikana
...
------------------------

What's the problem?

===========================================================================
To unsubscribe, send email to [email protected] and include in the body
of the message "signoff EJB-INTEREST".  For general help, send email to
[email protected] and include in the body of the message "help".
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.