diff --git a/obp-api/src/main/resources/props/sample.props.template b/obp-api/src/main/resources/props/sample.props.template index 9ef3a3bfcf..4c2583218d 100644 --- a/obp-api/src/main/resources/props/sample.props.template +++ b/obp-api/src/main/resources/props/sample.props.template @@ -34,14 +34,16 @@ connector=star #OBP uses Hikari as the default database connection pool. OBP supports the following 5 configurations at the moment. #https://github.com/brettwooldridge/HikariCP#frequently-used -#hikari.connectionTimeout= -#hikari.maximumPoolSize= -#hikari.idleTimeout= +# All values are in milliseconds unless noted otherwise. Defaults match HikariCP built-in defaults +# except keepaliveTime which defaults to 30000 (HikariCP default is 0 = disabled). +#hikari.connectionTimeout=30000 +#hikari.maximumPoolSize=10 +#hikari.idleTimeout=600000 # keepaliveTime must be set below the database/firewall idle TCP timeout to prevent stale-connection # failures on the first call after a period of inactivity. HikariCP will ping each idle connection # at this interval (in ms), keeping it alive. Recommended: 30000 (30s) when DB/firewall timeout is ~60s. #hikari.keepaliveTime=30000 -#hikari.maxLifetime= +#hikari.maxLifetime=1800000 ## if connector = star, then need to set which connectors will be used. For now, obp support rest, akka. starConnector_supported_types=mapped,internal diff --git a/obp-api/src/main/scala/bootstrap/liftweb/CustomDBVendor.scala b/obp-api/src/main/scala/bootstrap/liftweb/CustomDBVendor.scala index 763c7ca4ae..90f9e5987d 100644 --- a/obp-api/src/main/scala/bootstrap/liftweb/CustomDBVendor.scala +++ b/obp-api/src/main/scala/bootstrap/liftweb/CustomDBVendor.scala @@ -27,25 +27,17 @@ class CustomDBVendor(driverName: String, object HikariDatasource { val config = new HikariConfig() - val connectionTimeout = APIUtil.getPropsAsLongValue("hikari.connectionTimeout") - val maximumPoolSize = APIUtil.getPropsAsIntValue("hikari.maximumPoolSize") - val idleTimeout = APIUtil.getPropsAsLongValue("hikari.idleTimeout") - val keepaliveTime = APIUtil.getPropsAsLongValue("hikari.keepaliveTime", 30000L) - val maxLifetime = APIUtil.getPropsAsLongValue("hikari.maxLifetime") - - if(connectionTimeout.isDefined){ - config.setConnectionTimeout(connectionTimeout.head) - } - if(maximumPoolSize.isDefined){ - config.setMaximumPoolSize(maximumPoolSize.head) - } - if(idleTimeout.isDefined){ - config.setIdleTimeout(idleTimeout.head) - } + val connectionTimeout = APIUtil.getPropsAsLongValue("hikari.connectionTimeout", 30000L) + val maximumPoolSize = APIUtil.getPropsAsIntValue("hikari.maximumPoolSize", 10) + val idleTimeout = APIUtil.getPropsAsLongValue("hikari.idleTimeout", 600000L) + val keepaliveTime = APIUtil.getPropsAsLongValue("hikari.keepaliveTime", 30000L) + val maxLifetime = APIUtil.getPropsAsLongValue("hikari.maxLifetime", 1800000L) + + config.setConnectionTimeout(connectionTimeout) + config.setMaximumPoolSize(maximumPoolSize) + config.setIdleTimeout(idleTimeout) config.setKeepaliveTime(keepaliveTime) - if(maxLifetime.isDefined){ - config.setMaxLifetime(maxLifetime.head) - } + config.setMaxLifetime(maxLifetime) //Liftweb DB.scala will set all the new connections to false, so here we set default to false val autoCommitValue: Boolean = false config.setAutoCommit(autoCommitValue)