serious problems with connection leaks in jboss 3.0.6
marcin Mar 5, 2003 12:33 PMHi,
This is the case for real programmers :)
I have quite complicated application which is migrated from jboss 2.4.6. Under heavy load the database connections are leaking. After an hour 100 connections can be aquired :(
Software we tested on:
JBoss 3.0.6, jdk1.4.1_02, JRockit 8, db: postgresql 7.2 or 7.3, jdbc drivers jdbc2, jdbc3
Moreover the same application runs very well on JBoss3.2RC2 but still receiving two exceptions - which are pointing that something with connection management is not good.
The same application runs very well on jboss 2.4.6. This is not the problem with closing connections in finally block!!! We have checked it several times and wrote special procedures that are checking if all opened connections in application are closed!
Is there anyone who has the same problems? Maybe someone who wrote those pieces of code of the connection and transaction management can help?
The stacktraces we are getting in JBoss3.2RC2:
java.lang.IllegalStateException: Trying to return an unknown connection2! org.jboss.resource.adapter.jdbc.WrappedConnection@1c67
at org.jboss.resource.connectionmanager.CachedConnectionManager.unregisterConnection(Lorg.jboss.resource.connectionmanager.ConnectionCacheListener;Ljava.lang.Object;)V(Cached
at org.jboss.resource.connectionmanager.TxConnectionManager$TxConnectionEventListener.connectionClosed(Ljavax.resource.spi.ConnectionEvent;)V(TxConnectionManager.java:550)
at org.jboss.resource.adapter.jdbc.BaseWrapperManagedConnection.closeHandle(Lorg.jboss.resource.adapter.jdbc.WrappedConnection;)V(BaseWrapperManagedConnection.java:280)
at org.jboss.resource.adapter.jdbc.WrappedConnection.close()V(WrappedConnection.java:97)
at com._3dart.ejb.iau.types.IAUTypeManagerEJB.closeConnection()V(IAUTypeManagerEJB.java:228)
at com._3dart.ejb.iau.types.IAUTypeManagerEJB.ejbCreate()V(IAUTypeManagerEJB.java:53)
at COM.jrockit.reflect.NativeMethodInvoker.invoke0(ILjava.lang.Object;[Ljava.lang.Object;)Ljava.lang.Object;(Native Method)
at COM.jrockit.reflect.NativeMethodInvoker.invoke(Ljava.lang.Object;[Ljava.lang.Object;)Ljava.lang.Object;(Unknown Source)
at COM.jrockit.reflect.VirtualNativeMethodInvoker.invoke(Ljava.lang.Object;[Ljava.lang.Object;)Ljava.lang.Object;(Unknown Source)
at java.lang.reflect.Method.invoke(Ljava.lang.Object;[Ljava.lang.Object;I)Ljava.lang.Object;(Unknown Source)
at org.jboss.ejb.StatelessSessionEnterpriseContext.(Ljava.lang.Object;Lorg.jboss.ejb.Container;)V(StatelessSessionEnterpriseContext.java:52)
at org.jboss.ejb.plugins.StatelessSessionInstancePool.create(Ljava.lang.Object;)Lorg.jboss.ejb.EnterpriseContext;(StatelessSessionInstancePool.java:35)
at org.jboss.ejb.plugins.AbstractInstancePool.get()Lorg.jboss.ejb.EnterpriseContext;(AbstractInstancePool.java:174)
at org.jboss.ejb.plugins.StatelessSessionInstanceInterceptor.invoke(Lorg.jboss.invocation.Invocation;)Ljava.lang.Object;(StatelessSessionInstanceInterceptor.java:63)
at org.jboss.ejb.plugins.AbstractTxInterceptor.invokeNext(Lorg.jboss.invocation.Invocation;Z)Ljava.lang.Object;(AbstractTxInterceptor.java:108)
at org.jboss.ejb.plugins.TxInterceptorCMT.runWithTransactions(Lorg.jboss.invocation.Invocation;)Ljava.lang.Object;(TxInterceptorCMT.java:243)
at org.jboss.ejb.plugins.TxInterceptorCMT.invoke(Lorg.jboss.invocation.Invocation;)Ljava.lang.Object;(TxInterceptorCMT.java:104)
at org.jboss.ejb.plugins.SecurityInterceptor.invoke(Lorg.jboss.invocation.Invocation;)Ljava.lang.Object;(SecurityInterceptor.java:130)
at org.jboss.ejb.plugins.LogInterceptor.invoke(Lorg.jboss.invocation.Invocation;)Ljava.lang.Object;(LogInterceptor.java:208)
at org.jboss.ejb.plugins.ProxyFactoryFinderInterceptor.invoke(Lorg.jboss.invocation.Invocation;)Ljava.lang.Object;(ProxyFactoryFinderInterceptor.java:154)
at org.jboss.ejb.StatelessSessionContainer.internalInvoke(Lorg.jboss.invocation.Invocation;)Ljava.lang.Object;(StatelessSessionContainer.java:322)
at org.jboss.ejb.Container.invoke(Lorg.jboss.invocation.Invocation;)Ljava.lang.Object;(Container.java:652)
at COM.jrockit.reflect.NativeMethodInvoker.invoke0(ILjava.lang.Object;[Ljava.lang.Object;)Ljava.lang.Object;(Native Method)
at COM.jrockit.reflect.NativeMethodInvoker.invoke(Ljava.lang.Object;[Ljava.lang.Object;)Ljava.lang.Object;(Unknown Source)
at COM.jrockit.reflect.VirtualNativeMethodInvoker.invoke(Ljava.lang.Object;[Ljava.lang.Object;)Ljava.lang.Object;(Unknown Source)
at java.lang.reflect.Method.invoke(Ljava.lang.Object;[Ljava.lang.Object;I)Ljava.lang.Object;(Unknown Source)
at org.jboss.mx.capability.ReflectedMBeanDispatcher.invoke(Ljava.lang.String;[Ljava.lang.Object;[Ljava.lang.String;)Ljava.lang.Object;(ReflectedMBeanDispatcher.java:284)
at org.jboss.mx.server.MBeanServerImpl.invoke(Ljavax.management.ObjectName;Ljava.lang.String;[Ljava.lang.Object;[Ljava.lang.String;)Ljava.lang.Object;(MBeanServerImpl.java:54
at org.jboss.invocation.local.LocalInvoker.invoke(Lorg.jboss.invocation.Invocation;)Ljava.lang.Object;(LocalInvoker.java:101)
at org.jboss.invocation.InvokerInterceptor.invoke(Lorg.jboss.invocation.Invocation;)Ljava.lang.Object;(InvokerInterceptor.java:88)
at org.jboss.proxy.TransactionInterceptor.invoke(Lorg.jboss.invocation.Invocation;)Ljava.lang.Object;(TransactionInterceptor.java:77)
at org.jboss.proxy.SecurityInterceptor.invoke(Lorg.jboss.invocation.Invocation;)Ljava.lang.Object;(SecurityInterceptor.java:80)
The second one, always a while after:
java.lang.Exception: Stack Trace
at org.jboss.resource.connectionmanager.CachedConnectionManager.closeAll(Ljava.util.Map;)V(CachedConnectionManager.java:357)
at org.jboss.resource.connectionmanager.CachedConnectionManager.popMetaAwareObject(Ljava.util.Set;)V(CachedConnectionManager.java:199)
at org.jboss.resource.connectionmanager.CachedConnectionInterceptor.invoke(Lorg.jboss.invocation.Invocation;)Ljava.lang.Object;(CachedConnectionInterceptor.java:190)
at org.jboss.ejb.plugins.EntityReentranceInterceptor.invoke(Lorg.jboss.invocation.Invocation;)Ljava.lang.Object;(EntityReentranceInterceptor.java:91)
at org.jboss.ejb.plugins.EntityInstanceInterceptor.invoke(Lorg.jboss.invocation.Invocation;)Ljava.lang.Object;(EntityInstanceInterceptor.java:174)
at org.jboss.ejb.plugins.EntityLockInterceptor.invoke(Lorg.jboss.invocation.Invocation;)Ljava.lang.Object;(EntityLockInterceptor.java:107)
at org.jboss.ejb.plugins.EntityCreationInterceptor.invoke(Lorg.jboss.invocation.Invocation;)Ljava.lang.Object;(EntityCreationInterceptor.java:69)
at org.jboss.ejb.plugins.AbstractTxInterceptor.invokeNext(Lorg.jboss.invocation.Invocation;Z)Ljava.lang.Object;(AbstractTxInterceptor.java:108)
at org.jboss.ejb.plugins.TxInterceptorCMT.runWithTransactions(Lorg.jboss.invocation.Invocation;)Ljava.lang.Object;(TxInterceptorCMT.java:243)
at org.jboss.ejb.plugins.TxInterceptorCMT.invoke(Lorg.jboss.invocation.Invocation;)Ljava.lang.Object;(TxInterceptorCMT.java:104)
at org.jboss.ejb.plugins.SecurityInterceptor.invoke(Lorg.jboss.invocation.Invocation;)Ljava.lang.Object;(SecurityInterceptor.java:130)
at org.jboss.ejb.plugins.LogInterceptor.invoke(Lorg.jboss.invocation.Invocation;)Ljava.lang.Object;(LogInterceptor.java:208)
at org.jboss.ejb.plugins.ProxyFactoryFinderInterceptor.invoke(Lorg.jboss.invocation.Invocation;)Ljava.lang.Object;(ProxyFactoryFinderInterceptor.java:154)
at org.jboss.ejb.EntityContainer.internalInvoke(Lorg.jboss.invocation.Invocation;)Ljava.lang.Object;(EntityContainer.java:483)
at org.jboss.ejb.Container.invoke(Lorg.jboss.invocation.Invocation;)Ljava.lang.Object;(Container.java:652)
at COM.jrockit.reflect.NativeMethodInvoker.invoke0(ILjava.lang.Object;[Ljava.lang.Object;)Ljava.lang.Object;(Native Method)
at COM.jrockit.reflect.NativeMethodInvoker.invoke(Ljava.lang.Object;[Ljava.lang.Object;)Ljava.lang.Object;(Unknown Source)
at COM.jrockit.reflect.VirtualNativeMethodInvoker.invoke(Ljava.lang.Object;[Ljava.lang.Object;)Ljava.lang.Object;(Unknown Source)
at java.lang.reflect.Method.invoke(Ljava.lang.Object;[Ljava.lang.Object;I)Ljava.lang.Object;(Unknown Source)
at org.jboss.mx.capability.ReflectedMBeanDispatcher.invoke(Ljava.lang.String;[Ljava.lang.Object;[Ljava.lang.String;)Ljava.lang.Object;(ReflectedMBeanDispatcher.java:284)
at org.jboss.mx.server.MBeanServerImpl.invoke(Ljavax.management.ObjectName;Ljava.lang.String;[Ljava.lang.Object;[Ljava.lang.String;)Ljava.lang.Object;(MBeanServerImpl.java:54
at org.jboss.invocation.local.LocalInvoker.invoke(Lorg.jboss.invocation.Invocation;)Ljava.lang.Object;(LocalInvoker.java:101)
at org.jboss.invocation.InvokerInterceptor.invoke(Lorg.jboss.invocation.Invocation;)Ljava.lang.Object;(InvokerInterceptor.java:88)
at org.jboss.proxy.TransactionInterceptor.invoke(Lorg.jboss.invocation.Invocation;)Ljava.lang.Object;(TransactionInterceptor.java:77)
at org.jboss.proxy.SecurityInterceptor.invoke(Lorg.jboss.invocation.Invocation;)Ljava.lang.Object;(SecurityInterceptor.java:80)
at org.jboss.proxy.ejb.EntityInterceptor.invoke(Lorg.jboss.invocation.Invocation;)Ljava.lang.Object;(EntityInterceptor.java:112)
at org.jboss.proxy.ClientContainer.invoke(Ljava.lang.Object;Ljava.lang.reflect.Method;[Ljava.lang.Object;)Ljava.lang.Object;(ClientContainer.java:82)
at $Proxy209.getId()Ljava.lang.Long;(Unknown Source)
at com._3dart.ejb.iau.misc.proxy.ProgramsProxy.connectPrograms(Ljava.util.Collection;Ljava.util.Hashtable;Lcom._3dart.ejb.iau.progs.IAUProgramHome;)V(ProgramsProxy.java:281)
at com._3dart.ejb.iau.misc.proxy.ProgramsProxy.connectIdPrograms(Ljava.util.Collection;)V(ProgramsProxy.java:185)
at com._3dart.ejb.iau.product.productcategory.ProductCategory.connectPrograms(Ljava.util.Date;Lcom._3dart.ejb.iau.misc.proxy.ProductsProxy;Lcom._3dart.ejb.iau.misc.proxy.Prog
at com._3dart.ejb.iau.product.productcategory.ProductCategory.selectIdControls(Ljava.util.Collection;Lcom._3dart.ejb.iau.misc.proxy.ProductsProxy;Lcom._3dart.ejb.iau.misc.pro