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

JDBC Datasource only works during Bamboo installation

    XMLWordPrintable

Details

    Description

      Summary

      • JDBC Datasource works during Bamboo installation but it does not work once the application is restarted.
      • Installing Bamboo with JDBC attempting on changing to Datasource does not work either.

      Environment

      • Bamboo v5.13.0.1

      Steps to Reproduce

      Installation using Connect via a datasource

      1. add the following configuration to <bamboo-install>/conf/server.xm
        <bamboo-install>/conf/server.xml
        <Manager pathname=""/>
        
        <!-- DataSource with MSSQL -->
        <Resource name="jdbc/BambooDB"
        	auth="Container"
        	type="javax.sql.DataSource"
        	username="bamuser"
        	password="bampass"
        	driverClassName="net.sourceforge.jtds.jdbc.Driver"
        	url="jdbc:jtds:sqlserver://192.168.10.72:1433/bamboo"
        	maxTotal="100"
        	maxIdle="10"
        	maxWaitMillis="30000"
        	maxWait="-1"
        	validationQuery="Select 1"
        />
        
      2. install Bamboo v5.13.0.1
      3. select Connect via a datasource and add the following:
        java:comp/env/jdbc/BambooDB
        

        Finish the installation process

      4. stop Bamboo
      5. start Bamboo

      Installation using Direct JDBC connection

      • install Bamboo
      • in Database configuration select Direct JDBC connection
        fill in the requested and finish the installation
      1. stop Bamboo
      2. add the following configuration to <bamboo-install>/conf/server.xm
        <bamboo-install>/conf/server.xml
        <Manager pathname=""/>
        
        <!-- DataSource with MSSQL -->
        <Resource name="jdbc/BambooDB"
        	auth="Container"
        	type="javax.sql.DataSource"
        	username="bamuser"
        	password="bampass"
        	driverClassName="net.sourceforge.jtds.jdbc.Driver"
        	url="jdbc:jtds:sqlserver://192.168.10.72:1433/bamboo"
        	maxTotal="100"
        	maxIdle="10"
        	maxWaitMillis="30000"
        	maxWait="-1"
        	validationQuery="Select 1"
        />
        
      3. remove all hibernate entries from "<bamboo-home>/bamboo.cfg.xml" and add the following instead:
        <bamboo-home>/bamboo.cfg.xml
        <property name="hibernate.connection.datasource">java:comp/env/jdbc/BambooDB</property>
        <property name="hibernate.dialect">com.atlassian.bamboo.hibernate.SQLServerIntlDialect</property>
        <property name="hibernate.setup">true</property>
        

      Expected Results

      • in both scenarios Installation using Connect via a datasource and Installation using Direct JDBC connection Bamboo should be able to connect to the database on all <bamboo-install>/bin/start-bamboo.sh

      Actual Results

      Installation using Connect via a datasource

      • The following can be seen in <bamboo-install>/logs/catalina.out:
        <bamboo-install>/logs/catalina.out
        2016-09-15 15:58:05,055 ERROR [localhost-startStop-1] [AbstractBootstrapUpgradeTask] Error getting database connection
        java.sql.SQLException: Connections could not be acquired from the underlying database!
        	at com.mchange.v2.sql.SqlUtils.toSQLException(SqlUtils.java:118)
        	at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool.checkoutPooledConnection(C3P0PooledConnectionPool.java:692)
        	at com.mchange.v2.c3p0.impl.AbstractPoolBackedDataSource.getConnection(AbstractPoolBackedDataSource.java:140)
        	at org.hibernate.service.jdbc.connections.internal.C3P0ConnectionProvider.getConnection(C3P0ConnectionProvider.java:84)
        	at com.atlassian.bamboo.upgrade.BootstrapTaskConnectionProvider.getConnection(BootstrapTaskConnectionProvider.java:59)
        	at com.atlassian.bamboo.upgrade.AbstractBootstrapUpgradeTask.getDatabaseConnection(AbstractBootstrapUpgradeTask.java:49)
        	at com.atlassian.bamboo.upgrade.AbstractBootstrapUpgradeTask.withDatabaseConnection(AbstractBootstrapUpgradeTask.java:74)
        	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:84)
        	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:118)
        	at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4842)
        	at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5303)
        	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:147)
        	at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1407)
        	at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1397)
        	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)
        Caused by: com.mchange.v2.resourcepool.CannotAcquireResourceException: A ResourcePool could not acquire a resource from its primary factory or source.
        	at com.mchange.v2.resourcepool.BasicResourcePool.awaitAvailable(BasicResourcePool.java:1469)
        	at com.mchange.v2.resourcepool.BasicResourcePool.prelimCheckoutResource(BasicResourcePool.java:644)
        	at com.mchange.v2.resourcepool.BasicResourcePool.checkoutResource(BasicResourcePool.java:554)
        	at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool.checkoutAndMarkConnectionInUse(C3P0PooledConnectionPool.java:758)
        	at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool.checkoutPooledConnection(C3P0PooledConnectionPool.java:685)
        	... 20 more
        Caused by: java.lang.NullPointerException
        	at oracle.jdbc.driver.OracleDriver.acceptsURL(OracleDriver.java:638)
        	at java.sql.DriverManager.getDriver(DriverManager.java:299)
        	at com.mchange.v2.c3p0.DriverManagerDataSource.driver(DriverManagerDataSource.java:285)
        	at com.mchange.v2.c3p0.DriverManagerDataSource.getConnection(DriverManagerDataSource.java:161)
        	at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:161)
        	at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:147)
        	at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.acquireResource(C3P0PooledConnectionPool.java:202)
        	at com.mchange.v2.resourcepool.BasicResourcePool.doAcquire(BasicResourcePool.java:1138)
        	at com.mchange.v2.resourcepool.BasicResourcePool.doAcquireAndDecrementPendingAcquiresWithinLockOnSuccess(BasicResourcePool.java:1125)
        	at com.mchange.v2.resourcepool.BasicResourcePool.access$700(BasicResourcePool.java:44)
        	at com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask.run(BasicResourcePool.java:1870)
        	at com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:696)
        

      Installation using Direct JDBC connection

      • The following can be seen in <bamboo-install>/logs/catalina.out:
        <bamboo-install>/logs/catalina.out
        2016-09-15 15:57:34,760 WARN [localhost-startStop-1] [C3P0ConnectionProvider] HHH000148: No JDBC Driver class was specified by property hibernate.connection.driver_class
        ...
        2016-09-15 15:58:05,055 ERROR [localhost-startStop-1] [AbstractBootstrapUpgradeTask] Error getting database connection
        java.sql.SQLException: Connections could not be acquired from the underlying database!
        	at com.mchange.v2.sql.SqlUtils.toSQLException(SqlUtils.java:118)
        	at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool.checkoutPooledConnection(C3P0PooledConnectionPool.java:692)
        	at com.mchange.v2.c3p0.impl.AbstractPoolBackedDataSource.getConnection(AbstractPoolBackedDataSource.java:140)
        	at org.hibernate.service.jdbc.connections.internal.C3P0ConnectionProvider.getConnection(C3P0ConnectionProvider.java:84)
        	at com.atlassian.bamboo.upgrade.BootstrapTaskConnectionProvider.getConnection(BootstrapTaskConnectionProvider.java:59)
        	at com.atlassian.bamboo.upgrade.AbstractBootstrapUpgradeTask.getDatabaseConnection(AbstractBootstrapUpgradeTask.java:49)
        	at com.atlassian.bamboo.upgrade.AbstractBootstrapUpgradeTask.withDatabaseConnection(AbstractBootstrapUpgradeTask.java:74)
        	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:84)
        	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:118)
        	at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4842)
        	at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5303)
        	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:147)
        	at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1407)
        	at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1397)
        	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)
        Caused by: com.mchange.v2.resourcepool.CannotAcquireResourceException: A ResourcePool could not acquire a resource from its primary factory or source.
        	at com.mchange.v2.resourcepool.BasicResourcePool.awaitAvailable(BasicResourcePool.java:1469)
        	at com.mchange.v2.resourcepool.BasicResourcePool.prelimCheckoutResource(BasicResourcePool.java:644)
        	at com.mchange.v2.resourcepool.BasicResourcePool.checkoutResource(BasicResourcePool.java:554)
        	at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool.checkoutAndMarkConnectionInUse(C3P0PooledConnectionPool.java:758)
        	at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool.checkoutPooledConnection(C3P0PooledConnectionPool.java:685)
        	... 20 more
        Caused by: java.lang.NullPointerException
        	at oracle.jdbc.driver.OracleDriver.acceptsURL(OracleDriver.java:638)
        	at java.sql.DriverManager.getDriver(DriverManager.java:299)
        	at com.mchange.v2.c3p0.DriverManagerDataSource.driver(DriverManagerDataSource.java:285)
        	at com.mchange.v2.c3p0.DriverManagerDataSource.getConnection(DriverManagerDataSource.java:161)
        	at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:161)
        	at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:147)
        	at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.acquireResource(C3P0PooledConnectionPool.java:202)
        	at com.mchange.v2.resourcepool.BasicResourcePool.doAcquire(BasicResourcePool.java:1138)
        	at com.mchange.v2.resourcepool.BasicResourcePool.doAcquireAndDecrementPendingAcquiresWithinLockOnSuccess(BasicResourcePool.java:1125)
        	at com.mchange.v2.resourcepool.BasicResourcePool.access$700(BasicResourcePool.java:44)
        	at com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask.run(BasicResourcePool.java:1870)
        	at com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:696)
        

      Workaround

      • No workaround available

      Attachments

        Issue Links

          Activity

            People

              kbrazulewicz Krystian Brazulewicz
              rsperafico Rafael Sperafico (Inactive)
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: