rhtyd closed pull request #2718: Update Apache DBCP version
URL: https://github.com/apache/cloudstack/pull/2718
 
 
   

This is a PR merged from a forked repository.
As GitHub hides the original diff on merge, it is displayed below for
the sake of provenance:

As this is a foreign pull request (from a fork), the diff is supplied
below (as it won't show otherwise due to GitHub magic):

diff --git a/developer/pom.xml b/developer/pom.xml
index 3f6236fd690..97ec9ed1b0f 100644
--- a/developer/pom.xml
+++ b/developer/pom.xml
@@ -22,12 +22,12 @@
   </parent>
   <dependencies>
     <dependency>
-      <groupId>commons-dbcp</groupId>
-      <artifactId>commons-dbcp</artifactId>
+      <groupId>org.apache.commons</groupId>
+      <artifactId>commons-dbcp2</artifactId>
     </dependency>
     <dependency>
-      <groupId>commons-pool</groupId>
-      <artifactId>commons-pool</artifactId>
+      <groupId>org.apache.commons</groupId>
+      <artifactId>commons-pool2</artifactId>
     </dependency>
     <dependency>
       <groupId>org.jasypt</groupId>
diff --git a/engine/schema/src/main/java/com/cloud/upgrade/DatabaseCreator.java 
b/engine/schema/src/main/java/com/cloud/upgrade/DatabaseCreator.java
index 2509d6972c3..2281e1d2399 100644
--- a/engine/schema/src/main/java/com/cloud/upgrade/DatabaseCreator.java
+++ b/engine/schema/src/main/java/com/cloud/upgrade/DatabaseCreator.java
@@ -230,5 +230,6 @@ public static void main(String[] args) {
         } finally {
             txn.close();
         }
+        System.exit(0);
     }
 }
diff --git a/framework/db/pom.xml b/framework/db/pom.xml
index 6483f4f9b03..7bf184c6d38 100644
--- a/framework/db/pom.xml
+++ b/framework/db/pom.xml
@@ -28,8 +28,8 @@
       <artifactId>javax.persistence</artifactId>
     </dependency>
     <dependency>
-      <groupId>commons-dbcp</groupId>
-      <artifactId>commons-dbcp</artifactId>
+      <groupId>org.apache.commons</groupId>
+      <artifactId>commons-dbcp2</artifactId>
     </dependency>
     <dependency>
       <groupId>commons-io</groupId>
@@ -37,8 +37,8 @@
       <version>${cs.commons-io.version}</version>
     </dependency>
     <dependency>
-      <groupId>commons-pool</groupId>
-      <artifactId>commons-pool</artifactId>
+      <groupId>org.apache.commons</groupId>
+      <artifactId>commons-pool2</artifactId>
     </dependency>
     <dependency>
       <groupId>org.apache.cloudstack</groupId>
diff --git 
a/framework/db/src/main/java/com/cloud/utils/db/TransactionLegacy.java 
b/framework/db/src/main/java/com/cloud/utils/db/TransactionLegacy.java
index 6a422d30fc3..6777077c3d1 100644
--- a/framework/db/src/main/java/com/cloud/utils/db/TransactionLegacy.java
+++ b/framework/db/src/main/java/com/cloud/utils/db/TransactionLegacy.java
@@ -33,13 +33,14 @@
 
 import javax.sql.DataSource;
 
-import org.apache.commons.dbcp.ConnectionFactory;
-import org.apache.commons.dbcp.DriverManagerConnectionFactory;
-import org.apache.commons.dbcp.PoolableConnectionFactory;
-import org.apache.commons.dbcp.PoolingDataSource;
-import org.apache.commons.pool.KeyedObjectPoolFactory;
-import org.apache.commons.pool.impl.GenericObjectPool;
-import org.apache.commons.pool.impl.StackKeyedObjectPoolFactory;
+import org.apache.commons.dbcp2.ConnectionFactory;
+import org.apache.commons.dbcp2.DriverManagerConnectionFactory;
+import org.apache.commons.dbcp2.PoolableConnection;
+import org.apache.commons.dbcp2.PoolableConnectionFactory;
+import org.apache.commons.dbcp2.PoolingDataSource;
+import org.apache.commons.pool2.ObjectPool;
+import org.apache.commons.pool2.impl.GenericObjectPool;
+import org.apache.commons.pool2.impl.GenericObjectPoolConfig;
 import org.apache.log4j.Logger;
 
 import com.cloud.utils.Pair;
