Skip to content

Commit 5613e17

Browse files
authored
Merge pull request #432 from lutovich/1.5-deprecate-idleConnectionPoolSize
Deprecated 'idleConnectionPoolSize' config option
2 parents 0bfa545 + b8db2f0 commit 5613e17

File tree

7 files changed

+69
-60
lines changed

7 files changed

+69
-60
lines changed

driver/src/main/java/org/neo4j/driver/internal/DriverFactory.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -103,10 +103,10 @@ protected ConnectionPool createConnectionPool( AuthToken authToken, SecurityPlan
103103
Clock clock = createClock();
104104
ConnectionSettings settings = new ConnectionSettings( authToken, config.connectionTimeoutMillis() );
105105
ChannelConnector connector = createConnector( settings, securityPlan, config, clock );
106-
PoolSettings poolSettings = new PoolSettings( config.maxIdleConnectionPoolSize(),
107-
config.idleTimeBeforeConnectionTest(), config.maxConnectionLifetimeMillis(),
108-
config.maxConnectionPoolSize(),
109-
config.connectionAcquisitionTimeoutMillis() );
106+
PoolSettings poolSettings = new PoolSettings( config.maxConnectionPoolSize(),
107+
config.connectionAcquisitionTimeoutMillis(), config.maxConnectionLifetimeMillis(),
108+
config.idleTimeBeforeConnectionTest()
109+
);
110110
return new ConnectionPoolImpl( connector, bootstrap, poolSettings, config.logging(), clock );
111111
}
112112

driver/src/main/java/org/neo4j/driver/internal/async/pool/PoolSettings.java

Lines changed: 6 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -25,30 +25,22 @@ public class PoolSettings
2525
public static final int NOT_CONFIGURED = -1;
2626

2727
public static final int DEFAULT_MAX_CONNECTION_POOL_SIZE = 100;
28-
public static final int DEFAULT_MAX_IDLE_CONNECTION_POOL_SIZE = DEFAULT_MAX_CONNECTION_POOL_SIZE;
2928
public static final long DEFAULT_IDLE_TIME_BEFORE_CONNECTION_TEST = NOT_CONFIGURED;
3029
public static final long DEFAULT_MAX_CONNECTION_LIFETIME = TimeUnit.HOURS.toMillis( 1 );
3130
public static final long DEFAULT_CONNECTION_ACQUISITION_TIMEOUT = TimeUnit.SECONDS.toMillis( 60 );
3231

33-
private final int maxIdleConnectionPoolSize;
34-
private final long idleTimeBeforeConnectionTest;
35-
private final long maxConnectionLifetime;
3632
private final int maxConnectionPoolSize;
3733
private final long connectionAcquisitionTimeout;
34+
private final long maxConnectionLifetime;
35+
private final long idleTimeBeforeConnectionTest;
3836

39-
public PoolSettings( int maxIdleConnectionPoolSize, long idleTimeBeforeConnectionTest, long maxConnectionLifetime,
40-
int maxConnectionPoolSize, long connectionAcquisitionTimeout )
37+
public PoolSettings( int maxConnectionPoolSize, long connectionAcquisitionTimeout,
38+
long maxConnectionLifetime, long idleTimeBeforeConnectionTest )
4139
{
42-
this.maxIdleConnectionPoolSize = maxIdleConnectionPoolSize;
43-
this.idleTimeBeforeConnectionTest = idleTimeBeforeConnectionTest;
44-
this.maxConnectionLifetime = maxConnectionLifetime;
4540
this.maxConnectionPoolSize = maxConnectionPoolSize;
4641
this.connectionAcquisitionTimeout = connectionAcquisitionTimeout;
47-
}
48-
49-
public int maxIdleConnectionPoolSize()
50-
{
51-
return maxIdleConnectionPoolSize;
42+
this.maxConnectionLifetime = maxConnectionLifetime;
43+
this.idleTimeBeforeConnectionTest = idleTimeBeforeConnectionTest;
5244
}
5345

5446
public long idleTimeBeforeConnectionTest()

driver/src/main/java/org/neo4j/driver/v1/Config.java

