This discussion is archived
6 Replies Latest reply: Feb 18, 2013 9:54 AM by 991401 RSS

onnection leak for forceful release leading unable to create transaction

991401 Newbie
Currently Being Moderated
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 Expert
    Currently Being Moderated
    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 Newbie
    Currently Being Moderated
    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 Expert
    Currently Being Moderated
    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 Newbie
    Currently Being Moderated
    ". 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 Expert
    Currently Being Moderated
    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 Newbie
    Currently Being Moderated
    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!

Legend

  • Correct Answers - 10 points
  • Helpful Answers - 5 points