@@ -105,10 +105,8 @@ public CompletionStage<Map<RedisURI, Partitions>> loadViews(Iterable<RedisURI> s
105
105
Requests requestedTopology = connections .requestTopology (commandTimeoutNs , TimeUnit .NANOSECONDS );
106
106
Requests requestedInfo = connections .requestInfo (commandTimeoutNs , TimeUnit .NANOSECONDS );
107
107
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 -> {
112
110
if (discovery && isEventLoopActive ()) {
113
111
114
112
Set <RedisURI > allKnownUris = views .getClusterNodes ();
@@ -130,10 +128,7 @@ public CompletionStage<Map<RedisURI, Partitions>> loadViews(Iterable<RedisURI> s
130
128
.requestInfo (commandTimeoutNs , TimeUnit .NANOSECONDS ).mergeWith (requestedInfo );
131
129
return CompletableFuture
132
130
.allOf (additionalTopology .allCompleted (), additionalClients .allCompleted ())
133
- .thenApply (ignore2 -> {
134
-
135
- return getNodeSpecificViews (additionalTopology , additionalClients );
136
- });
131
+ .thenCompose (ignore2 -> getNodeSpecificViewsAsync (additionalTopology , additionalClients ));
137
132
});
138
133
}
139
134
@@ -286,6 +281,13 @@ NodeTopologyViews getNodeSpecificViews(Requests requestedTopology, Requests requ
286
281
return new NodeTopologyViews (views );
287
282
}
288
283
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
+
289
291
private static boolean validNode (RedisClusterNode redisClusterNode ) {
290
292
291
293
if (redisClusterNode .is (RedisClusterNode .NodeFlag .NOADDR )) {
0 commit comments