diff --git a/driver/src/main/java/org/neo4j/driver/internal/bolt/pooledimpl/PooledBoltConnection.java b/driver/src/main/java/org/neo4j/driver/internal/bolt/pooledimpl/PooledBoltConnection.java index 267485a641..5395759fb5 100644 --- a/driver/src/main/java/org/neo4j/driver/internal/bolt/pooledimpl/PooledBoltConnection.java +++ b/driver/src/main/java/org/neo4j/driver/internal/bolt/pooledimpl/PooledBoltConnection.java @@ -269,9 +269,17 @@ public CompletionStage forceClose(String reason) { @Override public CompletionStage close() { - if (closeFuture == null) { - closeFuture = new CompletableFuture<>(); + CompletableFuture closeFuture; + var close = false; + synchronized (this) { + if (this.closeFuture == null) { + this.closeFuture = new CompletableFuture<>(); + close = true; + } + closeFuture = this.closeFuture; + } + if (close) { if (delegate.state() == BoltConnectionState.CLOSED) { purgeRunnable.run(); closeFuture.complete(null);