Lines changed: 38 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@
3838
/**
3939
* A configuration class to config driver properties.
4040
* <p>
41-
* To create a config:
41+
* To build a simple config with custom logging implementation:
4242
* <pre>
4343
* {@code
4444
* Config config = Config
@@ -47,6 +47,20 @@
4747
* .toConfig();
4848
* }
4949
* </pre>
50+
* <p>
51+
* To build a more complicated config with tuned connection pool options:
52+
* <pre>
53+
* {@code
54+
* Config config = Config.build()
55+
* .withEncryption()
56+
* .withConnectionTimeout(10, TimeUnit.SECONDS)
57+
* .withMaxConnectionLifetime(30, TimeUnit.MINUTES)
58+
* .withMaxConnectionPoolSize(10)
59+
* .withConnectionAcquisitionTimeout(20, TimeUnit.SECONDS)
60+
* .toConfig();
61+
* }
62+
* </pre>
63+
*
5064
* @since 1.0
5165
*/
5266
@Immutable
@@ -56,7 +70,6 @@ public class Config
5670
private final Logging logging;
5771
private final boolean logLeakedSessions;
5872

59-
private final int maxIdleConnectionPoolSize;
6073
private final int maxConnectionPoolSize;
6174

6275
private final long idleTimeBeforeConnectionTest;
@@ -83,7 +96,6 @@ private Config( ConfigBuilder builder)
8396

8497
this.idleTimeBeforeConnectionTest = builder.idleTimeBeforeConnectionTest;
8598
this.maxConnectionLifetimeMillis = builder.maxConnectionLifetimeMillis;
86-
this.maxIdleConnectionPoolSize = builder.maxIdleConnectionPoolSize;
8799
this.maxConnectionPoolSize = builder.maxConnectionPoolSize;
88100
this.connectionAcquisitionTimeoutMillis = builder.connectionAcquisitionTimeoutMillis;
89101

@@ -117,21 +129,26 @@ public boolean logLeakedSessions()
117129

118130
/**
119131
* Max number of connections per URL for this driver.
132+
*
120133
* @return the max number of connections
134+
* @deprecated please use {@link #maxConnectionPoolSize()} instead.
121135
*/
122136
@Deprecated
123137
public int connectionPoolSize()
124138
{
125-
return maxIdleConnectionPoolSize;
139+
return maxConnectionPoolSize;
126140
}
127141

128142
/**
129143
* Max number of idle connections per URL for this driver.
144+
*
130145
* @return the max number of connections
146+
* @deprecated please use {@link #maxConnectionPoolSize()} instead.
131147
*/
148+
@Deprecated
132149
public int maxIdleConnectionPoolSize()
133150
{
134-
return maxIdleConnectionPoolSize;
151+
return maxConnectionPoolSize;
135152
}
136153

137154
/**
@@ -243,7 +260,6 @@ public static class ConfigBuilder
243260
{
244261
private Logging logging = new JULogging( Level.INFO );
245262
private boolean logLeakedSessions;
246-
private int maxIdleConnectionPoolSize = PoolSettings.DEFAULT_MAX_IDLE_CONNECTION_POOL_SIZE;
247263
private int maxConnectionPoolSize = PoolSettings.DEFAULT_MAX_CONNECTION_POOL_SIZE;
248264
private long idleTimeBeforeConnectionTest = PoolSettings.DEFAULT_IDLE_TIME_BEFORE_CONNECTION_TEST;
249265
private long maxConnectionLifetimeMillis = PoolSettings.DEFAULT_MAX_CONNECTION_LIFETIME;
@@ -311,46 +327,56 @@ public ConfigBuilder withLeakedSessionsLogging()
311327
* The max number of sessions to keep open at once. Configure this
312328
* higher if you want more concurrent sessions, or lower if you want
313329
* to lower the pressure on the database instance.
314-
*
330+
* <p>
315331
* If the driver is asked to provide more sessions than this, it will
316332
* block waiting for another session to be closed, with a timeout.
333+
* <p>
334+
* Method is deprecated and will forward the given argument to {@link #withMaxConnectionPoolSize(int)}.
317335
*
318336
* @param size the max number of sessions to keep open
319337
* @return this builder
338+
* @deprecated please use a combination of {@link #withMaxConnectionPoolSize(int)} and
339+
* {@link #withConnectionAcquisitionTimeout(long, TimeUnit)} instead.
320340
*/
321341
@Deprecated
322342
public ConfigBuilder withMaxSessions( int size )
323343
{
324-
return this;
344+
return withMaxConnectionPoolSize( size );
325345
}
326346

