This is an automated email from the ASF dual-hosted git repository. vorburger pushed a commit to branch develop in repository https://gitbox.apache.org/repos/asf/fineract.git
commit 53e8658d74604acaf6e3b959f2431c31f7c0d867 Author: Michael Vorburger <[email protected]> AuthorDate: Sat Mar 28 15:06:15 2020 +0100 apply Hikari's recommended MySQL Configuration (FINERACT-796) from https://github.com/brettwooldridge/HikariCP/wiki/MySQL-Configuration and https://github.com/brettwooldridge/HikariCP/wiki/JDBC-Logging#mysql-connectorj --- .../TomcatJdbcDataSourcePerTenantService.java | 21 +++++++++++++++++++++ .../resources/META-INF/spring/hikariDataSource.xml | 13 +++++++++---- 2 files changed, 30 insertions(+), 4 deletions(-) diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/service/TomcatJdbcDataSourcePerTenantService.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/service/TomcatJdbcDataSourcePerTenantService.java index 48a2bbb..71be36e 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/service/TomcatJdbcDataSourcePerTenantService.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/service/TomcatJdbcDataSourcePerTenantService.java @@ -86,11 +86,32 @@ public class TomcatJdbcDataSourcePerTenantService implements RoutingDataSourceSe config.setJdbcUrl(jdbcUrl); config.setUsername(tenantConnectionObj.getSchemaUsername()); config.setPassword(tenantConnectionObj.getSchemaPassword()); + config.setMinimumIdle(tenantConnectionObj.getInitialSize()); + config.setMaximumPoolSize(tenantConnectionObj.getMaxActive()); config.setConnectionTestQuery("SELECT 1"); config.setValidationTimeout(tenantConnectionObj.getValidationInterval()); config.setAutoCommit(true); + // https://github.com/brettwooldridge/HikariCP/wiki/MBean-(JMX)-Monitoring-and-Management + config.setRegisterMbeans(true); + // https://github.com/brettwooldridge/HikariCP/wiki/MySQL-Configuration + // These are the properties for each Tenant DB; the same configuration is also in src/main/resources/META-INF/spring/hikariDataSource.xml for the all Tenants DB --> + config.addDataSourceProperty("cachePrepStmts", "true"); + config.addDataSourceProperty("prepStmtCacheSize", "250"); + config.addDataSourceProperty("prepStmtCacheSqlLimit", "2048"); + config.addDataSourceProperty("useServerPrepStmts", "true"); + config.addDataSourceProperty("useLocalSessionState", "true"); + config.addDataSourceProperty("rewriteBatchedStatements", "true"); + config.addDataSourceProperty("cacheResultSetMetadata", "true"); + config.addDataSourceProperty("cacheServerConfiguration", "true"); + config.addDataSourceProperty("elideSetAutoCommits", "true"); + config.addDataSourceProperty("maintainTimeStats", "false"); + + // https://github.com/brettwooldridge/HikariCP/wiki/JDBC-Logging#mysql-connectorj + config.addDataSourceProperty("logger", "com.mysql.jdbc.log.StandardLogger"); + config.addDataSourceProperty("logSlowQueries", "true"); + config.addDataSourceProperty("dumpQueriesOnException", "true"); return new HikariDataSource(config); } diff --git a/fineract-provider/src/main/resources/META-INF/spring/hikariDataSource.xml b/fineract-provider/src/main/resources/META-INF/spring/hikariDataSource.xml index 1ee2108..1ba0ba0 100644 --- a/fineract-provider/src/main/resources/META-INF/spring/hikariDataSource.xml +++ b/fineract-provider/src/main/resources/META-INF/spring/hikariDataSource.xml @@ -44,21 +44,26 @@ <property name="idleTimeout" value="60000" /> <property name="ConnectionTestQuery" value="SELECT 1" /> - <!-- https://github.com/brettwooldridge/HikariCP/wiki/MySQL-Configuration --> + <!-- These are the properties for the all Tenants DB; the same configuration is also (hard-coded) in the TomcatJdbcDataSourcePerTenantService class --> <property name="dataSourceProperties"> <props> + <!-- https://github.com/brettwooldridge/HikariCP/wiki/MySQL-Configuration --> <prop key="cachePrepStmts">true</prop> <prop key="prepStmtCacheSize">250</prop> <prop key="prepStmtCacheSqlLimit">2048</prop> <prop key="useServerPrepStmts">true</prop> <prop key="useLocalSessionState">true</prop> - <prop key="rewriteBatchedStatements">true</prop> <prop key="cacheResultSetMetadata">true</prop> <prop key="cacheServerConfiguration">true</prop> <prop key="elideSetAutoCommits">true</prop> - <prop key="maintainTimeStats">true</prop> + <prop key="maintainTimeStats">false</prop> + + <!-- https://github.com/brettwooldridge/HikariCP/wiki/JDBC-Logging#mysql-connectorj --> + <prop key="logger">com.mysql.jdbc.log.StandardLogger</prop> + <prop key="logSlowQueries">true</prop> + <prop key="dumpQueriesOnException">true</prop> </props> - </property> + </property> </bean> </beans>
