diff --git a/Documentation/config-gerrit.txt b/Documentation/config-gerrit.txt index 211be2e987..29f93b259e 100644 --- a/Documentation/config-gerrit.txt +++ b/Documentation/config-gerrit.txt @@ -1423,7 +1423,7 @@ This setting only applies if Maximum number of connections to keep idle in the pool. If there are more idle connections, connections will be closed instead of being returned back to the pool. -Default is 4. +Default is min(<>, 16). + This setting only applies if <> is true. diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/schema/DataSourceProvider.java b/gerrit-server/src/main/java/com/google/gerrit/server/schema/DataSourceProvider.java index edce7f18a5..0c3bf673e4 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/schema/DataSourceProvider.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/schema/DataSourceProvider.java @@ -129,9 +129,11 @@ public class DataSourceProvider implements Provider, if (password != null && !password.isEmpty()) { ds.setPassword(password); } - ds.setMaxActive(threadSettingsConfig.getDatabasePoolLimit()); + int poolLimit = threadSettingsConfig.getDatabasePoolLimit(); + ds.setMaxActive(poolLimit); ds.setMinIdle(cfg.getInt("database", "poolminidle", 4)); - ds.setMaxIdle(cfg.getInt("database", "poolmaxidle", 4)); + ds.setMaxIdle( + cfg.getInt("database", "poolmaxidle", Math.min(poolLimit, 16))); ds.setMaxWait(ConfigUtil.getTimeUnit(cfg, "database", null, "poolmaxwait", MILLISECONDS.convert(30, SECONDS), MILLISECONDS)); ds.setInitialSize(ds.getMinIdle());