diff --git a/ebean-datasource-api/src/main/java/io/ebean/datasource/DataSourceBuilder.java b/ebean-datasource-api/src/main/java/io/ebean/datasource/DataSourceBuilder.java index 501f2f2..55ab062 100644 --- a/ebean-datasource-api/src/main/java/io/ebean/datasource/DataSourceBuilder.java +++ b/ebean-datasource-api/src/main/java/io/ebean/datasource/DataSourceBuilder.java @@ -317,7 +317,7 @@ default DataSourceBuilder readOnly(boolean readOnly) { DataSourceBuilder setReadOnly(boolean readOnly); /** - * Set the minimum number of connections the pool should maintain. + * Set the minimum number of connections the pool should maintain. Defaults to 2 when not set. */ default DataSourceBuilder minConnections(int minConnections) { return setMinConnections(minConnections); @@ -330,7 +330,7 @@ default DataSourceBuilder minConnections(int minConnections) { DataSourceBuilder setMinConnections(int minConnections); /** - * Set the maximum number of connections the pool can reach. + * Set the maximum number of connections the pool can reach. Defaults to 200 when not set. */ default DataSourceBuilder maxConnections(int maxConnections) { return setMaxConnections(maxConnections); @@ -892,12 +892,12 @@ default String driverClassName() { boolean isReadOnly(); /** - * Return the minimum number of connections the pool should maintain. + * Return the minimum number of connections the pool should maintain. Defaults to 2. */ int getMinConnections(); /** - * Return the maximum number of connections the pool can reach. + * Return the maximum number of connections the pool can reach. Defaults to 200. */ int getMaxConnections(); diff --git a/ebean-datasource-api/src/main/java/io/ebean/datasource/DataSourceConfig.java b/ebean-datasource-api/src/main/java/io/ebean/datasource/DataSourceConfig.java index 001106b..93d3cf5 100644 --- a/ebean-datasource-api/src/main/java/io/ebean/datasource/DataSourceConfig.java +++ b/ebean-datasource-api/src/main/java/io/ebean/datasource/DataSourceConfig.java @@ -27,6 +27,7 @@ @SuppressWarnings("removal") public class DataSourceConfig implements DataSourceBuilder.Settings { + private static final int UNSET = -1; private static final String POSTGRES = "postgres"; private String name = ""; @@ -54,8 +55,8 @@ public class DataSourceConfig implements DataSourceBuilder.Settings { * The optional database owner password (for running InitDatabase). */ private String ownerPassword; - private int minConnections = 2; - private int maxConnections = 200; + private int minConnections = UNSET; // defaults to 2 + private int maxConnections = UNSET; // defaults to 200 private int isolationLevel = Connection.TRANSACTION_READ_COMMITTED; private boolean autoCommit; private boolean readOnly; @@ -182,10 +183,10 @@ public DataSourceConfig setDefaults(DataSourceBuilder builder) { if (catalog == null) { catalog = other.catalog(); } - if (minConnections == 2 && other.getMinConnections() < 2) { + if (minConnections == UNSET) { minConnections = other.getMinConnections(); } - if (maxConnections == 200 && other.getMaxConnections() != 200) { + if (maxConnections == UNSET) { maxConnections = other.getMaxConnections(); } if (!shutdownOnJvmExit && other.isShutdownOnJvmExit()) { @@ -413,7 +414,7 @@ public DataSourceConfig setReadOnly(boolean readOnly) { @Override public int getMinConnections() { - return minConnections; + return minConnections == UNSET ? 2 : minConnections; } @Override @@ -424,7 +425,7 @@ public DataSourceConfig setMinConnections(int minConnections) { @Override public int getMaxConnections() { - return maxConnections; + return maxConnections == UNSET ? 200 : maxConnections; } @Override diff --git a/ebean-datasource-api/src/test/java/io/ebean/datasource/DataSourceConfigTest.java b/ebean-datasource-api/src/test/java/io/ebean/datasource/DataSourceConfigTest.java index 77e860b..0f8e61b 100644 --- a/ebean-datasource-api/src/test/java/io/ebean/datasource/DataSourceConfigTest.java +++ b/ebean-datasource-api/src/test/java/io/ebean/datasource/DataSourceConfigTest.java @@ -179,6 +179,19 @@ void setDefaults_when_explicit() { assertThat(readOnly.getMaxConnections()).isEqualTo(22); } + @Test + void setDefaults_when_explicitSameAsNormalDefaults() { + DataSourceConfig readOnly = new DataSourceConfig(); + readOnly.setMinConnections(2); + readOnly.setMaxConnections(200); + + // act + readOnly.setDefaults(create()); + + assertThat(readOnly.getMinConnections()).isEqualTo(2); + assertThat(readOnly.getMaxConnections()).isEqualTo(200); + } + @Test public void defaults_someOverride() { DataSourceConfig readOnly = new DataSourceConfig();