@@ -94,29 +94,33 @@ protected void activateTopologyRefreshIfNeeded() {
94
94
/**
95
95
* Suspend (cancel) periodic topology refresh.
96
96
*/
97
- public void suspendTopologyRefresh () {
97
+ public CompletableFuture <Void > suspendTopologyRefresh () {
98
+ CompletableFuture <Void > completionFuture = new CompletableFuture <>();
98
99
99
100
if (clusterTopologyRefreshActivated .compareAndSet (true , false )) {
100
-
101
101
ScheduledFuture <?> scheduledFuture = clusterTopologyRefreshFuture .get ();
102
102
103
103
try {
104
- scheduledFuture .cancel (false );
105
- clusterTopologyRefreshFuture .set (null );
104
+ if (scheduledFuture != null ) {
105
+ scheduledFuture .cancel (false );
106
+ clusterTopologyRefreshFuture .set (null );
107
+ }
108
+ completionFuture .complete (null );
106
109
} catch (Exception e ) {
107
110
logger .debug ("Could not cancel Cluster topology refresh" , e );
111
+ completionFuture .completeExceptionally (e );
108
112
}
113
+ } else {
114
+ completionFuture .complete (null );
109
115
}
116
+
117
+ return completionFuture ;
110
118
}
111
119
112
120
public boolean isTopologyRefreshInProgress () {
113
121
return clusterTopologyRefreshTask .get ();
114
122
}
115
123
116
- public CompletableFuture <Void > getTopologyRefreshCompletionFuture () {
117
- return clusterTopologyRefreshTask .getCompletionFuture ();
118
- }
119
-
120
124
@ Override
121
125
public void run () {
122
126
@@ -322,16 +326,10 @@ private static class ClusterTopologyRefreshTask extends AtomicBoolean implements
322
326
323
327
private final Supplier <CompletionStage <?>> reloadTopologyAsync ;
324
328
325
- private final CompletableFuture <Void > completionFuture = new CompletableFuture <>();
326
-
327
329
ClusterTopologyRefreshTask (Supplier <CompletionStage <?>> reloadTopologyAsync ) {
328
330
this .reloadTopologyAsync = reloadTopologyAsync ;
329
331
}
330
332
331
- public CompletableFuture <Void > getCompletionFuture () {
332
- return completionFuture ;
333
- }
334
-
335
333
public void run () {
336
334
337
335
if (compareAndSet (false , true )) {
@@ -354,16 +352,12 @@ void doRun() {
354
352
355
353
if (throwable != null ) {
356
354
logger .warn ("Cannot refresh Redis Cluster topology" , throwable );
357
- completionFuture .completeExceptionally (throwable );
358
- } else {
359
- completionFuture .complete (null );
360
355
}
361
356
362
357
set (false );
363
358
});
364
359
} catch (Exception e ) {
365
360
logger .warn ("Cannot refresh Redis Cluster topology" , e );
366
- completionFuture .completeExceptionally (e );
367
361
}
368
362
}
369
363
0 commit comments