Uploaded image for project: 'Bamboo Data Center'
  1. Bamboo Data Center
  2. BAM-20391

Bamboo 6.9 upgrade task 60903 fails on Microsoft SQL Server with Invalid Syntax

    XMLWordPrintable

Details

    • Bug
    • Resolution: Fixed
    • High
    • 6.9.0
    • 6.9.0
    • Upgrading
    • None

    Description

      Issue Summary

      Upgrade task 60903 (Populate PLAN_NAME column in BRS table (post-bootstrap)) fails on Microsoft SQL Server with Incorrect Syntax error.

      Environment

      • Microsoft SQL Server

      Steps to Reproduce

      1. Install Bamboo 6.8.1
      2. Create a build plan
      3. Upgrade to Bamboo 6.9.0

      Expected Results

      Upgrade task succeeds.

      Actual Results

      Bamboo still starts after the failure. No build plans are viewable in the UI.

      Upgrade task fails and the below exception is thrown in the atlassian-bamboo.log file:

      2019-04-07 18:47:11,630 INFO [17-UpgradeTaskBackgroundThread:pool-33-thread-1] [AbstractUpgradeManager] ---------------------------------------------------------------
      2019-04-07 18:47:11,630 INFO [17-UpgradeTaskBackgroundThread:pool-33-thread-1] [AbstractUpgradeManager] 60903 : Populate PLAN_NAME column in BRS table (post-bootstrap)
      2019-04-07 18:47:11,631 INFO [17-UpgradeTaskBackgroundThread:pool-33-thread-1] [AbstractUpgradeManager] ---------------------------------------------------------------
      2019-04-07 18:47:11,634 WARN [17-UpgradeTaskBackgroundThread:pool-33-thread-1] [SqlExceptionHelper] SQL Error: 102, SQLState: S0001
      2019-04-07 18:47:11,635 ERROR [17-UpgradeTaskBackgroundThread:pool-33-thread-1] [SqlExceptionHelper] Incorrect syntax near 'BRS'.
      2019-04-07 18:47:11,640 ERROR [17-UpgradeTaskBackgroundThread:pool-33-thread-1] [AbstractUpgradeManager] org.springframework.dao.InvalidDataAccessResourceUsageException: error executing work; SQL [n/a]; nested exception is org.hibernate.exception.SQLGrammarException: error executing work
      org.springframework.dao.InvalidDataAccessResourceUsageException: error executing work; SQL [n/a]; nested exception is org.hibernate.exception.SQLGrammarException: error executing work
      	at org.springframework.orm.hibernate5.SessionFactoryUtils.convertHibernateAccessException(SessionFactoryUtils.java:230)
      	at org.springframework.orm.hibernate5.HibernateTemplate.doExecute(HibernateTemplate.java:386)
      	at org.springframework.orm.hibernate5.HibernateTemplate.executeWithNativeSession(HibernateTemplate.java:349)
      	at com.atlassian.bamboo.persistence.BambooTransactionHibernateTemplate$1.doInTransaction(BambooTransactionHibernateTemplate.java:36)
      	at org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:140)
      	at com.atlassian.bamboo.persistence.BambooTransactionHibernateTemplate.execute(BambooTransactionHibernateTemplate.java:28)
      	at com.atlassian.bamboo.persistence.BambooTransactionHibernateTemplate.execute(BambooTransactionHibernateTemplate.java:33)
      	at com.atlassian.bamboo.persistence.BambooTransactionHibernateTemplate.doWork(BambooTransactionHibernateTemplate.java:43)
      	at com.atlassian.bamboo.upgrade.tasks.v6_9.UpgradeTask60903AddPlanNameToResults.doUpgrade(UpgradeTask60903AddPlanNameToResults.java:34)
      	at com.atlassian.bamboo.upgrade.AbstractUpgradeManager.runUpgradeTask(AbstractUpgradeManager.java:186)
      	at com.atlassian.bamboo.upgrade.UpgradeManagerImpl.doUpgrade(UpgradeManagerImpl.java:133)
      	at com.atlassian.bamboo.upgrade.UpgradeLauncher.lambda$upgradeAndStartBamboo$0(UpgradeLauncher.java:115)
      	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
      	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
      	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
      	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
      	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
      	at com.atlassian.bamboo.utils.BambooRunnables$1.run(BambooRunnables.java:48)
      	at com.atlassian.bamboo.security.ImpersonationHelper.runWith(ImpersonationHelper.java:26)
      	at com.atlassian.bamboo.security.ImpersonationHelper.runWithSystemAuthority(ImpersonationHelper.java:17)
      	at com.atlassian.bamboo.security.ImpersonationHelper$1.run(ImpersonationHelper.java:41)
      	at java.lang.Thread.run(Thread.java:745)
      Caused by: org.hibernate.exception.SQLGrammarException: error executing work
      	at org.hibernate.exception.internal.SQLStateConversionDelegate.convert(SQLStateConversionDelegate.java:106)
      	at org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:42)
      	at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:113)
      	at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:99)
      	at org.hibernate.engine.jdbc.internal.JdbcCoordinatorImpl.coordinateWork(JdbcCoordinatorImpl.java:325)
      	at org.hibernate.internal.SessionImpl.doWork(SessionImpl.java:2408)
      	at org.hibernate.internal.SessionImpl.doWork(SessionImpl.java:2393)
      	at com.atlassian.bamboo.persistence.BambooTransactionHibernateTemplate$2.doInHibernate(BambooTransactionHibernateTemplate.java:47)
      	at org.springframework.orm.hibernate5.HibernateTemplate.doExecute(HibernateTemplate.java:383)
      	... 20 more
      Caused by: com.microsoft.sqlserver.jdbc.SQLServerException: Incorrect syntax near 'BRS'.
      	at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(SQLServerException.java:232)
      	at com.microsoft.sqlserver.jdbc.SQLServerStatement.getNextResult(SQLServerStatement.java:1672)
      	at com.microsoft.sqlserver.jdbc.SQLServerStatement.doExecuteStatement(SQLServerStatement.java:903)
      	at com.microsoft.sqlserver.jdbc.SQLServerStatement$StmtExecCmd.doExecute(SQLServerStatement.java:796)
      	at com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:7535)
      	at com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(SQLServerConnection.java:2438)
      	at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeCommand(SQLServerStatement.java:208)
      	at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeStatement(SQLServerStatement.java:183)
      	at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeUpdate(SQLServerStatement.java:721)
      	at com.mchange.v2.c3p0.impl.NewProxyStatement.executeUpdate(NewProxyStatement.java:329)
      	at com.atlassian.bamboo.upgrade.tasks.v6_9.UpgradeTask60903AddPlanNameToResults.lambda$doUpgrade$0(UpgradeTask60903AddPlanNameToResults.java:39)
      	at org.hibernate.jdbc.WorkExecutor.executeWork(WorkExecutor.java:37)
      	at org.hibernate.internal.SessionImpl$1.accept(SessionImpl.java:2389)
      	at org.hibernate.internal.SessionImpl$1.accept(SessionImpl.java:2386)
      	at org.hibernate.engine.jdbc.internal.JdbcCoordinatorImpl.coordinateWork(JdbcCoordinatorImpl.java:320)
      	... 24 more
      

      When accessing the build dashboard the below error is present in the atlassian-bamboo.log:

      2019-04-07 18:47:21,247 WARN [http-nio-8085-exec-24] [ImmutablePlanCacheServiceImpl] Attempt to load plan PLAN-TITLE while cache is disabled
      2019-04-07 18:47:21,247 ERROR [http-nio-8085-exec-24] [ImmutablePlanCacheServiceImpl] 
      com.atlassian.bamboo.plan.cache.ImmutablePlanCacheServiceImpl$PlanCacheDisabledException: Plan cache is disabled
      	at com.atlassian.bamboo.plan.cache.ImmutablePlanCacheServiceImpl$1.load(ImmutablePlanCacheServiceImpl.java:110)
      	at com.atlassian.bamboo.plan.cache.ImmutablePlanCacheServiceImpl$1.load(ImmutablePlanCacheServiceImpl.java:103)
      	at com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3527)
      	at com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2319)
      	at com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2282)
      	at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2197)
      	at com.google.common.cache.LocalCache.get(LocalCache.java:3937)
      	at com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:3941)
      	at com.google.common.cache.LocalCache$LocalLoadingCache.get(LocalCache.java:4824)
      	at com.atlassian.bamboo.utils.collections.AlwaysInvalidatingCacheDecorator.get(AlwaysInvalidatingCacheDecorator.java:65)
      	at com.atlassian.bamboo.utils.collections.AlwaysInvalidatingCacheDecorator.getUnchecked(AlwaysInvalidatingCacheDecorator.java:126)
      	at com.atlassian.bamboo.plan.cache.ImmutablePlanCacheServiceImpl.internalGetPlanByKey(ImmutablePlanCacheServiceImpl.java:487)
      	at com.atlassian.bamboo.plan.cache.ImmutablePlanCacheServiceImpl.getImmutablePlanByKey(ImmutablePlanCacheServiceImpl.java:231)
      	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
      	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      	at java.lang.reflect.Method.invoke(Method.java:498)
      	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:343)
      	at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:206)
      	at com.sun.proxy.$Proxy142.getImmutablePlanByKey(Unknown Source)
      	at com.atlassian.bamboo.plan.cache.CachedPlanManagerImpl.getPlanByKey(CachedPlanManagerImpl.java:64)
      	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
      	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      	at java.lang.reflect.Method.invoke(Method.java:498)
      	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:343)
      	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:197)
      	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)
      	at org.acegisecurity.intercept.method.aopalliance.MethodSecurityInterceptor.invoke(MethodSecurityInterceptor.java:66)
      	at com.atlassian.bamboo.security.acegi.intercept.aopalliance.AuthorityOverrideMethodSecurityInterceptor.invoke(AuthorityOverrideMethodSecurityInterceptor.java:30)
      	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:185)
      	at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:294)
      	at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:98)
      	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:185)
      	at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:212)
      	at com.sun.proxy.$Proxy144.getPlanByKey(Unknown Source)
      	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
      	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      	at java.lang.reflect.Method.invoke(Method.java:498)
      	at com.atlassian.plugin.util.ContextClassLoaderSettingInvocationHandler.invoke(ContextClassLoaderSettingInvocationHandler.java:26)
      	at com.sun.proxy.$Proxy453.getPlanByKey(Unknown Source)
      	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
      	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      	at java.lang.reflect.Method.invoke(Method.java:498)
      	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:302)
      	at org.eclipse.gemini.blueprint.service.importer.support.internal.aop.ServiceInvoker.doInvoke(ServiceInvoker.java:56)
      	at org.eclipse.gemini.blueprint.service.importer.support.internal.aop.ServiceInvoker.invoke(ServiceInvoker.java:60)
      	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
      	at org.springframework.aop.support.DelegatingIntroductionInterceptor.doProceed(DelegatingIntroductionInterceptor.java:133)
      	at org.springframework.aop.support.DelegatingIntroductionInterceptor.invoke(DelegatingIntroductionInterceptor.java:121)
      	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
      	at org.eclipse.gemini.blueprint.service.util.internal.aop.ServiceTCCLInterceptor.invokeUnprivileged(ServiceTCCLInterceptor.java:70)
      	at org.eclipse.gemini.blueprint.service.util.internal.aop.ServiceTCCLInterceptor.invoke(ServiceTCCLInterceptor.java:53)
      	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
      	at org.eclipse.gemini.blueprint.service.importer.support.LocalBundleContextAdvice.invoke(LocalBundleContextAdvice.java:57)
      	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
      	at org.springframework.aop.support.DelegatingIntroductionInterceptor.doProceed(DelegatingIntroductionInterceptor.java:133)
      	at org.springframework.aop.support.DelegatingIntroductionInterceptor.invoke(DelegatingIntroductionInterceptor.java:121)
      	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
      	at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:207)
      	at com.sun.proxy.$Proxy1002.getPlanByKey(Unknown Source)
      	at com.atlassian.bamboo.plugins.rest.resource.FaviconResource.getPlanFromCache(FaviconResource.java:101)
      	at com.atlassian.bamboo.plugins.rest.resource.FaviconResource.getFaviconForPlan(FaviconResource.java:47)
      

      Workaround

      1. Shutdown Bamboo
      2. Take a full backup of your Bamboo database and $BAMBOO_HOME directory before proceeding.
      3. Edit $BAMBOO_INSTALL/atlassian-bamboo/WEB-INF/classes/upgrades.xml
      4. Comment out the upgrade task 60903. E.g
        <!-- <upgrade build="60903" class="com.atlassian.bamboo.upgrade.tasks.v6_9.UpgradeTask60903AddPlanNameToResults"/>-->
        
      5. Run the below SQL manually on your Bamboo database:
        update BUILDRESULTSUMMARY set PLAN_NAME = (select TITLE from BUILD B where B.FULL_KEY = BUILDRESULTSUMMARY.BUILD_KEY) where PLAN_NAME is null
        
      6. Start Bamboo

      Attachments

        Issue Links

          Activity

            People

              mgardias Marcin Gardias
              jowen@atlassian.com Jeremy Owen
              Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: