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 7bf5cf62790..154a8d11887 100644 --- a/engine/schema/src/main/java/com/cloud/upgrade/DatabaseCreator.java +++ b/engine/schema/src/main/java/com/cloud/upgrade/DatabaseCreator.java @@ -74,7 +74,7 @@ public class DatabaseCreator { private static void runQuery(String host, String port, String rootPassword, String query, boolean dryRun) { System.out.println("============> Running query: " + query); - try (Connection conn = DriverManager.getConnection(String.format("jdbc:mysql://%s:%s/", host, port), "root", rootPassword); + try (Connection conn = DriverManager.getConnection(String.format("jdbc:mysql://%s:%s/?" + TransactionLegacy.CONNECTION_PARAMS, host, port), "root", rootPassword); Statement stmt = conn.createStatement();){ if (!dryRun) stmt.executeUpdate(query); 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 eb6b09c31f3..f787592df5f 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 @@ -82,6 +82,8 @@ public class TransactionLegacy implements Closeable { public static final short CONNECTED_DB = -1; + public static final String CONNECTION_PARAMS = "scrollTolerantForwardOnly=true"; + private static AtomicLong s_id = new AtomicLong(); private static final TransactionMBeanImpl s_mbean = new TransactionMBeanImpl(); static { @@ -1079,7 +1081,7 @@ public class TransactionLegacy implements Closeable { } final String cloudConnectionUri = cloudDriver + "://" + cloudHost + (s_dbHAEnabled ? "," + cloudReplicas : "") + ":" + cloudPort + "/" + cloudDbName + - "?autoReconnect=" + cloudAutoReconnect + (url != null ? "&" + url : "") + (useSSL ? "&useSSL=true" : "") + + "?" + CONNECTION_PARAMS + "&autoReconnect=" + cloudAutoReconnect + (url != null ? "&" + url : "") + (useSSL ? "&useSSL=true" : "") + (s_dbHAEnabled ? "&" + cloudDbHAParams : "") + (s_dbHAEnabled ? "&loadBalanceStrategy=" + loadBalanceStrategy : ""); DriverLoader.loadDriver(cloudDriver); @@ -1102,7 +1104,7 @@ public class TransactionLegacy implements Closeable { final String usageUrl = dbProps.getProperty("db.usage.url.params"); final String usageConnectionUri = usageDriver + "://" + usageHost + (s_dbHAEnabled ? "," + dbProps.getProperty("db.cloud.replicas") : "") + ":" + usagePort + - "/" + usageDbName + "?autoReconnect=" + usageAutoReconnect + (usageUrl != null ? "&" + usageUrl : "") + + "/" + usageDbName + "?" + CONNECTION_PARAMS + "&autoReconnect=" + usageAutoReconnect + (usageUrl != null ? "&" + usageUrl : "") + (s_dbHAEnabled ? "&" + getDBHAParams("usage", dbProps) : "") + (s_dbHAEnabled ? "&loadBalanceStrategy=" + loadBalanceStrategy : ""); DriverLoader.loadDriver(usageDriver); @@ -1124,7 +1126,7 @@ public class TransactionLegacy implements Closeable { final String simulatorDbName = dbProps.getProperty("db.simulator.name"); final boolean simulatorAutoReconnect = Boolean.parseBoolean(dbProps.getProperty("db.simulator.autoReconnect")); - final String simulatorConnectionUri = simulatorDriver + "://" + simulatorHost + ":" + simulatorPort + "/" + simulatorDbName + "?autoReconnect=" + + final String simulatorConnectionUri = simulatorDriver + "://" + simulatorHost + ":" + simulatorPort + "/" + simulatorDbName + "?" + CONNECTION_PARAMS + "&autoReconnect=" + simulatorAutoReconnect; DriverLoader.loadDriver(simulatorDriver); @@ -1204,7 +1206,7 @@ public class TransactionLegacy implements Closeable { @SuppressWarnings({"unchecked", "rawtypes"}) private static DataSource getDefaultDataSource(final String database) { - final ConnectionFactory connectionFactory = new DriverManagerConnectionFactory("jdbc:mysql://localhost:3306/" + database, "cloud", "cloud"); + final ConnectionFactory connectionFactory = new DriverManagerConnectionFactory("jdbc:mysql://localhost:3306/" + database + "?" + CONNECTION_PARAMS, "cloud", "cloud"); 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 9a7445661f3..fed1926b5cf 100644 --- a/pom.xml +++ b/pom.xml @@ -164,7 +164,7 @@ 2.7.0 0.5.3 1.5.0-b01 - 8.0.19 + 8.0.33 2.0.4 10.1 2.6.6 diff --git a/test/src-not-used/main/java/com/cloud/test/regression/TestCase.java b/test/src-not-used/main/java/com/cloud/test/regression/TestCase.java index cb7395c07bf..2bbf1bbac2f 100644 --- a/test/src-not-used/main/java/com/cloud/test/regression/TestCase.java +++ b/test/src-not-used/main/java/com/cloud/test/regression/TestCase.java @@ -85,7 +85,7 @@ public abstract class TestCase { this.conn = null; try { Class.forName("com.mysql.jdbc.Driver"); - this.conn = DriverManager.getConnection("jdbc:mysql://" + param.get("db") + "/cloud", "root", dbPassword); + this.conn = DriverManager.getConnection("jdbc:mysql://" + param.get("db") + "/cloud?" + TransactionLegacy.CONNECTION_PARAMS, "root", dbPassword); if (!this.conn.isValid(0)) { s_logger.error("Connection to DB failed to establish"); } diff --git a/usage/src/test/java/com/cloud/usage/UsageSanityCheckerIT.java b/usage/src/test/java/com/cloud/usage/UsageSanityCheckerIT.java index d8a65800018..3e57c070074 100644 --- a/usage/src/test/java/com/cloud/usage/UsageSanityCheckerIT.java +++ b/usage/src/test/java/com/cloud/usage/UsageSanityCheckerIT.java @@ -41,6 +41,7 @@ import org.junit.runners.Parameterized.Parameters; import org.mockito.Mockito; import com.cloud.utils.PropertiesUtil; +import com.cloud.utils.db.TransactionLegacy; @RunWith(Parameterized.class) public class UsageSanityCheckerIT{ @@ -106,7 +107,7 @@ public class UsageSanityCheckerIT{ protected Connection createConnection(String dbSchema) throws SQLException { String cloudDbUrl = "jdbc:mysql://"+properties.getProperty("db."+dbSchema+".host") + ":" + properties.getProperty("db."+dbSchema+".port") + "/" + - properties.getProperty("db."+dbSchema+".name"); + properties.getProperty("db."+dbSchema+".name") + "?" + TransactionLegacy.CONNECTION_PARAMS; return DriverManager.getConnection(cloudDbUrl, properties.getProperty("db."+dbSchema+".username"), properties.getProperty("db."+dbSchema+".password")); }