33
33
* Options to control the Cluster topology refreshing of {@link RedisClusterClient}.
34
34
*
35
35
* @author Mark Paluch
36
+ * @author Tihomir Mateev
36
37
* @since 4.2
37
38
*/
38
39
public class ClusterTopologyRefreshOptions {
39
40
40
- public static final Set <RefreshTrigger > DEFAULT_ADAPTIVE_REFRESH_TRIGGERS = Collections .emptySet ();
41
+ /** Since Lettuce 7.0 all adaptive triggers are enabled by default */
42
+ public static final Set <RefreshTrigger > DEFAULT_ADAPTIVE_REFRESH_TRIGGERS = EnumSet .allOf (RefreshTrigger .class );
41
43
42
- public static final long DEFAULT_ADAPTIVE_REFRESH_TIMEOUT = 30 ;
44
+ /** Since Lettuce 7.0 the default adaptive refresh timeout is 5 seconds */
45
+ public static final long DEFAULT_ADAPTIVE_REFRESH_TIMEOUT = 5 ;
43
46
47
+ @ Deprecated
44
48
public static final TimeUnit DEFAULT_ADAPTIVE_REFRESH_TIMEOUT_UNIT = TimeUnit .SECONDS ;
45
49
46
50
public static final Duration DEFAULT_ADAPTIVE_REFRESH_TIMEOUT_DURATION = Duration
@@ -54,6 +58,7 @@ public class ClusterTopologyRefreshOptions {
54
58
55
59
public static final long DEFAULT_REFRESH_PERIOD = 60 ;
56
60
61
+ @ Deprecated
57
62
public static final TimeUnit DEFAULT_REFRESH_PERIOD_UNIT = TimeUnit .SECONDS ;
58
63
59
64
public static final Duration DEFAULT_REFRESH_PERIOD_DURATION = Duration .ofSeconds (DEFAULT_REFRESH_PERIOD );
@@ -159,12 +164,16 @@ private Builder() {
159
164
* Enables adaptive topology refreshing using one or more {@link RefreshTrigger triggers}. Adaptive refresh triggers
160
165
* initiate topology view updates based on events happened during Redis Cluster operations. Adaptive triggers lead to an
161
166
* immediate topology refresh. Adaptive triggered refreshes are rate-limited using a timeout since events can happen on
162
- * a large scale. Adaptive refresh triggers are disabled by default. See also
167
+ * a large scale. Adaptive refresh triggers are all enabled by default. See also
163
168
* {@link #adaptiveRefreshTriggersTimeout(long, TimeUnit)} and {@link RefreshTrigger}.
164
169
*
165
170
* @param refreshTrigger one or more {@link RefreshTrigger} to enabled
166
171
* @return {@code this}
172
+ * @deprecated Starting from 7.0, this method has no effect as all adaptive triggers are enabled by default.
173
+ * @see #disableAllAdaptiveRefreshTriggers()
174
+ * @see #disableAdaptiveRefreshTrigger(RefreshTrigger...)
167
175
*/
176
+ @ Deprecated
168
177
public Builder enableAdaptiveRefreshTrigger (RefreshTrigger ... refreshTrigger ) {
169
178
170
179
LettuceAssert .notNull (refreshTrigger , "RefreshTriggers must not be null" );
@@ -179,16 +188,56 @@ public Builder enableAdaptiveRefreshTrigger(RefreshTrigger... refreshTrigger) {
179
188
* Enables adaptive topology refreshing using all {@link RefreshTrigger triggers}. Adaptive refresh triggers initiate
180
189
* topology view updates based on events happened during Redis Cluster operations. Adaptive triggers lead to an
181
190
* immediate topology refresh. Adaptive triggered refreshes are rate-limited using a timeout since events can happen on
182
- * a large scale. Adaptive refresh triggers are disabled by default. See also
191
+ * a large scale. Adaptive refresh triggers are all enabled by default. See also
183
192
* {@link #adaptiveRefreshTriggersTimeout(long, TimeUnit)} and {@link RefreshTrigger}.
184
193
*
185
194
* @return {@code this}
195
+ * @deprecated Starting from 7.0, this method has no effect as all adaptive triggers are enabled by default.
196
+ * @see #disableAllAdaptiveRefreshTriggers()
197
+ * @see #disableAdaptiveRefreshTrigger(RefreshTrigger...)
186
198
*/
199
+ @ Deprecated
187
200
public Builder enableAllAdaptiveRefreshTriggers () {
188
201
adaptiveRefreshTriggers .addAll (EnumSet .allOf (RefreshTrigger .class ));
189
202
return this ;
190
203
}
191
204
205
+ /**
206
+ * Disables adaptive topology refreshing using one or more {@link RefreshTrigger triggers}. Adaptive refresh triggers
207
+ * initiate topology view updates based on events happened during Redis Cluster operations. Adaptive triggers lead to an
208
+ * immediate topology refresh. Adaptive triggered refreshes are rate-limited using a timeout since events can happen on
209
+ * a large scale. Adaptive refresh triggers are all enabled by default. See also
210
+ * {@link #adaptiveRefreshTriggersTimeout(long, TimeUnit)} and {@link RefreshTrigger}.
211
+ *
212
+ * @param refreshTrigger one or more {@link RefreshTrigger} to enabled
213
+ * @return {@code this}
214
+ * @since 7.0
215
+ */
216
+ public Builder disableAdaptiveRefreshTrigger (RefreshTrigger ... refreshTrigger ) {
217
+
218
+ LettuceAssert .notNull (refreshTrigger , "RefreshTriggers must not be null" );
219
+ LettuceAssert .noNullElements (refreshTrigger , "RefreshTriggers must not contain null elements" );
220
+ LettuceAssert .notEmpty (refreshTrigger , "RefreshTriggers must contain at least one element" );
221
+
222
+ Arrays .asList (refreshTrigger ).forEach (adaptiveRefreshTriggers ::remove );
223
+ return this ;
224
+ }
225
+
226
+ /**
227
+ * Disables adaptive topology refreshing using all {@link RefreshTrigger triggers}. Adaptive refresh triggers initiate
228
+ * topology view updates based on events happened during Redis Cluster operations. Adaptive triggers lead to an
229
+ * immediate topology refresh. Adaptive triggered refreshes are rate-limited using a timeout since events can happen on
230
+ * a large scale. Adaptive refresh triggers are all enabled by default. See also
231
+ * {@link #adaptiveRefreshTriggersTimeout(long, TimeUnit)} and {@link RefreshTrigger}.
232
+ *
233
+ * @return {@code this}
234
+ * @since 7.0
235
+ */
236
+ public Builder disableAllAdaptiveRefreshTriggers () {
237
+ adaptiveRefreshTriggers .clear ();
238
+ return this ;
239
+ }
240
+
192
241
/**
193
242
* Set the timeout for adaptive topology updates. This timeout is to rate-limit topology updates initiated by refresh
194
243
* triggers to one topology refresh per timeout. Defaults to {@literal 30 SECONDS}. See {@link #DEFAULT_REFRESH_PERIOD}
0 commit comments