From af6d9f1e0c669794b48a3d05dfda98fcae549cd9 Mon Sep 17 00:00:00 2001 From: Abhisar Sinha <63767682+abh1sar@users.noreply.github.com> Date: Fri, 28 Feb 2025 13:36:59 +0530 Subject: [PATCH 1/6] Look up only selected fields in getConfigStringValueInternal() --- .../framework/config/dao/ConfigurationDao.java | 2 ++ .../framework/config/dao/ConfigurationDaoImpl.java | 13 +++++++++++++ .../framework/config/impl/ConfigDepotImpl.java | 6 +----- .../framework/config/impl/ConfigDepotImplTest.java | 7 ++----- .../com/cloud/vpc/dao/MockConfigurationDaoImpl.java | 5 +++++ 5 files changed, 23 insertions(+), 10 deletions(-) diff --git a/framework/config/src/main/java/org/apache/cloudstack/framework/config/dao/ConfigurationDao.java b/framework/config/src/main/java/org/apache/cloudstack/framework/config/dao/ConfigurationDao.java index c464b12571c1..7ee912996329 100644 --- a/framework/config/src/main/java/org/apache/cloudstack/framework/config/dao/ConfigurationDao.java +++ b/framework/config/src/main/java/org/apache/cloudstack/framework/config/dao/ConfigurationDao.java @@ -70,4 +70,6 @@ public interface ConfigurationDao extends GenericDao { void invalidateCache(); List searchPartialConfigurations(); + + String getValueByKey(String key); } diff --git a/framework/config/src/main/java/org/apache/cloudstack/framework/config/dao/ConfigurationDaoImpl.java b/framework/config/src/main/java/org/apache/cloudstack/framework/config/dao/ConfigurationDaoImpl.java index 5b941f8fccc6..bd98eb84bb45 100644 --- a/framework/config/src/main/java/org/apache/cloudstack/framework/config/dao/ConfigurationDaoImpl.java +++ b/framework/config/src/main/java/org/apache/cloudstack/framework/config/dao/ConfigurationDaoImpl.java @@ -44,6 +44,7 @@ public class ConfigurationDaoImpl extends GenericDaoBase InstanceSearch; final SearchBuilder NameSearch; final SearchBuilder PartialSearch; + final SearchBuilder ConfigValueSearch; public static final String UPDATE_CONFIGURATION_SQL = "UPDATE configuration SET value = ? WHERE name = ?"; @@ -59,6 +60,10 @@ public ConfigurationDaoImpl() { PartialSearch.select("name", SearchCriteria.Func.NATIVE, PartialSearch.entity().getName()); PartialSearch.select("groupId", SearchCriteria.Func.NATIVE, PartialSearch.entity().getGroupId()); PartialSearch.select("subGroupId", SearchCriteria.Func.NATIVE, PartialSearch.entity().getSubGroupId()); + + ConfigValueSearch = createSearchBuilder(); + ConfigValueSearch.and("name", ConfigValueSearch.entity().getName(), SearchCriteria.Op.EQ); + ConfigValueSearch.select("value", SearchCriteria.Func.NATIVE, ConfigValueSearch.entity().getValue()); } @Override @@ -218,4 +223,12 @@ public List searchPartialConfigurations() { SearchCriteria sc = PartialSearch.create(); return searchIncludingRemoved(sc, null, null, false); } + + @Override + public String getValueByKey(String key) { + SearchCriteria sc = ConfigValueSearch.create(); + sc.setParameters("name", key); + ConfigurationVO configVO = findOneIncludingRemovedBy(sc); + return (configVO == null ? null : configVO.getValue()); + } } diff --git a/framework/config/src/main/java/org/apache/cloudstack/framework/config/impl/ConfigDepotImpl.java b/framework/config/src/main/java/org/apache/cloudstack/framework/config/impl/ConfigDepotImpl.java index b1c3c5d9a27f..8c9477fc7d5d 100644 --- a/framework/config/src/main/java/org/apache/cloudstack/framework/config/impl/ConfigDepotImpl.java +++ b/framework/config/src/main/java/org/apache/cloudstack/framework/config/impl/ConfigDepotImpl.java @@ -291,11 +291,7 @@ protected String getConfigStringValueInternal(String cacheKey) { } return scopedConfigStorage.getConfigValue(scopeId, key); } - ConfigurationVO configurationVO = _configDao.findById(key); - if (configurationVO != null) { - return configurationVO.getValue(); - } - return null; + return _configDao.getValueByKey(key); } private String getConfigCacheKey(String key, ConfigKey.Scope scope, Long scopeId) { diff --git a/framework/config/src/test/java/org/apache/cloudstack/framework/config/impl/ConfigDepotImplTest.java b/framework/config/src/test/java/org/apache/cloudstack/framework/config/impl/ConfigDepotImplTest.java index ed752165aeb0..b4c5f1a7addd 100644 --- a/framework/config/src/test/java/org/apache/cloudstack/framework/config/impl/ConfigDepotImplTest.java +++ b/framework/config/src/test/java/org/apache/cloudstack/framework/config/impl/ConfigDepotImplTest.java @@ -77,9 +77,7 @@ public void testIsNewConfig() { } private void runTestGetConfigStringValue(String key, String value) { - ConfigurationVO configurationVO = Mockito.mock(ConfigurationVO.class); - Mockito.when(configurationVO.getValue()).thenReturn(value); - Mockito.when(_configDao.findById(key)).thenReturn(configurationVO); + Mockito.when(_configDao.getValueByKey(key)).thenReturn(value); String result = configDepotImpl.getConfigStringValue(key, ConfigKey.Scope.Global, null); Assert.assertEquals(value, result); } @@ -100,8 +98,7 @@ private void runTestGetConfigStringValueExpiry(long wait, int configDBRetrieval) } String result = configDepotImpl.getConfigStringValue(key, ConfigKey.Scope.Global, null); Assert.assertEquals(value, result); - Mockito.verify(_configDao, Mockito.times(configDBRetrieval)).findById(key); - + Mockito.verify(_configDao, Mockito.times(configDBRetrieval)).getValueByKey(key); } @Test diff --git a/server/src/test/java/com/cloud/vpc/dao/MockConfigurationDaoImpl.java b/server/src/test/java/com/cloud/vpc/dao/MockConfigurationDaoImpl.java index 90373724724a..e202dc2c0149 100644 --- a/server/src/test/java/com/cloud/vpc/dao/MockConfigurationDaoImpl.java +++ b/server/src/test/java/com/cloud/vpc/dao/MockConfigurationDaoImpl.java @@ -123,4 +123,9 @@ public void invalidateCache() { public List searchPartialConfigurations() { return List.of(); } + + @Override + public String getValueByKey(String key) { + return null; + } } From adf411a219fc94ef373173c4fe5e6a74ff1de41f Mon Sep 17 00:00:00 2001 From: Abhishek Kumar Date: Wed, 5 Mar 2025 18:54:17 +0530 Subject: [PATCH 2/6] fix column cache issue Signed-off-by: Abhishek Kumar --- .../upgrade/dao/Upgrade42010to42100.java | 12 +++++++---- .../java/com/cloud/utils/db/GenericDao.java | 2 ++ .../com/cloud/utils/db/GenericDaoBase.java | 20 +++++++++++++++++++ 3 files changed, 30 insertions(+), 4 deletions(-) diff --git a/engine/schema/src/main/java/com/cloud/upgrade/dao/Upgrade42010to42100.java b/engine/schema/src/main/java/com/cloud/upgrade/dao/Upgrade42010to42100.java index d6dc85dbb9aa..992b2d9ce5a3 100644 --- a/engine/schema/src/main/java/com/cloud/upgrade/dao/Upgrade42010to42100.java +++ b/engine/schema/src/main/java/com/cloud/upgrade/dao/Upgrade42010to42100.java @@ -16,10 +16,6 @@ // under the License. package com.cloud.upgrade.dao; -import com.cloud.upgrade.SystemVmTemplateRegistration; -import com.cloud.utils.db.TransactionLegacy; -import com.cloud.utils.exception.CloudRuntimeException; - import java.io.InputStream; import java.sql.Connection; import java.sql.PreparedStatement; @@ -27,6 +23,12 @@ import java.util.List; import org.apache.cloudstack.framework.config.ConfigKey; +import org.apache.cloudstack.framework.config.dao.ConfigurationDao; +import org.apache.cloudstack.framework.config.dao.ConfigurationDaoImpl; + +import com.cloud.upgrade.SystemVmTemplateRegistration; +import com.cloud.utils.db.TransactionLegacy; +import com.cloud.utils.exception.CloudRuntimeException; public class Upgrade42010to42100 extends DbUpgradeAbstractImpl implements DbUpgrade, DbUpgradeSystemVmTemplate { private SystemVmTemplateRegistration systemVmTemplateRegistration; @@ -98,6 +100,8 @@ protected void migrateConfigurationScopeToBitmask(Connection conn) { migrateExistingConfigurationScopeValues(conn); DbUpgradeUtils.dropTableColumnsIfExist(conn, "configuration", List.of("scope")); DbUpgradeUtils.changeTableColumnIfNotExist(conn, "configuration", "new_scope", "scope", "BIGINT NOT NULL DEFAULT 0 COMMENT 'Bitmask for scope(s) of this parameter'"); + ConfigurationDao dao = new ConfigurationDaoImpl(); + dao.markForColumnsRefresh(); } protected void migrateExistingConfigurationScopeValues(Connection conn) { diff --git a/framework/db/src/main/java/com/cloud/utils/db/GenericDao.java b/framework/db/src/main/java/com/cloud/utils/db/GenericDao.java index 44c312ea9d80..1562f1f7f278 100644 --- a/framework/db/src/main/java/com/cloud/utils/db/GenericDao.java +++ b/framework/db/src/main/java/com/cloud/utils/db/GenericDao.java @@ -311,4 +311,6 @@ public interface GenericDao { Integer countAll(); List findByUuids(String... uuidArray); + + default void markForColumnsRefresh() {} } diff --git a/framework/db/src/main/java/com/cloud/utils/db/GenericDaoBase.java b/framework/db/src/main/java/com/cloud/utils/db/GenericDaoBase.java index bf6fb03563f8..2b68a3ed885b 100644 --- a/framework/db/src/main/java/com/cloud/utils/db/GenericDaoBase.java +++ b/framework/db/src/main/java/com/cloud/utils/db/GenericDaoBase.java @@ -42,9 +42,11 @@ import java.util.Date; import java.util.Enumeration; import java.util.HashMap; +import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Optional; +import java.util.Set; import java.util.TimeZone; import java.util.UUID; import java.util.concurrent.ConcurrentHashMap; @@ -129,8 +131,11 @@ public abstract class GenericDaoBase extends Compone protected final static TimeZone s_gmtTimeZone = TimeZone.getTimeZone("GMT"); protected final static Map, GenericDao> s_daoMaps = new ConcurrentHashMap, GenericDao>(71); + + private final static Set tableWithColumnsNeedRefresh = new HashSet<>(); private final ConversionSupport _conversionSupport; + protected Class _entityBeanType; protected String _table; @@ -1914,6 +1919,7 @@ protected T toVO(ResultSet result, boolean cache) throws SQLException { @DB() protected void toEntityBean(final ResultSet result, final T entity) throws SQLException { + refreshColumnsIfNeeded(); ResultSetMetaData meta = result.getMetaData(); for (int index = 1, max = meta.getColumnCount(); index <= max; index++) { setField(entity, result, meta, index); @@ -2481,4 +2487,18 @@ public static class SumCount { public SumCount() { } } + + @Override + public void markForColumnsRefresh() { + tableWithColumnsNeedRefresh.add(_table); + } + + private void refreshColumnsIfNeeded() { + if (!tableWithColumnsNeedRefresh.contains(_table)) { + return; + } + final SqlGenerator generator = new SqlGenerator(_entityBeanType); + _allColumns = generator.getAllColumns(); + tableWithColumnsNeedRefresh.remove(_table); + } } From b6873ea41b5b590c6d5b50a820fb756ad742cc50 Mon Sep 17 00:00:00 2001 From: Abhisar Sinha <63767682+abh1sar@users.noreply.github.com> Date: Fri, 7 Mar 2025 19:53:18 +0530 Subject: [PATCH 3/6] Revert commit for af6d9f1e0c669794b48a3d05dfda98fcae549cd9 : Look up only selected fields in getConfigStringValueInternal() --- .../framework/config/dao/ConfigurationDao.java | 2 -- .../framework/config/dao/ConfigurationDaoImpl.java | 13 ------------- .../framework/config/impl/ConfigDepotImpl.java | 6 +++++- .../framework/config/impl/ConfigDepotImplTest.java | 6 ++++-- .../com/cloud/vpc/dao/MockConfigurationDaoImpl.java | 5 ----- 5 files changed, 9 insertions(+), 23 deletions(-) diff --git a/framework/config/src/main/java/org/apache/cloudstack/framework/config/dao/ConfigurationDao.java b/framework/config/src/main/java/org/apache/cloudstack/framework/config/dao/ConfigurationDao.java index 7ee912996329..c464b12571c1 100644 --- a/framework/config/src/main/java/org/apache/cloudstack/framework/config/dao/ConfigurationDao.java +++ b/framework/config/src/main/java/org/apache/cloudstack/framework/config/dao/ConfigurationDao.java @@ -70,6 +70,4 @@ public interface ConfigurationDao extends GenericDao { void invalidateCache(); List searchPartialConfigurations(); - - String getValueByKey(String key); } diff --git a/framework/config/src/main/java/org/apache/cloudstack/framework/config/dao/ConfigurationDaoImpl.java b/framework/config/src/main/java/org/apache/cloudstack/framework/config/dao/ConfigurationDaoImpl.java index bd98eb84bb45..5b941f8fccc6 100644 --- a/framework/config/src/main/java/org/apache/cloudstack/framework/config/dao/ConfigurationDaoImpl.java +++ b/framework/config/src/main/java/org/apache/cloudstack/framework/config/dao/ConfigurationDaoImpl.java @@ -44,7 +44,6 @@ public class ConfigurationDaoImpl extends GenericDaoBase InstanceSearch; final SearchBuilder NameSearch; final SearchBuilder PartialSearch; - final SearchBuilder ConfigValueSearch; public static final String UPDATE_CONFIGURATION_SQL = "UPDATE configuration SET value = ? WHERE name = ?"; @@ -60,10 +59,6 @@ public ConfigurationDaoImpl() { PartialSearch.select("name", SearchCriteria.Func.NATIVE, PartialSearch.entity().getName()); PartialSearch.select("groupId", SearchCriteria.Func.NATIVE, PartialSearch.entity().getGroupId()); PartialSearch.select("subGroupId", SearchCriteria.Func.NATIVE, PartialSearch.entity().getSubGroupId()); - - ConfigValueSearch = createSearchBuilder(); - ConfigValueSearch.and("name", ConfigValueSearch.entity().getName(), SearchCriteria.Op.EQ); - ConfigValueSearch.select("value", SearchCriteria.Func.NATIVE, ConfigValueSearch.entity().getValue()); } @Override @@ -223,12 +218,4 @@ public List searchPartialConfigurations() { SearchCriteria sc = PartialSearch.create(); return searchIncludingRemoved(sc, null, null, false); } - - @Override - public String getValueByKey(String key) { - SearchCriteria sc = ConfigValueSearch.create(); - sc.setParameters("name", key); - ConfigurationVO configVO = findOneIncludingRemovedBy(sc); - return (configVO == null ? null : configVO.getValue()); - } } diff --git a/framework/config/src/main/java/org/apache/cloudstack/framework/config/impl/ConfigDepotImpl.java b/framework/config/src/main/java/org/apache/cloudstack/framework/config/impl/ConfigDepotImpl.java index 8c9477fc7d5d..b1c3c5d9a27f 100644 --- a/framework/config/src/main/java/org/apache/cloudstack/framework/config/impl/ConfigDepotImpl.java +++ b/framework/config/src/main/java/org/apache/cloudstack/framework/config/impl/ConfigDepotImpl.java @@ -291,7 +291,11 @@ protected String getConfigStringValueInternal(String cacheKey) { } return scopedConfigStorage.getConfigValue(scopeId, key); } - return _configDao.getValueByKey(key); + ConfigurationVO configurationVO = _configDao.findById(key); + if (configurationVO != null) { + return configurationVO.getValue(); + } + return null; } private String getConfigCacheKey(String key, ConfigKey.Scope scope, Long scopeId) { diff --git a/framework/config/src/test/java/org/apache/cloudstack/framework/config/impl/ConfigDepotImplTest.java b/framework/config/src/test/java/org/apache/cloudstack/framework/config/impl/ConfigDepotImplTest.java index b4c5f1a7addd..5195d2ff3e3a 100644 --- a/framework/config/src/test/java/org/apache/cloudstack/framework/config/impl/ConfigDepotImplTest.java +++ b/framework/config/src/test/java/org/apache/cloudstack/framework/config/impl/ConfigDepotImplTest.java @@ -77,7 +77,9 @@ public void testIsNewConfig() { } private void runTestGetConfigStringValue(String key, String value) { - Mockito.when(_configDao.getValueByKey(key)).thenReturn(value); + ConfigurationVO configurationVO = Mockito.mock(ConfigurationVO.class); + Mockito.when(configurationVO.getValue()).thenReturn(value); + Mockito.when(_configDao.findById(key)).thenReturn(configurationVO); String result = configDepotImpl.getConfigStringValue(key, ConfigKey.Scope.Global, null); Assert.assertEquals(value, result); } @@ -98,7 +100,7 @@ private void runTestGetConfigStringValueExpiry(long wait, int configDBRetrieval) } String result = configDepotImpl.getConfigStringValue(key, ConfigKey.Scope.Global, null); Assert.assertEquals(value, result); - Mockito.verify(_configDao, Mockito.times(configDBRetrieval)).getValueByKey(key); + Mockito.verify(_configDao, Mockito.times(configDBRetrieval)).findById(key); } @Test diff --git a/server/src/test/java/com/cloud/vpc/dao/MockConfigurationDaoImpl.java b/server/src/test/java/com/cloud/vpc/dao/MockConfigurationDaoImpl.java index e202dc2c0149..90373724724a 100644 --- a/server/src/test/java/com/cloud/vpc/dao/MockConfigurationDaoImpl.java +++ b/server/src/test/java/com/cloud/vpc/dao/MockConfigurationDaoImpl.java @@ -123,9 +123,4 @@ public void invalidateCache() { public List searchPartialConfigurations() { return List.of(); } - - @Override - public String getValueByKey(String key) { - return null; - } } From c4b21a8a58791307ef24fbff3fa2f66cba101719 Mon Sep 17 00:00:00 2001 From: Abhisar Sinha <63767682+abh1sar@users.noreply.github.com> Date: Mon, 19 May 2025 08:44:53 +0530 Subject: [PATCH 4/6] call evictConnections to evict idle connections which will drain the metadata cache --- .../cloud/upgrade/DatabaseUpgradeChecker.java | 3 +++ .../java/com/cloud/upgrade/dao/DbUpgrade.java | 2 ++ .../upgrade/dao/Upgrade42010to42100.java | 9 +++++---- .../java/com/cloud/utils/db/GenericDao.java | 2 -- .../com/cloud/utils/db/GenericDaoBase.java | 20 ------------------- .../com/cloud/utils/db/TransactionLegacy.java | 9 +++++++++ 6 files changed, 19 insertions(+), 26 deletions(-) diff --git a/engine/schema/src/main/java/com/cloud/upgrade/DatabaseUpgradeChecker.java b/engine/schema/src/main/java/com/cloud/upgrade/DatabaseUpgradeChecker.java index 1e3b3a7e5ece..827b8f547574 100644 --- a/engine/schema/src/main/java/com/cloud/upgrade/DatabaseUpgradeChecker.java +++ b/engine/schema/src/main/java/com/cloud/upgrade/DatabaseUpgradeChecker.java @@ -379,6 +379,9 @@ private VersionVO executeUpgrade(DbUpgrade upgrade) { } finally { txn.close(); } + if (upgrade.refreshPoolConnectionsAfterUpgrade()) { + TransactionLegacy.refreshConnections(TransactionLegacy.CLOUD_DB); + } return version; } diff --git a/engine/schema/src/main/java/com/cloud/upgrade/dao/DbUpgrade.java b/engine/schema/src/main/java/com/cloud/upgrade/dao/DbUpgrade.java index 02c401c81558..8a3c92940963 100644 --- a/engine/schema/src/main/java/com/cloud/upgrade/dao/DbUpgrade.java +++ b/engine/schema/src/main/java/com/cloud/upgrade/dao/DbUpgrade.java @@ -38,4 +38,6 @@ public interface DbUpgrade { void performDataMigration(Connection conn); InputStream[] getCleanupScripts(); + + default boolean refreshPoolConnectionsAfterUpgrade() { return false; } } diff --git a/engine/schema/src/main/java/com/cloud/upgrade/dao/Upgrade42010to42100.java b/engine/schema/src/main/java/com/cloud/upgrade/dao/Upgrade42010to42100.java index 992b2d9ce5a3..caed11329118 100644 --- a/engine/schema/src/main/java/com/cloud/upgrade/dao/Upgrade42010to42100.java +++ b/engine/schema/src/main/java/com/cloud/upgrade/dao/Upgrade42010to42100.java @@ -23,8 +23,6 @@ import java.util.List; import org.apache.cloudstack.framework.config.ConfigKey; -import org.apache.cloudstack.framework.config.dao.ConfigurationDao; -import org.apache.cloudstack.framework.config.dao.ConfigurationDaoImpl; import com.cloud.upgrade.SystemVmTemplateRegistration; import com.cloud.utils.db.TransactionLegacy; @@ -100,8 +98,6 @@ protected void migrateConfigurationScopeToBitmask(Connection conn) { migrateExistingConfigurationScopeValues(conn); DbUpgradeUtils.dropTableColumnsIfExist(conn, "configuration", List.of("scope")); DbUpgradeUtils.changeTableColumnIfNotExist(conn, "configuration", "new_scope", "scope", "BIGINT NOT NULL DEFAULT 0 COMMENT 'Bitmask for scope(s) of this parameter'"); - ConfigurationDao dao = new ConfigurationDaoImpl(); - dao.markForColumnsRefresh(); } protected void migrateExistingConfigurationScopeValues(Connection conn) { @@ -122,4 +118,9 @@ protected void migrateExistingConfigurationScopeValues(Connection conn) { throw new CloudRuntimeException(String.format("Failed to migrate existing configuration scope values to bitmask due to: %s", e.getMessage())); } } + + @Override + public boolean refreshPoolConnectionsAfterUpgrade() { + return true; + } } diff --git a/framework/db/src/main/java/com/cloud/utils/db/GenericDao.java b/framework/db/src/main/java/com/cloud/utils/db/GenericDao.java index 1562f1f7f278..44c312ea9d80 100644 --- a/framework/db/src/main/java/com/cloud/utils/db/GenericDao.java +++ b/framework/db/src/main/java/com/cloud/utils/db/GenericDao.java @@ -311,6 +311,4 @@ public interface GenericDao { Integer countAll(); List findByUuids(String... uuidArray); - - default void markForColumnsRefresh() {} } diff --git a/framework/db/src/main/java/com/cloud/utils/db/GenericDaoBase.java b/framework/db/src/main/java/com/cloud/utils/db/GenericDaoBase.java index 191d39a66368..301803aab9b6 100644 --- a/framework/db/src/main/java/com/cloud/utils/db/GenericDaoBase.java +++ b/framework/db/src/main/java/com/cloud/utils/db/GenericDaoBase.java @@ -42,11 +42,9 @@ import java.util.Date; import java.util.Enumeration; import java.util.HashMap; -import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Optional; -import java.util.Set; import java.util.TimeZone; import java.util.UUID; import java.util.concurrent.ConcurrentHashMap; @@ -131,11 +129,8 @@ public abstract class GenericDaoBase extends Compone protected final static TimeZone s_gmtTimeZone = TimeZone.getTimeZone("GMT"); protected final static Map, GenericDao> s_daoMaps = new ConcurrentHashMap, GenericDao>(71); - - private final static Set tableWithColumnsNeedRefresh = new HashSet<>(); private final ConversionSupport _conversionSupport; - protected Class _entityBeanType; protected String _table; @@ -1919,7 +1914,6 @@ protected T toVO(ResultSet result, boolean cache) throws SQLException { @DB() protected void toEntityBean(final ResultSet result, final T entity) throws SQLException { - refreshColumnsIfNeeded(); ResultSetMetaData meta = result.getMetaData(); for (int index = 1, max = meta.getColumnCount(); index <= max; index++) { setField(entity, result, meta, index); @@ -2487,18 +2481,4 @@ public static class SumCount { public SumCount() { } } - - @Override - public void markForColumnsRefresh() { - tableWithColumnsNeedRefresh.add(_table); - } - - private void refreshColumnsIfNeeded() { - if (!tableWithColumnsNeedRefresh.contains(_table)) { - return; - } - final SqlGenerator generator = new SqlGenerator(_entityBeanType); - _allColumns = generator.getAllColumns(); - tableWithColumnsNeedRefresh.remove(_table); - } } 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 88af397c06a9..18a90749e49c 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 @@ -605,6 +605,15 @@ public Connection getConnection() throws SQLException { return _conn; } + public static void refreshConnections(final short dbId) { + if (dbId != CLOUD_DB) { + return; + } + if (s_ds instanceof HikariDataSource) { + ((HikariDataSource)s_ds).getHikariPoolMXBean().softEvictConnections(); + } + } + protected boolean takeOver(final String name, final boolean create) { if (_stack.size() != 0) { if (!create) { From 9629f7d942fe1f0baa98704d9a0a5ba6f54473dc Mon Sep 17 00:00:00 2001 From: Abhisar Sinha <63767682+abh1sar@users.noreply.github.com> Date: Tue, 20 May 2025 09:58:25 +0530 Subject: [PATCH 5/6] Update engine/schema/src/main/java/com/cloud/upgrade/dao/DbUpgrade.java MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: João Jandre <48719461+JoaoJandre@users.noreply.github.com> --- .../schema/src/main/java/com/cloud/upgrade/dao/DbUpgrade.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/engine/schema/src/main/java/com/cloud/upgrade/dao/DbUpgrade.java b/engine/schema/src/main/java/com/cloud/upgrade/dao/DbUpgrade.java index 8a3c92940963..70ff58608238 100644 --- a/engine/schema/src/main/java/com/cloud/upgrade/dao/DbUpgrade.java +++ b/engine/schema/src/main/java/com/cloud/upgrade/dao/DbUpgrade.java @@ -39,5 +39,7 @@ public interface DbUpgrade { InputStream[] getCleanupScripts(); - default boolean refreshPoolConnectionsAfterUpgrade() { return false; } + default boolean refreshPoolConnectionsAfterUpgrade() { + return false; + } } From db52b84cfb54712fb3f824e3b12239614cf02a2f Mon Sep 17 00:00:00 2001 From: Abhisar Sinha <63767682+abh1sar@users.noreply.github.com> Date: Tue, 20 May 2025 10:01:36 +0530 Subject: [PATCH 6/6] fix pre-commit failure in DbUpgrade.java --- .../schema/src/main/java/com/cloud/upgrade/dao/DbUpgrade.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/engine/schema/src/main/java/com/cloud/upgrade/dao/DbUpgrade.java b/engine/schema/src/main/java/com/cloud/upgrade/dao/DbUpgrade.java index 70ff58608238..6001f940b2cf 100644 --- a/engine/schema/src/main/java/com/cloud/upgrade/dao/DbUpgrade.java +++ b/engine/schema/src/main/java/com/cloud/upgrade/dao/DbUpgrade.java @@ -39,7 +39,7 @@ public interface DbUpgrade { InputStream[] getCleanupScripts(); - default boolean refreshPoolConnectionsAfterUpgrade() { - return false; + default boolean refreshPoolConnectionsAfterUpgrade() { + return false; } }