Skip to content

Commit af6d9f1

Browse files
committed
Look up only selected fields in getConfigStringValueInternal()
1 parent 3a28a87 commit af6d9f1

File tree

5 files changed

+23
-10
lines changed

5 files changed

+23
-10
lines changed

framework/config/src/main/java/org/apache/cloudstack/framework/config/dao/ConfigurationDao.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,4 +70,6 @@ public interface ConfigurationDao extends GenericDao<ConfigurationVO, String> {
7070
void invalidateCache();
7171

7272
List<ConfigurationVO> searchPartialConfigurations();
73+
74+
String getValueByKey(String key);
7375
}

framework/config/src/main/java/org/apache/cloudstack/framework/config/dao/ConfigurationDaoImpl.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ public class ConfigurationDaoImpl extends GenericDaoBase<ConfigurationVO, String
4444
final SearchBuilder<ConfigurationVO> InstanceSearch;
4545
final SearchBuilder<ConfigurationVO> NameSearch;
4646
final SearchBuilder<ConfigurationVO> PartialSearch;
47+
final SearchBuilder<ConfigurationVO> ConfigValueSearch;
4748

4849
public static final String UPDATE_CONFIGURATION_SQL = "UPDATE configuration SET value = ? WHERE name = ?";
4950

@@ -59,6 +60,10 @@ public ConfigurationDaoImpl() {
5960
PartialSearch.select("name", SearchCriteria.Func.NATIVE, PartialSearch.entity().getName());
6061
PartialSearch.select("groupId", SearchCriteria.Func.NATIVE, PartialSearch.entity().getGroupId());
6162
PartialSearch.select("subGroupId", SearchCriteria.Func.NATIVE, PartialSearch.entity().getSubGroupId());
63+
64+
ConfigValueSearch = createSearchBuilder();
65+
ConfigValueSearch.and("name", ConfigValueSearch.entity().getName(), SearchCriteria.Op.EQ);
66+
ConfigValueSearch.select("value", SearchCriteria.Func.NATIVE, ConfigValueSearch.entity().getValue());
6267
}
6368

6469
@Override
@@ -218,4 +223,12 @@ public List<ConfigurationVO> searchPartialConfigurations() {
218223
SearchCriteria<ConfigurationVO> sc = PartialSearch.create();
219224
return searchIncludingRemoved(sc, null, null, false);
220225
}
226+
227+
@Override
228+
public String getValueByKey(String key) {
229+
SearchCriteria<ConfigurationVO> sc = ConfigValueSearch.create();
230+
sc.setParameters("name", key);
231+
ConfigurationVO configVO = findOneIncludingRemovedBy(sc);
232+
return (configVO == null ? null : configVO.getValue());
233+
}
221234
}

framework/config/src/main/java/org/apache/cloudstack/framework/config/impl/ConfigDepotImpl.java

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -291,11 +291,7 @@ protected String getConfigStringValueInternal(String cacheKey) {
291291
}
292292
return scopedConfigStorage.getConfigValue(scopeId, key);
293293
}
294-
ConfigurationVO configurationVO = _configDao.findById(key);
295-
if (configurationVO != null) {
296-
return configurationVO.getValue();
297-
}
298-
return null;
294+
return _configDao.getValueByKey(key);
299295
}
300296

301297
private String getConfigCacheKey(String key, ConfigKey.Scope scope, Long scopeId) {

framework/config/src/test/java/org/apache/cloudstack/framework/config/impl/ConfigDepotImplTest.java

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -77,9 +77,7 @@ public void testIsNewConfig() {
7777
}
7878

7979
private void runTestGetConfigStringValue(String key, String value) {
80-
ConfigurationVO configurationVO = Mockito.mock(ConfigurationVO.class);
81-
Mockito.when(configurationVO.getValue()).thenReturn(value);
82-
Mockito.when(_configDao.findById(key)).thenReturn(configurationVO);
80+
Mockito.when(_configDao.getValueByKey(key)).thenReturn(value);
8381
String result = configDepotImpl.getConfigStringValue(key, ConfigKey.Scope.Global, null);
8482
Assert.assertEquals(value, result);
8583
}
@@ -100,8 +98,7 @@ private void runTestGetConfigStringValueExpiry(long wait, int configDBRetrieval)
10098
}
10199
String result = configDepotImpl.getConfigStringValue(key, ConfigKey.Scope.Global, null);
102100
Assert.assertEquals(value, result);
103-
Mockito.verify(_configDao, Mockito.times(configDBRetrieval)).findById(key);
104-
101+
Mockito.verify(_configDao, Mockito.times(configDBRetrieval)).getValueByKey(key);
105102
}
106103

107104
@Test

server/src/test/java/com/cloud/vpc/dao/MockConfigurationDaoImpl.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -123,4 +123,9 @@ public void invalidateCache() {
123123
public List<ConfigurationVO> searchPartialConfigurations() {
124124
return List.of();
125125
}
126+
127+
@Override
128+
public String getValueByKey(String key) {
129+
return null;
130+
}
126131
}

0 commit comments

Comments
 (0)