You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by GitBox <gi...@apache.org> on 2018/07/10 06:24:01 UTC

[GitHub] rhtyd closed pull request #2718: Update Apache DBCP version

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:
users@infra.apache.org


With regards,
Apache Git Services