diff --git a/src/main/java/org/redkale/cluster/CacheClusterAgent.java b/src/main/java/org/redkale/cluster/CacheClusterAgent.java index e9d1f79c4..334a0df57 100644 --- a/src/main/java/org/redkale/cluster/CacheClusterAgent.java +++ b/src/main/java/org/redkale/cluster/CacheClusterAgent.java @@ -52,7 +52,7 @@ public class CacheClusterAgent extends ClusterAgent implements Resourcable { super.init(config); this.sourceName = getSourceName(); this.ttls = config.getIntValue("ttls", 10); - if (this.ttls < 5) { + if (this.ttls < 5) { //值不能太小 this.ttls = 10; } } @@ -121,7 +121,7 @@ public class CacheClusterAgent extends ClusterAgent implements Resourcable { if (this.taskFuture != null) { this.taskFuture.cancel(true); } - this.taskFuture = this.scheduler.scheduleAtFixedRate(newTask(), Math.max(2000, ttls * 1000), Math.max(2000, ttls * 1000), TimeUnit.MILLISECONDS); + this.taskFuture = this.scheduler.scheduleAtFixedRate(newTask(), ttls, ttls, TimeUnit.SECONDS); } private Runnable newTask() { @@ -208,15 +208,22 @@ public class CacheClusterAgent extends ClusterAgent implements Resourcable { } private CompletableFuture> queryAddress(final String serviceName) { - final CompletableFuture> future = source.hscanAsync(serviceName, AddressEntry.class, new AtomicLong(), 10000); - return future.thenApply(map -> { - final Set set = new HashSet<>(); + return queryAddress0(serviceName, new HashSet<>(), new AtomicLong()); + } + + private CompletableFuture> queryAddress0(final String serviceName, final Set set, final AtomicLong cursor) { + final CompletableFuture> future = source.hscanAsync(serviceName, AddressEntry.class, cursor, 10000); + return future.thenCompose(map -> { map.forEach((n, v) -> { if (v != null && (System.currentTimeMillis() - v.time) / 1000 < ttls) { set.add(v.addr); } }); - return set; + if (cursor.get() == 0) { + return CompletableFuture.completedFuture(set); + } else { + return queryAddress0(serviceName, set, cursor); + } }); } diff --git a/src/main/java/org/redkale/cluster/HttpClusterRpcClient.java b/src/main/java/org/redkale/cluster/HttpClusterRpcClient.java index 998ecc1e6..06cf987ed 100644 --- a/src/main/java/org/redkale/cluster/HttpClusterRpcClient.java +++ b/src/main/java/org/redkale/cluster/HttpClusterRpcClient.java @@ -18,7 +18,7 @@ import static org.redkale.util.Utility.isEmpty; import static org.redkale.util.Utility.isNotEmpty; /** - * 没有配置MQ的情况下依赖ClusterAgent实现的默认HttpMessageClient实例 + * 没有配置MQ的情况下依赖ClusterAgent实现的默认HttpRpcClient实例 * *

* 详情见: https://redkale.org diff --git a/src/main/java/org/redkale/cluster/HttpLocalRpcClient.java b/src/main/java/org/redkale/cluster/HttpLocalRpcClient.java index eec8c3b73..398723761 100644 --- a/src/main/java/org/redkale/cluster/HttpLocalRpcClient.java +++ b/src/main/java/org/redkale/cluster/HttpLocalRpcClient.java @@ -63,6 +63,9 @@ public class HttpLocalRpcClient extends HttpRpcClient { } } } + if (nodeHttpServer == null) { + throw new HttpException("Not found HttpServer"); + } this.currServer = nodeHttpServer.getServer(); } return this.currServer; diff --git a/src/main/java/org/redkale/net/sncp/SncpClient.java b/src/main/java/org/redkale/net/sncp/SncpClient.java index 02acf6a35..21fac3085 100644 --- a/src/main/java/org/redkale/net/sncp/SncpClient.java +++ b/src/main/java/org/redkale/net/sncp/SncpClient.java @@ -27,12 +27,13 @@ public class SncpClient extends Client