Spring IntTest is getting "Failed to grow the connection pool" from Atomikos

David M. Karr picture David M. Karr · Feb 7, 2012 · Viewed 8.4k times · Source

I have a Spring application that normally runs fine in WebLogic.

I have a set of integration tests that use the Atomikos "Transaction Essentials" framework to provide the standalone transaction manager. I had this working, but I'm now seeing a new problem, but I don't know what I might have changed that would make this happen.

I'm seeing a stack trace beginning like this:

org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exception is com.atomikos.jdbc.AtomikosSQLException: Failed to grow the connection pool at org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:80)

Here are the relevant bean definitions:

    <bean id="atomikosTransactionManager" class="com.atomikos.icatch.jta.UserTransactionManager"
      init-method="init" destroy-method="close">
    <!-- when close is called, should we force transactions to terminate or not? -->
    <property name="forceShutdown">
        <value>true</value>
    </property>
</bean>

<!-- Also use Atomikos UserTransactionImp, needed to configure Spring -->
<bean id="atomikosUserTransaction" class="com.atomikos.icatch.jta.UserTransactionImp">
    <property name="transactionTimeout">
        <value>300</value>
    </property>
</bean>

<!-- Configure the Spring framework to use JTA transactions from Atomikos -->
<bean id="catalogTransactionManager" class="org.springframework.transaction.jta.JtaTransactionManager">
    <property name="transactionManager">
        <ref bean="atomikosTransactionManager" />
    </property>
    <property name="userTransaction">
        <ref bean="atomikosUserTransaction" />
    </property>
</bean>

I also have several like this:

    <bean id="appConfigDataSource"
    class="com.atomikos.jdbc.AtomikosDataSourceBean"
    p:uniqueResourceName="appConfigDataSource"
    p:xaDataSourceClassName="oracle.jdbc.xa.client.OracleXADataSource"
    p:poolSize="5">
    <property name="xaProperties">
        <props>
            <prop key="user">${ds.appconfig.userName}</prop>
            <prop key="password">${ds.appconfig.password}</prop>
            <prop key="URL">${ds.appconfig.url}</prop>
        </props>
    </property>
</bean>

I tried changing the "5" to "50". This makes it run longer, but it still fails with the same error. There's no way that it would even need 5 or even 50 connections. I have a strong feeling that if I changed it to a larger number, it would run even longer, and still fail with the same error.

What might I be missing?

Answer

David M. Karr picture David M. Karr · Feb 8, 2012

Never mind. It was a simple problem. I forgot that the hostname of my test database changed a while ago, and I forgot to change the property value.