shwstppr commented on code in PR #9518:
URL: https://github.com/apache/cloudstack/pull/9518#discussion_r1732237338
##########
framework/db/src/main/java/com/cloud/utils/db/TransactionLegacy.java:
##########
@@ -1226,45 +1220,84 @@ private static DataSource createDataSource(String uri,
String username, String p
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);
+ String validationQuery, Integer
isolationLevel,
+ String dsName) {
+ HikariConfig config = new HikariConfig();
+ config.setJdbcUrl(uri);
+ config.setUsername(username);
+ config.setPassword(password);
+
+ config.setPoolName(dsName);
+ if (maxActive != null) {
+ config.setMaximumPoolSize(maxActive);
+ } else {
+ config.setMaximumPoolSize(250); // 250 connections
}
- if (isolationLevel != null) {
-
poolableConnectionFactory.setDefaultTransactionIsolation(isolationLevel);
+ if (maxIdle != null) {
+ config.setIdleTimeout(maxIdle * 1000);
+ } else {
+ config.setIdleTimeout(30000); // 30 seconds
}
- 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 (maxWait != null) {
+ config.setMaxLifetime(maxWait);
+ } else {
+ config.setMaxLifetime(600000); // 10 minutes
+ }
+
+ // Connection pool properties
+ config.setMinimumIdle(5); // Minimum number of idle
connections in the pool
+ config.setConnectionTimeout(30000); // 30 seconds in milliseconds
+ config.setKeepaliveTime(600000); // Keepalive time in milliseconds
(10 minutes)
+ config.setIdleTimeout(300000); // 5 minutes
+ //config.setMinimumIdle(maxIdle);
Review Comment:
@rohityadavcloud sure, will check and move them to db.properties.
Currently looking into failure while setting simulator CI env in GH actions.
Getting errors like,
```
Error: Failed to execute goal
org.codehaus.mojo:exec-maven-plugin:1.2.1:java (create-schema) on project
cloud-developer: An exception occured while executing the Java class. null:
InvocationTargetException: Unable to upgrade the database: Unable to execute
upgrade script: Expression #47 of SELECT list is not in GROUP BY clause and
contains nonaggregated column 'cloud.offering_details.value' which is not
functionally dependent on columns in GROUP BY clause; this is incompatible with
sql_mode=only_full_group_by -> [Help 1]
```
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]