6 Replies Latest reply: Feb 18, 2013 11:54 AM by 991401 RSS

    onnection leak for forceful release leading unable to create transaction

    991401
      We use Srping2.5.5+WL10.3+Hibenrate3.2.ga+ORacle10g

      We are running into a issue about a stale connection being used by our Transaction . I am attaching the stacktrace that we see when we observe such a case :
      At the end of this first stacktrace is another Warning message from Weblogic that we see all the time before we see this issue that I have pasted here

      weblogic.servlet.internal.WebAppServletContext@17590f79 - appName: 'lda', name: '/lda', context-path: '/lda', spec-version: '2.5'] Root cause of ServletException.
      org.springframework.transaction.CannotCreateTransactionException: Could not open Hibernate Session for transaction; nested exception is org.hibernate.TransactionException: JDBC begin failed:
      at org.springframework.orm.hibernate3.HibernateTransactionManager.doBegin(HibernateTransactionManager.java:599)
      at org.springframework.transaction.support.AbstractPlatformTransactionManager.getTransaction(AbstractPlatformTransactionManager.java:377)
      at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:101)
      at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
      at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
      at $Proxy154.getTrainDetail(Unknown Source)
      at com.uprr.apps.lda.ui.tacticalplanselection.TacticalPlanSelectionController.reDirect(TacticalPlanSelectionController.java:212)
      at sun.reflect.GeneratedMethodAccessor11615.invoke(Unknown Source)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
      at java.lang.reflect.Method.invoke(Method.java:597)
      at org.springframework.web.servlet.mvc.multiaction.MultiActionController.invokeNamedMethod(MultiActionController.java:473)
      at org.springframework.web.servlet.mvc.multiaction.MultiActionController.handleRequestInternal(MultiActionController.java:410)
      at org.springframework.web.servlet.mvc.AbstractController.handleRequest(AbstractController.java:153)
      at org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:48)
      at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:875)
      at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:809)
      at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:571)
      at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:512)
      at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
      at javax.servlet.http.HttpServlet.service(HttpServlet.java:821)
      at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227)
      at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:292)
      at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:27)
      at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:43)
      at org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:198)
      at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
      at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:43)
      at org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:198)
      at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
      at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:43)
      at com.uprr.apps.lda.ui.LDAWicketFilter.doFilter(LDAWicketFilter.java:59)
      at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3496)
      at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2180)
      at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2086)
      at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1406)
      at weblogic.work.ExecuteThread.execute(ExecuteThread.java:201)
      at weblogic.work.ExecuteThread.run(ExecuteThread.java:173)
      org.hibernate.TransactionException: JDBC begin failed:
      at org.hibernate.transaction.JDBCTransaction.begin(JDBCTransaction.java:68)
      at org.hibernate.impl.SessionImpl.beginTransaction(SessionImpl.java:1326)
      at org.springframework.orm.hibernate3.HibernateTransactionManager.doBegin(HibernateTransactionManager.java:558)
      at org.springframework.transaction.support.AbstractPlatformTransactionManager.getTransaction(AbstractPlatformTransactionManager.java:377)
      at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:101)
      at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
      at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
      at $Proxy154.getTrainDetail(Unknown Source)
      at com.uprr.apps.lda.ui.tacticalplanselection.TacticalPlanSelectionController.reDirect(TacticalPlanSelectionController.java:212)
      at sun.reflect.GeneratedMethodAccessor11615.invoke(Unknown Source)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
      at java.lang.reflect.Method.invoke(Method.java:597)
      at org.springframework.web.servlet.mvc.multiaction.MultiActionController.invokeNamedMethod(MultiActionController.java:473)
      at org.springframework.web.servlet.mvc.multiaction.MultiActionController.handleRequestInternal(MultiActionController.java:410)
      at org.springframework.web.servlet.mvc.AbstractController.handleRequest(AbstractController.java:153)
      at org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:48)
      at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:875)
      at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:809)
      at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:571)
      at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:512)
      at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
      at javax.servlet.http.HttpServlet.service(HttpServlet.java:821)
      at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227)
      at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:292)
      at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:27)
      at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:43)
      at org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:198)
      at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
      at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:43)
      at org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:198)
      at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
      at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:43)
      at com.uprr.apps.lda.ui.LDAWicketFilter.doFilter(LDAWicketFilter.java:59)
      at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3496)
      at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2180)
      at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2086)
      at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1406)
      at weblogic.work.ExecuteThread.execute(ExecuteThread.java:201)
      at weblogic.work.ExecuteThread.run(ExecuteThread.java:173)
      java.sql.SQLException: Connection has already been closed.
      at weblogic.jdbc.wrapper.PoolConnection.checkConnection(PoolConnection.java:55)
      at weblogic.jdbc.wrapper.Connection.preInvocationHandler(Connection.java:92)
      at weblogic.jdbc.wrapper.PoolConnection_oracle_jdbc_driver_T4CConnection.getAutoCommit(Unknown Source)
      at org.hibernate.transaction.JDBCTransaction.begin(JDBCTransaction.java:57)
      at org.hibernate.impl.SessionImpl.beginTransaction(SessionImpl.java:1327)
      at org.springframework.orm.hibernate3.HibernateTransactionManager.doBegin(HibernateTransactionManager.java:558)
      at org.springframework.transaction.support.AbstractPlatformTransactionManager.getTransaction(AbstractPlatformTransactionManager.java:377)
      at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:101)
      at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
      at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
      at $Proxy154.getTrainDetail(Unknown Source)
      at com.uprr.apps.lda.ui.tacticalplanselection.TacticalPlanSelectionController.reDirect(TacticalPlanSelectionController.java:212)
      at sun.reflect.GeneratedMethodAccessor11615.invoke(Unknown Source)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
      at java.lang.reflect.Method.invoke(Method.java:597)
      at org.springframework.web.servlet.mvc.multiaction.MultiActionController.invokeNamedMethod(MultiActionController.java:473)
      at org.springframework.web.servlet.mvc.multiaction.MultiActionController.handleRequestInternal(MultiActionController.java:410)
      at org.springframework.web.servlet.mvc.AbstractController.handleRequest(AbstractController.java:153)
      at org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:48)
      at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:875)
      at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:809)
      at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:571)
      at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:512)
      at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
      at javax.servlet.http.HttpServlet.service(HttpServlet.java:821)
      at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227)
      at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:292)
      at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:27)
      at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:43)
      at org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:198)
      at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
      at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:43)
      at org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:198)
      at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
      at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:43)
      at com.uprr.apps.lda.ui.LDAWicketFilter.doFilter(LDAWicketFilter.java:59)
      at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3496)
      at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2180)
      at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2086)
      at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1406)
      at weblogic.work.ExecuteThread.execute(ExecuteThread.java:201)
      at weblogic.work.ExecuteThread.run(ExecuteThread.java:173)
      >

      Warning Message, we see inadverently about a connection being forcefully taken back before we see the above exception :
      ####<Feb 14, 2013 2:39:53 PM CST> <Warning> <JDBC> <omdx18ca> <PHYRES-G3> <[ACTIVE] ExecuteThread: '0' for queue: 'weblogic.kernel.Default (self-tuning)'> <<WLS Kernel>> <> <> <1360874393195> <BEA-001153> <Forcibly releasing inactive connection "weblogic.jdbc.wrapper.PoolConnection_oracle_jdbc_driver_T4CConnection@da5abf" back into the connection pool "lda_Pool", currently reserved by: java.lang.Exception
      at weblogic.jdbc.common.internal.ConnectionEnv.setup(ConnectionEnv.java:308)
      at weblogic.common.resourcepool.ResourcePoolImpl.reserveResource(ResourcePoolImpl.java:314)
      at weblogic.common.resourcepool.ResourcePoolImpl.reserveResource(ResourcePoolImpl.java:292)
      at weblogic.jdbc.common.internal.ConnectionPool.reserve(ConnectionPool.java:425)
      at weblogic.jdbc.common.internal.ConnectionPool.reserve(ConnectionPool.java:316)
      at weblogic.jdbc.common.internal.ConnectionPoolManager.reserve(ConnectionPoolManager.java:93)
      at weblogic.jdbc.common.internal.ConnectionPoolManager.reserve(ConnectionPoolManager.java:106)
      at weblogic.jdbc.pool.Driver.connect(Driver.java:149)
      at weblogic.jdbc.jts.Driver.getNonTxConnection(Driver.java:642)
      at weblogic.jdbc.jts.Driver.connect(Driver.java:124)
      at weblogic.jdbc.common.internal.RmiDataSource.getConnection(RmiDataSource.java:338)
      at org.springframework.orm.hibernate3.LocalDataSourceConnectionProvider.getConnection(LocalDataSourceConnectionProvider.java:82)
      at org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:421)
      at org.hibernate.jdbc.ConnectionManager.getConnection(ConnectionManager.java:144)
      at org.hibernate.jdbc.AbstractBatcher.prepareQueryStatement(AbstractBatcher.java:139)
      at org.hibernate.loader.Loader.prepareQueryStatement(Loader.java:1538)
      at org.hibernate.loader.Loader.doQuery(Loader.java:661)
      at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:224)
      at org.hibernate.loader.Loader.loadEntity(Loader.java:1851)
      at org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:48)
      at org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:42)
      at org.hibernate.persister.entity.AbstractEntityPersister.load(AbstractEntityPersister.java:3038)
      at org.hibernate.event.def.DefaultLoadEventListener.loadFromDatasource(DefaultLoadEventListener.java:395)
      at org.hibernate.event.def.DefaultLoadEventListener.doLoad(DefaultLoadEventListener.java:375)
      at org.hibernate.event.def.DefaultLoadEventListener.load(DefaultLoadEventListener.java:139)
      at org.hibernate.event.def.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:98)
      at org.hibernate.impl.SessionImpl.fireLoad(SessionImpl.java:878)
      at org.hibernate.impl.SessionImpl.immediateLoad(SessionImpl.java:836)
      at org.hibernate.proxy.AbstractLazyInitializer.initialize(AbstractLazyInitializer.java:66)
      at org.hibernate.proxy.AbstractLazyInitializer.getImplementation(AbstractLazyInitializer.java:111)
      at org.hibernate.proxy.pojo.cglib.CGLIBLazyInitializer.invoke(CGLIBLazyInitializer.java:140)
      at com.uprr.apps.lda.lsa.business.bom.LSAJob$$EnhancerByCGLIB$$f7046bf2.getSnapShotStartedTime(<generated>)
      at com.uprr.apps.lda.lsa.ui.publishedReport.LSAPublishedReportController.getLSAJobView(LSAPublishedReportController.java:231)
      at com.uprr.apps.lda.lsa.ui.publishedReport.LSAPublishedReportController.setCommandBean(LSAPublishedReportController.java:207)
      at com.uprr.apps.lda.lsa.ui.publishedReport.LSAPublishedReportController.listErdsPublishData(LSAPublishedReportController.java:78)
      at sun.reflect.GeneratedMethodAccessor11661.invoke(Unknown Source)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
      at java.lang.reflect.Method.invoke(Method.java:597)
      at org.springframework.web.servlet.mvc.multiaction.MultiActionController.invokeNamedMethod(MultiActionController.java:473)
      at org.springframework.web.servlet.mvc.multiaction.MultiActionController.handleRequestInternal(MultiActionController.java:410)
      at org.springframework.web.servlet.mvc.AbstractController.handleRequest(AbstractController.java:153)
      at org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:48)
      at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:875)
      at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:809)
      at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:571)
      at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:501)
      at javax.servlet.http.HttpServlet.service(HttpServlet.java:707)
      at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
      at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227)
      at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125)
      at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:292)
      at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:26)
      at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42)
      at org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:198)
      at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
      at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42)
      at org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:198)
      at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
      at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42)
      at org.apache.wicket.protocol.http.WicketFilter.doFilter(WicketFilter.java:249)
      at com.uprr.apps.lda.ui.LDAWicketFilter.doFilter(LDAWicketFilter.java:59)
      at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42)
      at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3496)
      at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
      at weblogic.security.service.SecurityManager.runAs(Unknown Source)
      at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2180)
      at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2086)
      at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1406)
      at weblogic.work.ExecuteThread.execute(ExecuteThread.java:201)
      at weblogic.work.ExecuteThread.run(ExecuteThread.java:173)
      .>
        • 1. Re: onnection leak for forceful release leading unable to create transaction
          Joe Weinstein-Oracle
          The second exception should be clear... The application reserved a connection, and never
          used it or closed it, for a longer period than the pool's configured inactive connection timeout
          setting.

          The first exception may or may not be related to the other. You would see this exception
          any time an application tried to use a connection that had been forcibly retracted for idleness
          like that other exception. However, this first exception does not say explicitly where the
          connection was closed... That would be a good addition to the message... If you can open
          an official support case we might be able to find that info...
          • 2. Re: onnection leak for forceful release leading unable to create transaction
            991401
            Yeah, my company is an oracle shop, so we definitely will open an official ticket with Oracle to see of they can help us figure this issue .

            I agree, that the forceful release may or may not be related to the "transaction cannot be started" issue.
            But it is 100% of the times that we see the later issue only and only after first warnirng message is issued Weblogic10.3 about a forceful release . The inference that they both are related is based solely on this pattern.

            1)Although an inactive connection that has been forcibly takn back by WL, we have <test-connections-on-reserve>, so connection that is handed over to a application should be a good one, unless there is more to that property that I dont know(highly possible :))

            <jdbc-connection-pool-params>
            <initial-capacity>5</initial-capacity>
            <max-capacity>25</max-capacity>
            <capacity-increment>1</capacity-increment>
            <test-frequency-seconds>10</test-frequency-seconds>
            *<test-connections-on-reserve>true</test-connections-on-reserve>*
            <inactive-connection-timeout-seconds>300</inactive-connection-timeout-seconds>
            <test-table-name>DUAL</test-table-name>
            <login-delay-seconds>1</login-delay-seconds>
            </jdbc-connection-pool-params>
            <jdbc-data-source-params>
            <jndi-name>com.uprr.app.lda.lda_PoolTXDS</jndi-name>
            <global-transactions-protocol>OnePhaseCommit</global-transactions-protocol>
            </jdbc-data-source-params>
            </jdbc-data-source>


            2) The first exception will not have information about where the connection was closed, it fails at doBegin(....) method itself. Because the method goes somethignlike this :

            void doBegin(Transaction tx){
            try{
            blah foo..
            }
            catch (SQLException s) {

            throw new Exception (s).
            }

            }
            This is the exception that this method faces : ---> java.sql.SQLException: Connection has already been closed.

            That exception obviously comes from :

            at weblogic.jdbc.wrapper.PoolConnection.checkConnection(PoolConnection.java:55)
            at weblogic.jdbc.wrapper.Connection.preInvocationHandler(Connection.java:92)
            at weblogic.jdbc.wrapper.PoolConnection_oracle_jdbc_driver_T4CConnection.getAutoCommit(Unknown Source)

            Not sure, why this should happen. Also this doesn't happen all the time, Happens only after 24-30 hours after going into production. We are not even able to recrete this behavior in our devlopment or test environments.

            Edited by: 988398 on Feb 16, 2013 9:25 AM
            • 3. Re: onnection leak for forceful release leading unable to create transaction
              Joe Weinstein-Oracle
              gotcha. Test-on-reserve makes sure the real connection is good when the app
              reserves it, but the inactive connection timeout will take the real connection
              back from the app, and close the wrapper (which is what is saying is closed)
              around the real connection, stopping the app from using it, and putting the
              real connection back in the pool for someone else to use. In fact the real
              connection you had might be in use at that moment used by another app/thread.

              So what is most likely is a connection leak at the level of code where it is reserved.
              This connection was reserved and it was at least 10 minutes since it was used. It
              was either over-written accidentally because of non-thread-safety, or it just went
              out of scope without being closed etc.
              • 4. Re: onnection leak for forceful release leading unable to create transaction
                991401
                ". It was either over-written accidentally because of non-thread-safety" <-- I am not top of this? You mean the same connection object although it was reserved was given to some other worker thread ?

                Also I would like to make clear, that the forcible release happens on few minutes before "cannot start transaction" error. They are two differnet work threads. Like for example I will see a warning by QL at 6:00:00 pm that it forcibly took back a connection.....and then around 6:05 onwards I start seeing the transaction error. These are two different events on happening in sequence but not as part of the same thread.

                I definitely forcible release definitely seems to be because the connection was inactive for so many minutes (300 seconds). Although the thread that I see would have acquired this connection 300 seconds before this warning seems to have definitely ended correctly without any exception and had released the connection from its finally block. But we are investigating more intpo it. Have opened a ticket with Spring with regards to that
                • 5. Re: onnection leak for forceful release leading unable to create transaction
                  Joe Weinstein-Oracle
                  If two threads can see the same variable, such as two threads running the same servlet, referring to the
                  same class variable, and if each thread calls getConnection() and assigns their value to that same variable,
                  the first value overwrites the second, so both threads go on to use the same connection (the one the
                  second writer got) and the first is lost, leaked, never to be closed. Even if both threads go on to close
                  the one connection that is still accessible via the variable.
                  • 6. Re: onnection leak for forceful release leading unable to create transaction
                    991401
                    Thanks Joe, that possibility that you mentioned has opened a whole new can of worms! We use HibrnateTransactionManager and TrnasactionSYnchronizationManager, OpenSessionViewFilter am not sure if they are thread safe or not. I know they are store variables like hibernatesession and jdbc connection resources in the threadlocal that are bound either to a JMS requeset or HTTP request thread.
                    I will keep you and this thread updated if we ever get to the bottom of this! Thanks again for your help and prompt reply!