From 24d5c45f7f4d244816e2c0c5147a23ece034a4c1 Mon Sep 17 00:00:00 2001 From: Vishesh Date: Thu, 21 Mar 2024 14:05:47 +0530 Subject: [PATCH 1/2] Add indexes for vm_stats (#8737) * Add indexes for vm_stats * Remove index on timestamp * Chnage index from vm_id,timestamp to vm_id --- .../upgrade/dao/Upgrade41900to41910.java | 32 ++++++++++++++++--- 1 file changed, 28 insertions(+), 4 deletions(-) diff --git a/engine/schema/src/main/java/com/cloud/upgrade/dao/Upgrade41900to41910.java b/engine/schema/src/main/java/com/cloud/upgrade/dao/Upgrade41900to41910.java index 6085faba634..5c57fb31fcf 100644 --- a/engine/schema/src/main/java/com/cloud/upgrade/dao/Upgrade41900to41910.java +++ b/engine/schema/src/main/java/com/cloud/upgrade/dao/Upgrade41900to41910.java @@ -16,16 +16,20 @@ // under the License. package com.cloud.upgrade.dao; +import com.cloud.upgrade.SystemVmTemplateRegistration; import com.cloud.utils.exception.CloudRuntimeException; +import org.apache.log4j.Logger; import java.io.InputStream; import java.sql.Connection; -public class Upgrade41900to41910 implements DbUpgrade { +public class Upgrade41900to41910 implements DbUpgrade, DbUpgradeSystemVmTemplate { + final static Logger LOG = Logger.getLogger(Upgrade41900to41910.class); + private SystemVmTemplateRegistration systemVmTemplateRegistration; @Override public String[] getUpgradableVersionRange() { - return new String[] {"4.19.0.0", "4.19.1.0"}; + return new String[]{"4.19.0.0", "4.19.1.0"}; } @Override @@ -46,11 +50,12 @@ public class Upgrade41900to41910 implements DbUpgrade { throw new CloudRuntimeException("Unable to find " + scriptFile); } - return new InputStream[] {script}; + return new InputStream[]{script}; } @Override public void performDataMigration(Connection conn) { + addIndexes(conn); } @Override @@ -61,6 +66,25 @@ public class Upgrade41900to41910 implements DbUpgrade { throw new CloudRuntimeException("Unable to find " + scriptFile); } - return new InputStream[] {script}; + return new InputStream[]{script}; + } + + private void addIndexes(Connection conn) { + DbUpgradeUtils.addIndexIfNeeded(conn, "vm_stats", "vm_id"); + } + + @Override + public void updateSystemVmTemplates(Connection conn) { + LOG.debug("Updating System Vm template IDs"); + initSystemVmTemplateRegistration(); + try { + systemVmTemplateRegistration.updateSystemVmTemplates(conn); + } catch (Exception e) { + throw new CloudRuntimeException("Failed to find / register SystemVM template(s)"); + } + } + + private void initSystemVmTemplateRegistration() { + systemVmTemplateRegistration = new SystemVmTemplateRegistration(""); } } From 2e88eb45a3bc71bd9d9f9558697f008224ebf882 Mon Sep 17 00:00:00 2001 From: Marcus Sorensen Date: Thu, 21 Mar 2024 05:39:06 -0700 Subject: [PATCH 2/2] Update mysql-connector version (#8753) Co-authored-by: Marcus Sorensen --- client/pom.xml | 14 +++++++------- developer/pom.xml | 12 ++++++------ engine/schema/pom.xml | 4 ++-- .../java/com/cloud/upgrade/DatabaseCreator.java | 2 +- .../java/com/cloud/utils/db/TransactionLegacy.java | 6 +++++- plugins/database/mysql-ha/pom.xml | 4 ++-- plugins/database/quota/pom.xml | 4 ++-- plugins/network-elements/juniper-contrail/pom.xml | 4 ++-- plugins/storage/volume/cloudbyte/pom.xml | 4 ++-- pom.xml | 6 +++--- server/pom.xml | 4 ++-- .../java/com/cloud/test/regression/TestCase.java | 2 +- tools/devcloud-kvm/pom.xml | 8 ++++---- tools/devcloud4/pom.xml | 8 ++++---- tools/marvin/setup.py | 2 +- usage/pom.xml | 4 ++-- .../java/com/cloud/usage/UsageSanityCheckerIT.java | 3 ++- utils/pom.xml | 5 +++-- 18 files changed, 51 insertions(+), 45 deletions(-) diff --git a/client/pom.xml b/client/pom.xml index 2e1f7fe66f8..b27c70287fa 100644 --- a/client/pom.xml +++ b/client/pom.xml @@ -68,8 +68,8 @@ jetty-util - mysql - mysql-connector-java + com.mysql + mysql-connector-j org.apache.cloudstack @@ -709,8 +709,8 @@ - mysql - mysql-connector-java + com.mysql + mysql-connector-j ${cs.mysql.version} @@ -898,8 +898,8 @@ ${project.build.directory}/pythonlibs - mysql - mysql-connector-java + com.mysql + mysql-connector-j false ${project.build.directory}/lib @@ -973,7 +973,7 @@ org.bouncycastle:bcprov-jdk15on org.bouncycastle:bcpkix-jdk15on org.bouncycastle:bctls-jdk15on - mysql:mysql-connector-java + com.mysql:mysql-connector-j org.apache.cloudstack:cloud-plugin-storage-volume-storpool org.apache.cloudstack:cloud-plugin-storage-volume-linstor org.apache.cloudstack:cloud-usage diff --git a/developer/pom.xml b/developer/pom.xml index 81e9a53ac20..8a875bb8939 100644 --- a/developer/pom.xml +++ b/developer/pom.xml @@ -112,8 +112,8 @@ - mysql - mysql-connector-java + com.mysql + mysql-connector-j ${cs.mysql.version} @@ -180,8 +180,8 @@ 1.2.1 - mysql - mysql-connector-java + com.mysql + mysql-connector-j ${cs.mysql.version} @@ -238,8 +238,8 @@ 1.2.1 - mysql - mysql-connector-java + com.mysql + mysql-connector-j ${cs.mysql.version} diff --git a/engine/schema/pom.xml b/engine/schema/pom.xml index 3281b70d783..62911f178f5 100644 --- a/engine/schema/pom.xml +++ b/engine/schema/pom.xml @@ -49,8 +49,8 @@ ${project.version} - mysql - mysql-connector-java + com.mysql + mysql-connector-j org.ini4j 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 df0df60f519..d3fa6afb4f2 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,7 @@ public class TransactionLegacy implements Closeable { public static final short SIMULATOR_DB = 3; 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(); @@ -1211,6 +1212,9 @@ public class TransactionLegacy implements Closeable { connectionUri.append(loadBalanceStrategy); } + connectionUri.append("&"); + connectionUri.append(CONNECTION_PARAMS); + return connectionUri.toString(); } @@ -1275,7 +1279,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/plugins/database/mysql-ha/pom.xml b/plugins/database/mysql-ha/pom.xml index b5922f7115a..b518ba85c56 100644 --- a/plugins/database/mysql-ha/pom.xml +++ b/plugins/database/mysql-ha/pom.xml @@ -29,8 +29,8 @@ - mysql - mysql-connector-java + com.mysql + mysql-connector-j provided diff --git a/plugins/database/quota/pom.xml b/plugins/database/quota/pom.xml index c8e147e06cf..458425ca60d 100644 --- a/plugins/database/quota/pom.xml +++ b/plugins/database/quota/pom.xml @@ -49,8 +49,8 @@ ${project.version} - mysql - mysql-connector-java + com.mysql + mysql-connector-j provided diff --git a/plugins/network-elements/juniper-contrail/pom.xml b/plugins/network-elements/juniper-contrail/pom.xml index 391980bffa4..9eb61383a99 100644 --- a/plugins/network-elements/juniper-contrail/pom.xml +++ b/plugins/network-elements/juniper-contrail/pom.xml @@ -120,8 +120,8 @@ - mysql - mysql-connector-java + com.mysql + mysql-connector-j provided diff --git a/plugins/storage/volume/cloudbyte/pom.xml b/plugins/storage/volume/cloudbyte/pom.xml index 1b155e76c29..8ab39e845a5 100644 --- a/plugins/storage/volume/cloudbyte/pom.xml +++ b/plugins/storage/volume/cloudbyte/pom.xml @@ -39,8 +39,8 @@ ${project.version} - mysql - mysql-connector-java + com.mysql + mysql-connector-j provided diff --git a/pom.xml b/pom.xml index 8e9817b5a8c..3151c9f0d29 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 @@ -453,8 +453,8 @@ ${cs.reload4j.version} - mysql - mysql-connector-java + com.mysql + mysql-connector-j ${cs.mysql.version} test diff --git a/server/pom.xml b/server/pom.xml index 2d57e0d7c5f..152cd4338e0 100644 --- a/server/pom.xml +++ b/server/pom.xml @@ -35,8 +35,8 @@ - mysql - mysql-connector-java + com.mysql + mysql-connector-j commons-io 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/tools/devcloud-kvm/pom.xml b/tools/devcloud-kvm/pom.xml index 76bae6ee8c2..818ad6277ad 100644 --- a/tools/devcloud-kvm/pom.xml +++ b/tools/devcloud-kvm/pom.xml @@ -30,8 +30,8 @@ - mysql - mysql-connector-java + com.mysql + mysql-connector-j provided @@ -80,8 +80,8 @@ - mysql - mysql-connector-java + com.mysql + mysql-connector-j ${cs.mysql.version} diff --git a/tools/devcloud4/pom.xml b/tools/devcloud4/pom.xml index b3175f8f517..4173a7a5df0 100644 --- a/tools/devcloud4/pom.xml +++ b/tools/devcloud4/pom.xml @@ -30,8 +30,8 @@ - mysql - mysql-connector-java + com.mysql + mysql-connector-j provided @@ -80,8 +80,8 @@ - mysql - mysql-connector-java + com.mysql + mysql-connector-j ${cs.mysql.version} diff --git a/tools/marvin/setup.py b/tools/marvin/setup.py index 8eccbedb7a4..515670f6e7e 100644 --- a/tools/marvin/setup.py +++ b/tools/marvin/setup.py @@ -27,7 +27,7 @@ except ImportError: raise RuntimeError("python setuptools is required to build Marvin") -VERSION = "4.19.1.0-SNAPSHOT" +VERSION = "4.19.1.0" setup(name="Marvin", version=VERSION, diff --git a/usage/pom.xml b/usage/pom.xml index b17a0461617..044b353a8fe 100644 --- a/usage/pom.xml +++ b/usage/pom.xml @@ -59,8 +59,8 @@ commons-daemon - mysql - mysql-connector-java + com.mysql + mysql-connector-j provided 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")); } diff --git a/utils/pom.xml b/utils/pom.xml index cf9a3d3b4b2..d52903a1df9 100755 --- a/utils/pom.xml +++ b/utils/pom.xml @@ -125,8 +125,9 @@ - mysql - mysql-connector-java + com.mysql + mysql-connector-j + ${cs.mysql.version} test