• Icon: Bug Bug
    • Resolution: Fixed
    • Icon: Medium Medium
    • 2.6 rc1, 2.6
    • 2.6 M6
    • None
    • None

      Seeing this exception in my dev environment. It does not seem to be related to my local changes. Needs some investigation.

      2010-05-13 17:09:04,991 ERROR [BAM::Events:pool-1-thread-1] [NamedThreadFactory] Uncaught exception in thread BAM::Events:pool-1-thread-1
      net.sf.hibernate.LazyInitializationException: Failed to lazily initialize a collection - no session or session was closed
      	at net.sf.hibernate.collection.PersistentCollection.initialize(PersistentCollection.java:209)
      	at net.sf.hibernate.collection.PersistentCollection.read(PersistentCollection.java:71)
      	at net.sf.hibernate.collection.Set.isEmpty(Set.java:114)
      	at com.atlassian.bamboo.v2.build.trigger.CodeChangedTriggerReasonRenderer.setSourceChangeList(CodeChangedTriggerReasonRenderer.java:86)
      	at com.atlassian.bamboo.v2.build.trigger.CodeChangedTriggerReasonRenderer.init(CodeChangedTriggerReasonRenderer.java:47)
      	at com.atlassian.bamboo.v2.build.trigger.TriggerReasonManagerImpl.getTriggerReasonRenderer(TriggerReasonManagerImpl.java:42)
      	at com.atlassian.bamboo.notification.buildcompleted.AfterXFailedNotification.init(AfterXFailedNotification.java:108)
      	at com.atlassian.bamboo.notification.buildcompleted.AfterXFailedBuildsNotificationListener.handleEvent(AfterXFailedBuildsNotificationListener.java:65)
      	at sun.reflect.GeneratedMethodAccessor618.invoke(Unknown Source)
      	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
      	at java.lang.reflect.Method.invoke(Method.java:592)
      	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:304)
      	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:182)
      	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:149)
      	at org.springframework.orm.hibernate.HibernateInterceptor.invoke(HibernateInterceptor.java:117)
      	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
      	at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
      	at $Proxy190.handleEvent(Unknown Source)
      	at com.atlassian.bamboo.event.BambooEventManager$2.run(BambooEventManager.java:66)
      	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:651)
      	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:676)
      	at com.atlassian.bamboo.build.pipeline.concurrent.NamedThreadFactory$2.run(NamedThreadFactory.java:47)
      	at java.lang.Thread.run(Thread.java:613)
      

            [BAM-5793] Investigate LazyInitializationException

            Anatoli added a comment -

            The problem seems to happen when transaction synchronization is not cleared ( TransactionSynchronizationManager.clearSynchronization(); )
            I could not find where it is not being correctly cleared and explicitly clearing it in SessionInViewFilter.

            The explicit reason why it happens:

            1. triggerManuallbuild.action is called and build is triggered successfully
            2. when xwork redirection happens SessionInView filter runs the second time and creates a new hibernate session through SessionFactoryUtils.getSession() method.
            3. When SessionFactoryUtils creates session it checks if there is a an active transaction synchronization ( TransactionSynchronizationManager.isSynchronizationActive() ) and finds one when it should not. Because of that it binds the session to the thread (TransactionSynchronizationManager.bindResource(sessionFactory, holderToUse); )
            4. SessionInView filter tries to bind the new session and we get the exception.

            I could not find out why there is an active transaction synchronization left after the manual build has been triggered. Currently implemented fix just clears the synchronization inside BambooSessionInView filter.
            I would like someone else to have a look at this problem( I have a feeling that I am missing something obvious) and if possible implement a proper solution.

            Anatoli added a comment - The problem seems to happen when transaction synchronization is not cleared ( TransactionSynchronizationManager.clearSynchronization(); ) I could not find where it is not being correctly cleared and explicitly clearing it in SessionInViewFilter. The explicit reason why it happens: triggerManuallbuild.action is called and build is triggered successfully when xwork redirection happens SessionInView filter runs the second time and creates a new hibernate session through SessionFactoryUtils.getSession() method. When SessionFactoryUtils creates session it checks if there is a an active transaction synchronization ( TransactionSynchronizationManager.isSynchronizationActive() ) and finds one when it should not. Because of that it binds the session to the thread (TransactionSynchronizationManager.bindResource(sessionFactory, holderToUse); ) SessionInView filter tries to bind the new session and we get the exception. I could not find out why there is an active transaction synchronization left after the manual build has been triggered. Currently implemented fix just clears the synchronization inside BambooSessionInView filter. I would like someone else to have a look at this problem( I have a feeling that I am missing something obvious) and if possible implement a proper solution.

            Anatoli added a comment -

            This seems to be caused by

            2010-05-14 17:29:16,296 ERROR [14778531@qtp-8639354-4] [FiveOhOh] 500 Exception was thrown.
            java.lang.IllegalStateException: Already value [org.springframework.orm.hibernate.SessionHolder@b26975] for key [net.sf.hibernate.impl.SessionFactoryImpl@1acb11] bound to thread [14778531@qtp-8639354-4]
            	at org.springframework.transaction.support.TransactionSynchronizationManager.bindResource(TransactionSynchronizationManager.java:163)
            	at org.springframework.orm.hibernate.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:155)
            	at com.atlassian.bamboo.persistence.BambooSessionInViewFilter.doFilterInternal(BambooSessionInViewFilter.java:36)
            	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:75)
            	at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1139)
            	at com.planetj.servlet.filter.compression.CompressingFilter.handleDoFilter(CompressingFilter.java:203)
            	at com.planetj.servlet.filter.compression.CompressingFilter.doFilter(CompressingFilter.java:193)
            	at com.atlassian.bamboo.filter.CompressingFilter.doFilter(CompressingFilter.java:69)
            	at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1139)
            	at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:378)
            	at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
            	at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
            	at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765)
            	at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:417)
            	at org.mortbay.jetty.servlet.Dispatcher.forward(Dispatcher.java:334)
            	at org.mortbay.jetty.servlet.Dispatcher.forward(Dispatcher.java:126)
            	at org.tuckey.web.filters.urlrewrite.RewrittenUrl.doRewrite(RewrittenUrl.java:176)
            	at org.tuckey.web.filters.urlrewrite.UrlRewriteFilter.doFilter(UrlRewriteFilter.java:728)
            	at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1139)
            	at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:46)
            	at com.atlassian.plugin.servlet.filter.ServletFilterModuleContainerFilter.doFilter(ServletFilterModuleContainerFilter.java:55)
            	at com.atlassian.plugin.servlet.filter.ServletFilterModuleContainerFilter.doFilter(ServletFilterModuleContainerFilter.java:41)
            	at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1139)
            	at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:96)
            	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:75)
            	at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1139)
            	at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:378)
            	at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
            	at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
            	at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765)
            	at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:417)
            	at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
            	at org.mortbay.jetty.Server.handle(Server.java:324)
            	at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:535)
            	at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:865)
            	at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:539)
            	at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:212)
            	at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
            	at org.mortbay.jetty.bio.SocketConnector$Connection.run(SocketConnector.java:228)
            	at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:520)
            

            To reproduce just kick of a build.

            Anatoli added a comment - This seems to be caused by 2010-05-14 17:29:16,296 ERROR [14778531@qtp-8639354-4] [FiveOhOh] 500 Exception was thrown. java.lang.IllegalStateException: Already value [org.springframework.orm.hibernate.SessionHolder@b26975] for key [net.sf.hibernate.impl.SessionFactoryImpl@1acb11] bound to thread [14778531@qtp-8639354-4] at org.springframework.transaction.support.TransactionSynchronizationManager.bindResource(TransactionSynchronizationManager.java:163) at org.springframework.orm.hibernate.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:155) at com.atlassian.bamboo.persistence.BambooSessionInViewFilter.doFilterInternal(BambooSessionInViewFilter.java:36) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:75) at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1139) at com.planetj.servlet.filter.compression.CompressingFilter.handleDoFilter(CompressingFilter.java:203) at com.planetj.servlet.filter.compression.CompressingFilter.doFilter(CompressingFilter.java:193) at com.atlassian.bamboo.filter.CompressingFilter.doFilter(CompressingFilter.java:69) at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1139) at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:378) at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216) at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181) at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765) at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:417) at org.mortbay.jetty.servlet.Dispatcher.forward(Dispatcher.java:334) at org.mortbay.jetty.servlet.Dispatcher.forward(Dispatcher.java:126) at org.tuckey.web.filters.urlrewrite.RewrittenUrl.doRewrite(RewrittenUrl.java:176) at org.tuckey.web.filters.urlrewrite.UrlRewriteFilter.doFilter(UrlRewriteFilter.java:728) at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1139) at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:46) at com.atlassian.plugin.servlet.filter.ServletFilterModuleContainerFilter.doFilter(ServletFilterModuleContainerFilter.java:55) at com.atlassian.plugin.servlet.filter.ServletFilterModuleContainerFilter.doFilter(ServletFilterModuleContainerFilter.java:41) at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1139) at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:96) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:75) at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1139) at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:378) at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216) at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181) at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765) at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:417) at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) at org.mortbay.jetty.Server.handle(Server.java:324) at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:535) at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:865) at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:539) at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:212) at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404) at org.mortbay.jetty.bio.SocketConnector$Connection.run(SocketConnector.java:228) at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:520) To reproduce just kick of a build.

              akazatchkov Anatoli
              akazatchkov Anatoli
              Affected customers:
              0 This affects my team
              Watchers:
              0 Start watching this issue

                Created:
                Updated:
                Resolved: