Skip to content

Commit d9775e0

Browse files
be-hasemp911de
authored andcommitted
Use computation thread pool for getNodeSpecificViews #2045
Original pull request: #2048.
1 parent 0c4e90c commit d9775e0

File tree

1 file changed

+10
-8
lines changed

1 file changed

+10
-8
lines changed

src/main/java/io/lettuce/core/cluster/topology/DefaultClusterTopologyRefresh.java

+10-8
Original file line numberDiff line numberDiff line change
@@ -105,10 +105,8 @@ public CompletionStage<Map<RedisURI, Partitions>> loadViews(Iterable<RedisURI> s
105105
Requests requestedTopology = connections.requestTopology(commandTimeoutNs, TimeUnit.NANOSECONDS);
106106
Requests requestedInfo = connections.requestInfo(commandTimeoutNs, TimeUnit.NANOSECONDS);
107107
return CompletableFuture.allOf(requestedTopology.allCompleted(), requestedInfo.allCompleted())
108-
.thenCompose(ignore -> {
109-
110-
NodeTopologyViews views = getNodeSpecificViews(requestedTopology, requestedInfo);
111-
108+
.thenCompose(ignore -> getNodeSpecificViewsAsync(requestedTopology, requestedInfo))
109+
.thenCompose(views -> {
112110
if (discovery && isEventLoopActive()) {
113111

114112
Set<RedisURI> allKnownUris = views.getClusterNodes();
@@ -130,10 +128,7 @@ public CompletionStage<Map<RedisURI, Partitions>> loadViews(Iterable<RedisURI> s
130128
.requestInfo(commandTimeoutNs, TimeUnit.NANOSECONDS).mergeWith(requestedInfo);
131129
return CompletableFuture
132130
.allOf(additionalTopology.allCompleted(), additionalClients.allCompleted())
133-
.thenApply(ignore2 -> {
134-
135-
return getNodeSpecificViews(additionalTopology, additionalClients);
136-
});
131+
.thenCompose(ignore2 -> getNodeSpecificViewsAsync(additionalTopology, additionalClients));
137132
});
138133
}
139134

@@ -286,6 +281,13 @@ NodeTopologyViews getNodeSpecificViews(Requests requestedTopology, Requests requ
286281
return new NodeTopologyViews(views);
287282
}
288283

284+
private CompletableFuture<NodeTopologyViews> getNodeSpecificViewsAsync(Requests requestedTopology, Requests requestedInfo) {
285+
// use computation thread pool
286+
// ref: https://github.com/lettuce-io/lettuce-core/issues/2045
287+
return CompletableFuture.supplyAsync(() -> getNodeSpecificViews(requestedTopology, requestedInfo),
288+
clientResources.eventExecutorGroup());
289+
}
290+
289291
private static boolean validNode(RedisClusterNode redisClusterNode) {
290292

291293
if (redisClusterNode.is(RedisClusterNode.NodeFlag.NOADDR)) {

0 commit comments

Comments
 (0)