327347
/**
328348
* The max number of idle sessions to keep open at once. Configure this
329349
* higher if you want more concurrent sessions, or lower if you want
330350
* to lower the pressure on the database instance.
351+
* <p>
352+
* Method is deprecated and will not change the driver configuration.
331353
*
332354
* @param size the max number of idle sessions to keep open
333355
* @return this builder
334-
* @deprecated please use {@link #withMaxIdleConnections(int)} instead.
356+
* @deprecated please use a combination of {@link #withMaxConnectionPoolSize(int)} and
357+
* {@link #withConnectionAcquisitionTimeout(long, TimeUnit)} instead.
335358
*/
336359
@Deprecated
337360
public ConfigBuilder withMaxIdleSessions( int size )
338361
{
339-
this.maxIdleConnectionPoolSize = size;
340362
return this;
341363
}
342364

343365
/**
344366
* The max number of idle connections to keep open at once. Configure this
345367
* higher for greater concurrency, or lower to reduce the pressure on the
346368
* database instance.
369+
* <p>
370+
* Method is deprecated and will not change the driver configuration.
347371
*
348372
* @param size the max number of idle connections to keep open
349373
* @return this builder
374+
* @deprecated please use a combination of {@link #withMaxConnectionPoolSize(int)} and
375+
* {@link #withConnectionAcquisitionTimeout(long, TimeUnit)} instead.
350376
*/
377+
@Deprecated
351378
public ConfigBuilder withMaxIdleConnections( int size )
352379
{
353-
this.maxIdleConnectionPoolSize = size;
354380
return this;
355381
}
356382

@@ -366,8 +392,7 @@ public ConfigBuilder withMaxIdleConnections( int size )
366392
@Deprecated
367393
public ConfigBuilder withSessionLivenessCheckTimeout( long timeout )
368394
{
369-
withConnectionLivenessCheckTimeout( timeout, TimeUnit.MILLISECONDS );
370-
return this;
395+
return withConnectionLivenessCheckTimeout( timeout, TimeUnit.MILLISECONDS );
371396
}
372397

