Skip to content

Commit 2d8ae2d

Browse files
authored
fix(acquisition): avoid infinite connection timeout if there is a limit (#1689)
As acquisition timeout effectively includes connection timeout, the latter should not be left infinite when the former is limited.
1 parent 96e397d commit 2d8ae2d

File tree

1 file changed

+11
-2
lines changed

1 file changed

+11
-2
lines changed

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

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -366,6 +366,15 @@ private BoltConnectionSourceFactory createPooledBoltConnectionSource(
366366
boltConnectionProviderFactory);
367367
var listeningBoltConnectionProvider = BoltConnectionListener.listeningBoltConnectionProvider(
368368
boltConnectionProvider, boltConnectionListener);
369+
var connectTimeoutMillisAdjusted = connectTimeoutMillis;
370+
var connectionAcquisitionTimeoutMillis = config.connectionAcquisitionTimeoutMillis();
371+
if (connectTimeoutMillisAdjusted == 0 && connectionAcquisitionTimeoutMillis > 0) {
372+
connectTimeoutMillisAdjusted = (int) connectionAcquisitionTimeoutMillis;
373+
if (connectTimeoutMillisAdjusted != connectionAcquisitionTimeoutMillis) {
374+
throw new IllegalStateException(
375+
"Failed to determine connection timeout from acquisition timeout due to overflow, set connection timeout to non zero value");
376+
}
377+
}
369378
return new PooledBoltConnectionSource(
370379
loggingProvider,
371380
clock,
@@ -374,14 +383,14 @@ private BoltConnectionSourceFactory createPooledBoltConnectionSource(
374383
authTokenManager,
375384
createSecurityPlanSupplierWithHostname(securityPlanSupplier, expectedVerificationHostname),
376385
config.maxConnectionPoolSize(),
377-
config.connectionAcquisitionTimeoutMillis(),
386+
connectionAcquisitionTimeoutMillis,
378387
config.maxConnectionLifetimeMillis(),
379388
config.idleTimeBeforeConnectionTest(),
380389
observationProvider,
381390
routingContextAddress,
382391
boltAgent,
383392
userAgent,
384-
connectTimeoutMillis,
393+
connectTimeoutMillisAdjusted,
385394
notificationConfig,
386395
PooledBoltConnectionSource.TimeoutPolicy.DEFAULT);
387396
};

0 commit comments

Comments
 (0)