Skip to content

Commit 787d8fd

Browse files
committed
Fix convictionPolicy connection counter go negative
DefaultConvictionPolicy.openConnections can become negative: ``` java.lang.AssertionError at com.datastax.driver.core.ConvictionPolicy$DefaultConvictionPolicy.signalConnectionClosed(ConvictionPolicy.java:90) at com.datastax.driver.core.Connection.closeAsync(Connection.java:953) at com.datastax.driver.core.HostConnectionPool.discardAvailableConnections(HostConnectionPool.java:882) at com.datastax.driver.core.HostConnectionPool.closeAsync(HostConnectionPool.java:843) ``` Reason is that signalConnectionsOpening is not guarded against negative number in `count`
1 parent cd0b08e commit 787d8fd

File tree

1 file changed

+4
-0
lines changed

1 file changed

+4
-0
lines changed

driver-core/src/main/java/com/datastax/driver/core/Connection.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,7 @@
7979
import java.net.ServerSocket;
8080
import java.security.InvalidParameterException;
8181
import java.text.MessageFormat;
82+
import java.util.Collections;
8283
import java.util.HashMap;
8384
import java.util.HashSet;
8485
import java.util.Iterator;
@@ -1330,6 +1331,9 @@ Connection open(HostConnectionPool pool, int shardId, int serverPort)
13301331
* start them.
13311332
*/
13321333
List<Connection> newConnections(HostConnectionPool pool, int count) {
1334+
if (count <= 0) {
1335+
return Collections.emptyList();
1336+
}
13331337
pool.host.convictionPolicy.signalConnectionsOpening(count);
13341338
List<Connection> connections = Lists.newArrayListWithCapacity(count);
13351339
for (int i = 0; i < count; i++)

0 commit comments

Comments
 (0)