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

Bamboo couldn't startup with Datasource setting to MSSQL due to java.lang.AbstractMethodError

    XMLWordPrintable

Details

    • Bug
    • Resolution: Fixed
    • Low
    • 6.0.0
    • 5.11.1.1, 5.12.0.2
    • None
    • None

    Description

      Summary

      Upgrading Bamboo 5.7.1 to the latest version with Datasource setting to MSSQL will fail due to missing validation query setting

      Environment

      Microsoft SQL Server 2014

      Steps to Reproduce

      1. Shutdown Bamboo 5.7.1
      2. Set Bamboo 5.12.0.2 to use the same Bamboo Home
      3. Add the Datasource setting from Bamboo 5.7.1 into Bamboo 5.12.0.2 server.xml, example:
                            <Resource name="jdbc/datasource" auth="Container" type="javax.sql.DataSource"
                        		username="admin"
                        		password="admin"
                        		driverClassName="net.sourceforge.jtds.jdbc.Driver"
                        		url="jdbc:jtds:sqlserver://localhost:1433/bamboo512"
                        		maxActive="25"
                        		maxIdle="5"
                        		maxWait="10000"/>
        
      4. Start Bamboo 5.12.0.2

      Expected Results

      Bamboo upgraded successfully

      Actual Results

      The below exception is thrown in the Tomcat localhost.<date>.log file:

      24-May-2016 17:41:28.194 SEVERE [localhost-startStop-1] org.apache.catalina.core.StandardContext.listenerStart Exception sending context initialized event to listener instance of class com.atlassian.bamboo.setup.BootstrapLoaderListener
       java.lang.AbstractMethodError
      	at net.sourceforge.jtds.jdbc.JtdsConnection.isValid(JtdsConnection.java:2833)
      	at org.apache.tomcat.dbcp.dbcp2.DelegatingConnection.isValid(DelegatingConnection.java:917)
      	at org.apache.tomcat.dbcp.dbcp2.PoolableConnection.validate(PoolableConnection.java:282)
      	at org.apache.tomcat.dbcp.dbcp2.PoolableConnectionFactory.validateConnection(PoolableConnectionFactory.java:356)
      	at org.apache.tomcat.dbcp.dbcp2.BasicDataSource.validateConnectionFactory(BasicDataSource.java:2306)
      	at org.apache.tomcat.dbcp.dbcp2.BasicDataSource.createPoolableConnectionFactory(BasicDataSource.java:2289)
      	at org.apache.tomcat.dbcp.dbcp2.BasicDataSource.createDataSource(BasicDataSource.java:2038)
      	at org.apache.tomcat.dbcp.dbcp2.BasicDataSource.getConnection(BasicDataSource.java:1532)
      	at org.hibernate.connection.DatasourceConnectionProvider.getConnection(DatasourceConnectionProvider.java:92)
      	at com.atlassian.bamboo.upgrade.AbstractBootstrapUpgradeTask.getDatabaseConnection(AbstractBootstrapUpgradeTask.java:52)
      	at com.atlassian.bamboo.upgrade.AbstractBootstrapUpgradeTask.withDatabaseConnection(AbstractBootstrapUpgradeTask.java:77)
      	at com.atlassian.bamboo.upgrade.tasks.validation.ThereIsSingleRowInHibernateUniqueKeyTable.doUpgrade(ThereIsSingleRowInHibernateUniqueKeyTable.java:34)
      	at com.atlassian.bamboo.upgrade.AbstractUpgradeManager.runUpgradeTask(AbstractUpgradeManager.java:206)
      	at com.atlassian.bamboo.upgrade.BootstrapUpgradeManagerImpl.runValidationTests(BootstrapUpgradeManagerImpl.java:78)
      	at com.atlassian.bamboo.setup.DefaultBootstrapManager.performPersistenceUpgrade(DefaultBootstrapManager.java:345)
      	at com.atlassian.config.bootstrap.DefaultAtlassianBootstrapManager.init(DefaultAtlassianBootstrapManager.java:77)
      	at com.atlassian.bamboo.setup.BootstrapLoaderListener.contextInitialized(BootstrapLoaderListener.java:117)
      	at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4812)
      	at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5255)
      	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:147)
      	at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1408)
      	at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1398)
      	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 java.lang.Thread.run(Thread.java:745)
      

      Notes

      For Bamboo 5.12.0.2 fresh installation, when configuring it to use the above Datasource setting during the Installation Wizard, the below exception is thrown in the atlassian-bamboo.log file:

      2016-05-24 18:33:07,674 ERROR [http-nio-8085-exec-19] [FiveOhOh] 500 Exception was thrown.
      javax.servlet.ServletException: Filter execution threw an exception
      	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:256)
      	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
      	at com.atlassian.plugin.servlet.filter.ServletFilterModuleContainerFilter.doFilter(ServletFilterModuleContainerFilter.java:64)
      	at com.atlassian.plugin.servlet.filter.ServletFilterModuleContainerFilter.doFilter(ServletFilterModuleContainerFilter.java:58)
      	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
      	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
      	at com.opensymphony.sitemesh.webapp.SiteMeshFilter.obtainContent(SiteMeshFilter.java:129)
      	at com.opensymphony.sitemesh.webapp.SiteMeshFilter.doFilter(SiteMeshFilter.java:77)
      	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
      	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
      ...
      Caused by: java.lang.AbstractMethodError
      	at net.sourceforge.jtds.jdbc.JtdsConnection.isValid(JtdsConnection.java:2833)
      	at org.apache.tomcat.dbcp.dbcp2.DelegatingConnection.isValid(DelegatingConnection.java:917)
      	at org.apache.tomcat.dbcp.dbcp2.PoolableConnection.validate(PoolableConnection.java:282)
      	at org.apache.tomcat.dbcp.dbcp2.PoolableConnectionFactory.validateConnection(PoolableConnectionFactory.java:356)
      	at org.apache.tomcat.dbcp.dbcp2.BasicDataSource.validateConnectionFactory(BasicDataSource.java:2306)
      	at org.apache.tomcat.dbcp.dbcp2.BasicDataSource.createPoolableConnectionFactory(BasicDataSource.java:2289)
      	at org.apache.tomcat.dbcp.dbcp2.BasicDataSource.createDataSource(BasicDataSource.java:2038)
      	at org.apache.tomcat.dbcp.dbcp2.BasicDataSource.getConnection(BasicDataSource.java:1532)
      	at com.atlassian.config.bootstrap.DefaultAtlassianBootstrapManager.getTestDatasourceConnection(DefaultAtlassianBootstrapManager.java:399)
      	at com.atlassian.bamboo.ww2.actions.setup.SetupDatabaseConnectionAction.validateDatabase(SetupDatabaseConnectionAction.java:134)
      	at com.atlassian.bamboo.ww2.actions.setup.SetupDatabaseConnectionAction.validate(SetupDatabaseConnectionAction.java:66)
      	at com.opensymphony.xwork2.validator.ValidationInterceptor.doBeforeInvocation(ValidationInterceptor.java:251)
      	at com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:263)
      	at com.atlassian.bamboo.ww2.interceptors.BambooValidationInterceptor.validate(BambooValidationInterceptor.java:50)
      	at com.atlassian.bamboo.ww2.interceptors.BambooValidationInterceptor.access$000(BambooValidationInterceptor.java:12)
      

      Workaround

      Add validation query into Datasource setting, example:

                          <Resource name="jdbc/datasource" auth="Container" type="javax.sql.DataSource"
                      		username="admin"
                      		password="admin"
                      		driverClassName="net.sourceforge.jtds.jdbc.Driver"
                      		url="jdbc:jtds:sqlserver://localhost:1433/bamboo"
                      		maxActive="25"
                      		maxIdle="5"
                      		maxWait="10000"
                      		validationQuery="select 1"/>
      

      Attachments

        Issue Links

          Activity

            People

              Unassigned Unassigned
              klfoong Foong (Inactive)
              Votes:
              0 Vote for this issue
              Watchers:
              5 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: