Jonas 2.2.6 Bug Report:
Under stress (>15 threads) using only Session Beans, each using db
operations (therefore, doing
lots of get() and close() with datasources), with tracing options in
Trace.level<>31 (none) we
get the following error.
16:01:45:911 - java.util.ConcurrentModificationException
at java.util.LinkedList$ListItr.checkForComodification(LinkedList.java:535)
at java.util.LinkedList$ListItr.next(LinkedList.java:476)
at org.objectweb.jonas.dbm.Pool.dump(Pool.java, Compiled Code)
at org.objectweb.jonas.dbm.Pool.closeConnection(Pool.java:298)
at
org.objectweb.jonas.dbm.ConnectionManager.connectionClosed(ConnectionManager.java:439)
at
org.objectweb.jonas.jdbc_xa.XAConnectionImpl.notifyClose(XAConnectionImpl.java,
Compiled Code)
at org.objectweb.jonas.jdbc_xa.ConnectionImpl.close(ConnectionImpl.java:197)
at
it.sai.anag.mw.host.caricastrutture.CaricaStrutturaDBEjb.caricaStruttura(CaricaStrutturaDBEjb.java:127)
at it.sai.anag.mw.host.StruttureHost.caricaStruttura(StruttureHost.java,
Compiled Code)
at it.sai.anag.mw.host.StruttureHost.getStruttura(StruttureHost.java:65)
at it.sai.anag.mw.host.StringaDatiHost.<init>(StringaDatiHost.java:49)
at it.sai.anag.mw.host.ProxyHost.insPersona(ProxyHost.java:192)
at it.sai.anag.od.InserimentoPersona.esegui(InserimentoPersona.java:139)
at it.sai.anag.od.Anag.insPersona(Anag.java:98)
at it.sai.anag.mw.ejb.AnagraficaBean.insPersona(AnagraficaBean.java:217)
at
it.sai.anag.mw.ejb.JOnASanagraficaRemote.insPersona(JOnASanagraficaRemote.java:56)
at
it.sai.anag.mw.ejb.JOnASanagraficaRemote_Skel.dispatch(JOnASanagraficaRemote_Skel.java,
Compiled Code)
at sun.rmi.server.UnicastServerRef.oldDispatch(UnicastServerRef.java,
Compiled Code)
at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java,
Compiled Code)
at sun.rmi.transport.Transport$1.run(Transport.java, Compiled Code)
at java.security.AccessController.doPrivileged(Native Method)
at sun.rmi.transport.Transport.serviceCall(Transport.java, Compiled Code)
at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:422)
at
sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:634)
at java.lang.Thread.run(Thread.java, Compiled Code)
The reason of the error lies in Pool.java (org.objectweb.jonas.dbm.Pool
class implementation),
precisely in the dump() function. That function "dumps" to log the whole
connection list. The
iteration on the list, though, is not synchronized with other operations on
the connection list.
So the dump operation fails if any other thread in the application server
modifies the connection
list.
Regards,
Filippo
----
This list is cross-posted to two mail lists. To unsubscribe,
follow the instructions below for the list you subscribed to.
For objectweb.org: send email to [EMAIL PROTECTED] and
include in the body of the message "unsubscribe ejb-container-group".
For enhydra.org: send email to [EMAIL PROTECTED] and include
in the body of the message "unsubscribe ejb-container-group".