@@ -1079,24 +1080,15 @@ public static void initDataSource(Properties dbProps) {
                 System.setProperty("javax.net.ssl.trustStorePassword", 
dbProps.getProperty("db.cloud.trustStorePassword"));
             }
 
-            final GenericObjectPool cloudConnectionPool =
-                    new GenericObjectPool(null, cloudMaxActive, 
GenericObjectPool.DEFAULT_WHEN_EXHAUSTED_ACTION, cloudMaxWait, cloudMaxIdle, 
cloudTestOnBorrow, false,
-                            cloudTimeBtwEvictionRunsMillis, 1, 
cloudMinEvcitableIdleTimeMillis, cloudTestWhileIdle);
-
             final String cloudConnectionUri = cloudDriver + "://" + cloudHost 
+ (s_dbHAEnabled ? "," + cloudSlaves : "") + ":" + cloudPort + "/" + 
cloudDbName +
                     "?autoReconnect=" + cloudAutoReconnect + (url != null ? 
"&" + url : "") + (useSSL ? "&useSSL=true" : "") +
                     (s_dbHAEnabled ? "&" + cloudDbHAParams : "") + 
(s_dbHAEnabled ? "&loadBalanceStrategy=" + loadBalanceStrategy : "");
             DriverLoader.loadDriver(cloudDriver);
 
-            final ConnectionFactory cloudConnectionFactory = new 
DriverManagerConnectionFactory(cloudConnectionUri, cloudUsername, 
cloudPassword);
-
-            final KeyedObjectPoolFactory poolableObjFactory = 
(cloudPoolPreparedStatements ? new StackKeyedObjectPoolFactory() : null);
-
-            final PoolableConnectionFactory cloudPoolableConnectionFactory =
-                    new PoolableConnectionFactory(cloudConnectionFactory, 
cloudConnectionPool, poolableObjFactory, cloudValidationQuery, false, false, 
isolationLevel);
-
             // Default Data Source for CloudStack
-            s_ds = new 
PoolingDataSource(cloudPoolableConnectionFactory.getPool());
+            s_ds = createDataSource(cloudConnectionUri, cloudUsername, 
cloudPassword, cloudMaxActive, cloudMaxIdle, cloudMaxWait,
+                    cloudTimeBtwEvictionRunsMillis, 
cloudMinEvcitableIdleTimeMillis, cloudTestWhileIdle, cloudTestOnBorrow,
+                    cloudValidationQuery, isolationLevel);
 
             // Configure the usage db
             final int usageMaxActive = 