373398
/**

driver/src/test/java/org/neo4j/driver/internal/async/pool/ConnectionPoolImplTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -169,7 +169,7 @@ private ConnectionPoolImpl newPool() throws Exception
169169
ChannelConnectorImpl connector =
170170
new ChannelConnectorImpl( connectionSettings, SecurityPlan.forAllCertificates(),
171171
DEV_NULL_LOGGING, clock );
172-
PoolSettings poolSettings = new PoolSettings( 5, -1, -1, 10, 5000 );
172+
PoolSettings poolSettings = new PoolSettings( 10, 5000, -1, -1 );
173173
Bootstrap bootstrap = BootstrapFactory.newBootstrap( 1 );
174174
return new ConnectionPoolImpl( connector, bootstrap, poolSettings, DEV_NULL_LOGGING, clock );
175175
}

driver/src/test/java/org/neo4j/driver/internal/async/pool/NettyChannelHealthCheckerTest.java

Lines changed: 10 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,6 @@
4141
import static org.neo4j.driver.internal.async.pool.PoolSettings.DEFAULT_CONNECTION_ACQUISITION_TIMEOUT;
4242
import static org.neo4j.driver.internal.async.pool.PoolSettings.DEFAULT_IDLE_TIME_BEFORE_CONNECTION_TEST;
4343
import static org.neo4j.driver.internal.async.pool.PoolSettings.DEFAULT_MAX_CONNECTION_POOL_SIZE;
44-
import static org.neo4j.driver.internal.async.pool.PoolSettings.DEFAULT_MAX_IDLE_CONNECTION_POOL_SIZE;
4544
import static org.neo4j.driver.internal.async.pool.PoolSettings.NOT_CONFIGURED;
4645
import static org.neo4j.driver.internal.logging.DevNullLogging.DEV_NULL_LOGGING;
4746
import static org.neo4j.driver.internal.util.Iterables.single;
@@ -67,14 +66,13 @@ public void tearDown()
6766
@Test
6867
public void shouldDropTooOldChannelsWhenMaxLifetimeEnabled()
6968
{
70-
int maxConnectionLifetime = 1000;
71-
PoolSettings settings = new PoolSettings( DEFAULT_MAX_IDLE_CONNECTION_POOL_SIZE,
72-
DEFAULT_IDLE_TIME_BEFORE_CONNECTION_TEST, maxConnectionLifetime, DEFAULT_MAX_CONNECTION_POOL_SIZE,
73-
DEFAULT_CONNECTION_ACQUISITION_TIMEOUT );
69+
int maxLifetime = 1000;
70+
PoolSettings settings = new PoolSettings( DEFAULT_MAX_CONNECTION_POOL_SIZE,
71+
DEFAULT_CONNECTION_ACQUISITION_TIMEOUT, maxLifetime, DEFAULT_IDLE_TIME_BEFORE_CONNECTION_TEST );
7472
Clock clock = Clock.SYSTEM;
7573
NettyChannelHealthChecker healthChecker = newHealthChecker( settings, clock );
7674

77-
setCreationTimestamp( channel, clock.millis() - maxConnectionLifetime * 2 );
75+
setCreationTimestamp( channel, clock.millis() - maxLifetime * 2 );
7876
Future<Boolean> healthy = healthChecker.isHealthy( channel );
7977

8078
assertThat( await( healthy ), is( false ) );
@@ -83,9 +81,8 @@ public void shouldDropTooOldChannelsWhenMaxLifetimeEnabled()
8381
@Test
8482
public void shouldAllowVeryOldChannelsWhenMaxLifetimeDisabled()
8583
{
86-
PoolSettings settings = new PoolSettings( DEFAULT_MAX_IDLE_CONNECTION_POOL_SIZE,
87-
DEFAULT_IDLE_TIME_BEFORE_CONNECTION_TEST, NOT_CONFIGURED, DEFAULT_MAX_CONNECTION_POOL_SIZE,
88-
DEFAULT_CONNECTION_ACQUISITION_TIMEOUT );
84+
PoolSettings settings = new PoolSettings( DEFAULT_MAX_CONNECTION_POOL_SIZE,
85+
DEFAULT_CONNECTION_ACQUISITION_TIMEOUT, NOT_CONFIGURED, DEFAULT_IDLE_TIME_BEFORE_CONNECTION_TEST );
8986
NettyChannelHealthChecker healthChecker = newHealthChecker( settings, Clock.SYSTEM );
9087

9188
setCreationTimestamp( channel, 0 );
@@ -121,9 +118,8 @@ public void shouldDropInactiveConnections()
121118
private void testPing( boolean resetMessageSuccessful )
122119
{
123120
int idleTimeBeforeConnectionTest = 1000;
124-
PoolSettings settings = new PoolSettings( DEFAULT_MAX_IDLE_CONNECTION_POOL_SIZE,
125-
idleTimeBeforeConnectionTest, NOT_CONFIGURED, DEFAULT_MAX_CONNECTION_POOL_SIZE,
126-
DEFAULT_CONNECTION_ACQUISITION_TIMEOUT );
121+
PoolSettings settings = new PoolSettings( DEFAULT_MAX_CONNECTION_POOL_SIZE,
122+
DEFAULT_CONNECTION_ACQUISITION_TIMEOUT, NOT_CONFIGURED, idleTimeBeforeConnectionTest );
127123
Clock clock = Clock.SYSTEM;
128124
NettyChannelHealthChecker healthChecker = newHealthChecker( settings, clock );
129125

@@ -149,9 +145,8 @@ private void testPing( boolean resetMessageSuccessful )
149145

150146
private void testActiveConnectionCheck( boolean channelActive )
151147
{
152-
PoolSettings settings = new PoolSettings( DEFAULT_MAX_IDLE_CONNECTION_POOL_SIZE,
153-
DEFAULT_IDLE_TIME_BEFORE_CONNECTION_TEST, NOT_CONFIGURED, DEFAULT_MAX_CONNECTION_POOL_SIZE,
154-
DEFAULT_CONNECTION_ACQUISITION_TIMEOUT );
148+
PoolSettings settings = new PoolSettings( DEFAULT_MAX_CONNECTION_POOL_SIZE,
149+
DEFAULT_CONNECTION_ACQUISITION_TIMEOUT, NOT_CONFIGURED, DEFAULT_IDLE_TIME_BEFORE_CONNECTION_TEST );
155150
Clock clock = Clock.SYSTEM;
156151
NettyChannelHealthChecker healthChecker = newHealthChecker( settings, clock );
157152

driver/src/test/java/org/neo4j/driver/internal/async/pool/PoolSettingsTest.java

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,6 @@
2020

2121
import org.junit.Test;
2222

23-
import org.neo4j.driver.internal.async.pool.PoolSettings;
24-
2523
import static org.junit.Assert.assertEquals;
2624
import static org.junit.Assert.assertFalse;
2725
import static org.junit.Assert.assertTrue;
@@ -31,7 +29,7 @@ public class PoolSettingsTest
3129
@Test
3230
public void idleTimeBeforeConnectionTestWhenConfigured()
3331
{
34-
PoolSettings settings = new PoolSettings( 10, 42, 10, 5, -1 );
32+
PoolSettings settings = new PoolSettings( 5, -1, 10, 42 );
3533
assertTrue( settings.idleTimeBeforeConnectionTestEnabled() );
3634
assertEquals( 42, settings.idleTimeBeforeConnectionTest() );
3735
}
@@ -40,7 +38,7 @@ public void idleTimeBeforeConnectionTestWhenConfigured()
4038
public void idleTimeBeforeConnectionTestWhenSetToZero()
4139
{
4240
//Always test idle time during acquisition
43-
PoolSettings settings = new PoolSettings( 10, 0, 10, 5, -1 );
41+
PoolSettings settings = new PoolSettings( 5, -1, 10, 0 );
4442
assertTrue( settings.idleTimeBeforeConnectionTestEnabled() );
4543
assertEquals( 0, settings.idleTimeBeforeConnectionTest() );
4644
}
@@ -57,7 +55,7 @@ public void idleTimeBeforeConnectionTestWhenSetToNegativeValue()
5755
@Test
5856
public void maxConnectionLifetimeWhenConfigured()
5957
{
60-
PoolSettings settings = new PoolSettings( 10, 10, 42, 5, -1 );
58+
PoolSettings settings = new PoolSettings( 5, -1, 42, 10 );
6159
assertTrue( settings.maxConnectionLifetimeEnabled() );
6260
assertEquals( 42, settings.maxConnectionLifetime() );
6361
}
@@ -73,13 +71,13 @@ public void maxConnectionLifetimeWhenSetToZeroOrNegativeValue()
7371

7472
private static void testIdleTimeBeforeConnectionTestWithIllegalValue( int value )
7573
{
76-
PoolSettings settings = new PoolSettings( 10, value, 10, 5, -1 );
74+
PoolSettings settings = new PoolSettings( 5, -1, 10, value );
7775
assertFalse( settings.idleTimeBeforeConnectionTestEnabled() );
7876
}
7977

8078
private static void testMaxConnectionLifetimeWithIllegalValue( int value )
8179
{
82-
PoolSettings settings = new PoolSettings( 10, 10, value, 5, -1 );
80+
PoolSettings settings = new PoolSettings( 5, -1, value, 10 );
8381
assertFalse( settings.maxConnectionLifetimeEnabled() );
8482
}
8583
}

driver/src/test/java/org/neo4j/driver/v1/integration/ConnectionHandlingIT.java

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -298,9 +298,9 @@ protected ConnectionPool createConnectionPool( AuthToken authToken, SecurityPlan
298298
Bootstrap bootstrap, Config config )
299299
{
300300
ConnectionSettings connectionSettings = new ConnectionSettings( authToken, 1000 );
301-
PoolSettings poolSettings = new PoolSettings( config.maxIdleConnectionPoolSize(),
302-
config.idleTimeBeforeConnectionTest(), config.maxConnectionLifetimeMillis(),
303-
config.maxConnectionPoolSize(), config.connectionAcquisitionTimeoutMillis() );
301+
PoolSettings poolSettings = new PoolSettings( config.maxConnectionPoolSize(),
302+
config.connectionAcquisitionTimeoutMillis(), config.maxConnectionLifetimeMillis(),
303+
config.idleTimeBeforeConnectionTest() );
304304
Clock clock = createClock();
305305
ChannelConnector connector = super.createConnector( connectionSettings, securityPlan, config, clock );
306306
connectionPool =
@@ -314,9 +314,8 @@ private static class MemorizingConnectionPool extends ConnectionPoolImpl
314314
Connection lastAcquiredConnectionSpy;
315315
boolean memorize;
316316

317-
public MemorizingConnectionPool( ChannelConnector connector,
318-
Bootstrap bootstrap, PoolSettings settings, Logging logging,
319-
Clock clock )
317+
MemorizingConnectionPool( ChannelConnector connector, Bootstrap bootstrap, PoolSettings settings,
318+
Logging logging, Clock clock )
320319
{
321320
super( connector, bootstrap, settings, logging, clock );
322321
}

0 commit comments

Comments
 (0)