From 989153815f132d6277b2911bb9fabb21551372f1 Mon Sep 17 00:00:00 2001 From: redkale Date: Wed, 6 Dec 2023 21:35:02 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96client?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../org/redkale/cluster/CacheClusterAgent.java | 14 +++++++------- .../org/redkale/net/AsyncNioCompletionHandler.java | 4 ++-- src/main/java/org/redkale/net/client/Client.java | 6 ++++-- 3 files changed, 13 insertions(+), 11 deletions(-) diff --git a/src/main/java/org/redkale/cluster/CacheClusterAgent.java b/src/main/java/org/redkale/cluster/CacheClusterAgent.java index 334a0df57..90a87d81f 100644 --- a/src/main/java/org/redkale/cluster/CacheClusterAgent.java +++ b/src/main/java/org/redkale/cluster/CacheClusterAgent.java @@ -130,14 +130,14 @@ public class CacheClusterAgent extends ClusterAgent implements Resourcable { checkApplicationHealth(); checkHttpAddressHealth(); loadSncpAddressHealth(); - localEntrys.values().stream().filter(e -> !e.canceled).forEach(entry -> { - checkLocalHealth(entry); - }); - remoteEntrys.values().stream().filter(entry -> "SNCP".equalsIgnoreCase(entry.protocol)).forEach(entry -> { - updateSncpAddress(entry); - }); + localEntrys.values().stream() + .filter(e -> !e.canceled) + .forEach(this::checkLocalHealth); + remoteEntrys.values().stream() + .filter(entry -> "SNCP".equalsIgnoreCase(entry.protocol)) + .forEach(this::updateSncpAddress); } catch (Exception e) { - logger.log(Level.SEVERE, "scheduleAtFixedRate check error", e instanceof CompletionException ? ((CompletionException) e).getCause() : e); + logger.log(Level.SEVERE, "scheduleAtFixedRate check error", e); } }; } diff --git a/src/main/java/org/redkale/net/AsyncNioCompletionHandler.java b/src/main/java/org/redkale/net/AsyncNioCompletionHandler.java index a4c854aa5..f48861631 100644 --- a/src/main/java/org/redkale/net/AsyncNioCompletionHandler.java +++ b/src/main/java/org/redkale/net/AsyncNioCompletionHandler.java @@ -67,7 +67,7 @@ class AsyncNioCompletionHandler implements CompletionHandler, Run @Override public void completed(Integer result, A attach) { ScheduledFuture future = this.timeoutFuture; - if (future != null) { + if (future != null && !future.isDone()) { this.timeoutFuture = null; future.cancel(true); } @@ -95,7 +95,7 @@ class AsyncNioCompletionHandler implements CompletionHandler, Run @Override public void failed(Throwable exc, A attach) { ScheduledFuture future = this.timeoutFuture; - if (future != null) { + if (future != null && !future.isDone()) { this.timeoutFuture = null; future.cancel(true); } diff --git a/src/main/java/org/redkale/net/client/Client.java b/src/main/java/org/redkale/net/client/Client.java index 700ce7620..ddfed5baf 100644 --- a/src/main/java/org/redkale/net/client/Client.java +++ b/src/main/java/org/redkale/net/client/Client.java @@ -137,8 +137,10 @@ public abstract class Client, R extends ClientR try { R req = pingRequestSupplier.get(); if (req == null) { //可能运行中进行重新赋值 - timeoutFuture.cancel(true); - timeoutFuture = null; + if (timeoutFuture != null && !timeoutFuture.isDone()) { + timeoutFuture.cancel(true); + timeoutFuture = null; + } return; } long now = System.currentTimeMillis();