Integer.parseInt(dbProps.getProperty("db.usage.maxActive"));
@@ -1111,21 +1103,15 @@ public static void initDataSource(Properties dbProps) {
             final boolean usageAutoReconnect = 
Boolean.parseBoolean(dbProps.getProperty("db.usage.autoReconnect"));
             final String usageUrl = dbProps.getProperty("db.usage.url.params");
 
-            final GenericObjectPool usageConnectionPool =
-                    new GenericObjectPool(null, usageMaxActive, 
GenericObjectPool.DEFAULT_WHEN_EXHAUSTED_ACTION, usageMaxWait, usageMaxIdle);
-
             final String usageConnectionUri = usageDriver + "://" + usageHost 
+ (s_dbHAEnabled ? "," + dbProps.getProperty("db.cloud.slaves") : "") + ":" + 
usagePort +
                     "/" + usageDbName + "?autoReconnect=" + usageAutoReconnect 
+ (usageUrl != null ? "&" + usageUrl : "") +
                     (s_dbHAEnabled ? "&" + getDBHAParams("usage", dbProps) : 
"") + (s_dbHAEnabled ? "&loadBalanceStrategy=" + loadBalanceStrategy : "");
             DriverLoader.loadDriver(usageDriver);
 
-            final ConnectionFactory usageConnectionFactory = new 
DriverManagerConnectionFactory(usageConnectionUri, usageUsername, 
usagePassword);
-
-            final PoolableConnectionFactory usagePoolableConnectionFactory =
-                    new PoolableConnectionFactory(usageConnectionFactory, 
usageConnectionPool, new StackKeyedObjectPoolFactory(), null, false, false);
-
             // Data Source for usage server
-            s_usageDS = new 
PoolingDataSource(usagePoolableConnectionFactory.getPool());
+            s_usageDS = createDataSource(usageConnectionUri, usageUsername, 
usagePassword,
+                    usageMaxActive, usageMaxIdle, usageMaxWait, null, null, 
null, null,
+                    null, isolationLevel);
 
             try {
                 // Configure the simulator db
@@ -1140,18 +1126,12 @@ public static void initDataSource(Properties dbProps) {
                 final String simulatorDbName = 
dbProps.getProperty("db.simulator.name");
                 final boolean simulatorAutoReconnect = 
Boolean.parseBoolean(dbProps.getProperty("db.simulator.autoReconnect"));
 
-                final GenericObjectPool simulatorConnectionPool =
-                        new GenericObjectPool(null, simulatorMaxActive, 
GenericObjectPool.DEFAULT_WHEN_EXHAUSTED_ACTION, simulatorMaxWait, 
simulatorMaxIdle);
-
                 final String simulatorConnectionUri = simulatorDriver + "://" 
+ simulatorHost + ":" + simulatorPort + "/" + simulatorDbName + 
"?autoReconnect=" +
                         simulatorAutoReconnect;
                 DriverLoader.loadDriver(simulatorDriver);
 
-                final ConnectionFactory simulatorConnectionFactory = new 
DriverManagerConnectionFactory(simulatorConnectionUri, simulatorUsername, 
simulatorPassword);
-
-                final PoolableConnectionFactory 
simulatorPoolableConnectionFactory =
-                        new 
PoolableConnectionFactory(simulatorConnectionFactory, simulatorConnectionPool, 
new StackKeyedObjectPoolFactory(), null, false, false);
-                s_simulatorDS = new 
PoolingDataSource(simulatorPoolableConnectionFactory.getPool());
+                s_simulatorDS = createDataSource(simulatorConnectionUri, 
simulatorUsername, simulatorPassword,
+                        simulatorMaxActive, simulatorMaxIdle, 
simulatorMaxWait, null, null, null, null, cloudValidationQuery, isolationLevel);
             } catch (Exception e) {
                 s_logger.debug("Simulator DB properties are not available. Not 
initializing simulator DS");
             }
@@ -1165,6 +1145,54 @@ public static void initDataSource(Properties dbProps) {
         }
     }
 
+    /**
+     * Creates a data source
+     */
+    private static DataSource createDataSource(String uri, String username, 
String password,
+                                               Integer maxActive, Integer 
maxIdle, Long maxWait,
+                                               Long timeBtwnEvictionRuns, Long 
minEvictableIdleTime,
+                                               Boolean testWhileIdle, Boolean 
testOnBorrow,
+                                               String validationQuery, Integer 
isolationLevel) {
+        ConnectionFactory connectionFactory = new 
DriverManagerConnectionFactory(uri, username, password);
+        PoolableConnectionFactory poolableConnectionFactory = new 
PoolableConnectionFactory(connectionFactory, null);
+        GenericObjectPoolConfig config = createPoolConfig(maxActive, maxIdle, 
maxWait, timeBtwnEvictionRuns, minEvictableIdleTime, testWhileIdle, 
testOnBorrow);
+        ObjectPool<PoolableConnection> connectionPool = new 
GenericObjectPool<>(poolableConnectionFactory, config);
+        poolableConnectionFactory.setPool(connectionPool);
+        if (validationQuery != null) {
+            poolableConnectionFactory.setValidationQuery(validationQuery);
+        }
+        if (isolationLevel != null) {
+            
poolableConnectionFactory.setDefaultTransactionIsolation(isolationLevel);
+        }
+        return new PoolingDataSource<>(connectionPool);
+    }
+
+    /**
+     * Return a GenericObjectPoolConfig configuration usable on connection 
pool creation
+     */
+    private static GenericObjectPoolConfig createPoolConfig(Integer maxActive, 
Integer maxIdle, Long maxWait,
+                                                            Long 
timeBtwnEvictionRuns, Long minEvictableIdleTime,
+                                                            Boolean 
testWhileIdle, Boolean testOnBorrow) {
+        GenericObjectPoolConfig config = new GenericObjectPoolConfig();
+        config.setMaxTotal(maxActive);
+        config.setMaxIdle(maxIdle);
+        config.setMaxWaitMillis(maxWait);
+
+        if (timeBtwnEvictionRuns != null) {
+            config.setTimeBetweenEvictionRunsMillis(timeBtwnEvictionRuns);
+        }
+        if (minEvictableIdleTime != null) {
+            config.setMinEvictableIdleTimeMillis(minEvictableIdleTime);
+        }
+        if (testWhileIdle != null) {
+            config.setTestWhileIdle(testWhileIdle);
+        }
+        if (testOnBorrow != null) {
+            config.setTestOnBorrow(testOnBorrow);
+        }
+        return config;
+    }
+
     private static String getDBHAParams(String dbName, Properties dbProps) {
         StringBuilder sb = new StringBuilder();
         sb.append("failOverReadOnly=" + dbProps.getProperty("db." + dbName + 
".failOverReadOnly"));
@@ -1178,11 +1206,10 @@ private static String getDBHAParams(String dbName, 
Properties dbProps) {
 
     @SuppressWarnings({"unchecked", "rawtypes"})
     private static DataSource getDefaultDataSource(final String database) {
-        final GenericObjectPool connectionPool = new GenericObjectPool(null, 
5);
         final ConnectionFactory connectionFactory = new 
DriverManagerConnectionFactory("jdbc:mysql://localhost:3306/" + database, 
"cloud", "cloud");
-        final PoolableConnectionFactory poolableConnectionFactory = new 
PoolableConnectionFactory(connectionFactory, connectionPool, null, null, false, 
true);
-        return new PoolingDataSource(
-                /* connectionPool */poolableConnectionFactory.getPool());
+        final PoolableConnectionFactory poolableConnectionFactory = new 
PoolableConnectionFactory(connectionFactory, null);
+        final GenericObjectPool connectionPool = new 
GenericObjectPool(poolableConnectionFactory);
+        return new PoolingDataSource(connectionPool);
     }
 
     /**
diff --git a/pom.xml b/pom.xml
index 2e61773623e..fcae2bede7e 100644
--- a/pom.xml
+++ b/pom.xml
@@ -50,8 +50,8 @@
     <cs.log4j.version>1.2.17</cs.log4j.version>
     <cs.log4j.extras.version>1.2.17</cs.log4j.extras.version>
     <cs.cglib.version>3.2.5</cs.cglib.version>
-    <cs.dbcp.version>1.4</cs.dbcp.version>
-    <cs.pool.version>1.6</cs.pool.version>
+    <cs.dbcp.version>2.2.0</cs.dbcp.version>
+    <cs.pool.version>2.4.3</cs.pool.version>
     <cs.codec.version>1.11</cs.codec.version>
     <cs.configuration.version>1.10</cs.configuration.version>
     <cs.logging.version>1.1.1</cs.logging.version>
@@ -271,13 +271,13 @@
         <version>${cs.cglib.version}</version>
       </dependency>
       <dependency>
-        <groupId>commons-dbcp</groupId>
-        <artifactId>commons-dbcp</artifactId>
+        <groupId>org.apache.commons</groupId>
+        <artifactId>commons-dbcp2</artifactId>
         <version>${cs.dbcp.version}</version>
         <exclusions>
           <exclusion>
-            <artifactId>commons-pool</artifactId>
-            <groupId>commons-pool</groupId>
+            <artifactId>org.apache.commons</artifactId>
+            <groupId>commons-pool2</groupId>
           </exclusion>
         </exclusions>
       </dependency>
@@ -297,8 +297,8 @@
         <version>${cs.commons-fileupload.version}</version>
       </dependency>
       <dependency>
-        <groupId>commons-pool</groupId>
-        <artifactId>commons-pool</artifactId>
+        <groupId>org.apache.commons</groupId>
+        <artifactId>commons-pool2</artifactId>
         <version>${cs.pool.version}</version>
       </dependency>
       <dependency>


 

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


With regards,
Apache Git Services

Reply via email to