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>

Reply via email to