[ 
https://issues.apache.org/jira/browse/DBCP-431?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14293972#comment-14293972
 ] 

Phil Steitz commented on DBCP-431:
----------------------------------

I think this may be indicating a bug in BasicDataSource#createDataSource().  In 
2.0, we relaxed the sync on this method.  I don't have a unit test yet to 
confirm, but I suspect the following is possible now for a pool with 
initialSize >= 1.

Thread 1 - createDataSource() - enters sync block and starts creating 
datasource.  Executes  {code} dataSource = createDataSourceInstance();{code} so 
dataSource is not null.
Thread 2 - createDataSource() - gets not-yet-initialzed dataSource immediately 
(since not null and no sync)
Thread 2 - closes dataSource
Thread 1 - starts to initialize dataSource - bang!

> SQLException: Error preloading the connection pool after upgrade to 
> commons-dbcp2
> ---------------------------------------------------------------------------------
>
>                 Key: DBCP-431
>                 URL: https://issues.apache.org/jira/browse/DBCP-431
>             Project: Commons Dbcp
>          Issue Type: Bug
>    Affects Versions: 2.0
>         Environment: Windows XP
> Junit 4.11
> Java 1.7
> Spring 4.0
> maven-compiler-plugin 3.2
> maven.surefire.plugin 2.17
> maven-cobertura-plugin 2.6
> Jenkins 1.549
>            Reporter: Sergio Cuenca
>            Priority: Minor
>              Labels: commons-dbcp2, connection-pooling
>
> Hi all,
> We have a continuous integration environment (Jenkins) to launch our JUnits 
> tests.
> We had the version 1.4 of commons-dbcp to create the connection pools with 
> Spring. The configuration was the following:
> {code:xml}
> <bean id="dataSourceTemplate" class="org.apache.commons.dbcp.BasicDataSource" 
> destroy-method="close">
>         <property 
> name="driverClassName"><value>${aplicacion.datasource.driverClassName}</value></property>
>         <property 
> name="url"><value>${aplicacion.datasource.url}</value></property>
>         <property 
> name="username"><value>${aplicacion.datasource.user}</value></property>
>         <property 
> name="password"><value>${aplicacion.datasource.password}</value></property>
>         <property name="initialSize"><value>1</value></property>
>         <property name="maxActive"><value>15</value></property>
>         <property name="maxIdle"><value>2</value></property>
>         <property 
> name="accessToUnderlyingConnectionAllowed"><value>${aplicacion.datasource.accessToUnderlyingConnectionAllowed}</value></property>
>       </bean>
> {code}
> We use JUnit 4.11 and maven cobertura plugin 1.6. to launch the tests.
> This configuration was working CORRECTLY.
> After upgrade to commons-dbcp2, version 2.0.1. Some unit tests are reporting 
> errors with the following message:
> java.sql.SQLException: Error preloading the connection pool.
> We launch one unit test each time, one by one. We create and destroy the 
> connection pool every time.
> What can we do to solve this problem?? 
> Thank you very much.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to