diff --git a/atomix/cluster/src/main/java/io/atomix/cluster/messaging/impl/NettyMessagingService.java b/atomix/cluster/src/main/java/io/atomix/cluster/messaging/impl/NettyMessagingService.java index 08145608bd10..a716854079bf 100644 --- a/atomix/cluster/src/main/java/io/atomix/cluster/messaging/impl/NettyMessagingService.java +++ b/atomix/cluster/src/main/java/io/atomix/cluster/messaging/impl/NettyMessagingService.java @@ -220,11 +220,13 @@ public CompletableFuture sendAndReceive( final var timeoutFuture = timeoutExecutor.schedule( - () -> - responseFuture.completeExceptionally( - new TimeoutException( - String.format( - "Request %s to %s timed out in %s", message, address, timeout))), + () -> { + responseFuture.completeExceptionally( + new TimeoutException( + String.format( + "Request %s to %s timed out in %s", message, address, timeout))); + openFutures.remove(responseFuture); + }, timeout.toNanos(), TimeUnit.NANOSECONDS); responseFuture.whenComplete((ignored, error) -> timeoutFuture.cancel(true));