@@ -48,6 +48,10 @@ public class IoConfig {
4848 public static final boolean DEFAULT_TCP_KEEPALIVE_ENABLED = true ;
4949 public static final Duration DEFAULT_TCP_KEEPALIVE_TIME = Duration .ofSeconds (60 );
5050 public static final Duration DEFAULT_CONFIG_POLL_INTERVAL = Duration .ofMillis (2500 );
51+
52+ @ Stability .Volatile
53+ public static final boolean DEFAULT_CONFIG_NOTIFICATIONS = true ;
54+
5155 public static final NetworkResolution DEFAULT_NETWORK_RESOLUTION = NetworkResolution .AUTO ;
5256 public static final int DEFAULT_NUM_KV_CONNECTIONS = 1 ;
5357 public static final int DEFAULT_MAX_HTTP_CONNECTIONS = AbstractPooledEndpointServiceConfig .DEFAULT_MAX_ENDPOINTS ;
@@ -63,6 +67,7 @@ public class IoConfig {
6367
6468 private final boolean mutationTokensEnabled ;
6569 private final Duration configPollInterval ;
70+ private final boolean configNotifications ;
6671 private final CircuitBreakerConfig kvCircuitBreakerConfig ;
6772 private final CircuitBreakerConfig queryCircuitBreakerConfig ;
6873 private final CircuitBreakerConfig viewCircuitBreakerConfig ;
@@ -93,6 +98,7 @@ private IoConfig(Builder builder) {
9398 configPollInterval = Optional
9499 .ofNullable (builder .configPollInterval )
95100 .orElse (DEFAULT_CONFIG_POLL_INTERVAL );
101+ configNotifications = builder .configNotifications ;
96102 kvCircuitBreakerConfig = builder .kvCircuitBreakerConfig .build ();
97103 queryCircuitBreakerConfig = builder .queryCircuitBreakerConfig .build ();
98104 viewCircuitBreakerConfig = builder .viewCircuitBreakerConfig .build ();
@@ -377,6 +383,11 @@ public Duration configPollInterval() {
377383 return configPollInterval ;
378384 }
379385
386+ @ Stability .Volatile
387+ public boolean configNotifications () {
388+ return configNotifications ;
389+ }
390+
380391 /**
381392 * Lists the services on which traffic should be captured.
382393 *
@@ -481,6 +492,7 @@ public static class Builder {
481492
482493 private boolean mutationTokensEnabled = DEFAULT_MUTATION_TOKENS_ENABLED ;
483494 private Duration configPollInterval ;
495+ private boolean configNotifications = DEFAULT_CONFIG_NOTIFICATIONS ;
484496 private CircuitBreakerConfig .Builder kvCircuitBreakerConfig = CircuitBreakerConfig .builder ().enabled (false );
485497 private CircuitBreakerConfig .Builder queryCircuitBreakerConfig = CircuitBreakerConfig .builder ().enabled (false );
486498 private CircuitBreakerConfig .Builder viewCircuitBreakerConfig = CircuitBreakerConfig .builder ().enabled (false );
@@ -576,6 +588,24 @@ public Builder configPollInterval(Duration configPollInterval) {
576588 return this ;
577589 }
578590
591+ /**
592+ * Call this with a value of false to disable server-initiated
593+ * cluster topology change notifications.
594+ * <p>
595+ * This setting is independent of {@link #configPollInterval(Duration)},
596+ * which controls the interval of client-initiated topology change detection.
597+ * <p>
598+ * Please leave this setting at the default unless advised by
599+ * Couchbase Technical Support.
600+ * <p>
601+ * Defaults to true.
602+ */
603+ @ Stability .Volatile
604+ public Builder configNotifications (boolean enabled ) {
605+ this .configNotifications = enabled ;
606+ return this ;
607+ }
608+
579609 /**
580610 * Configures whether mutation tokens will be returned from the server for all mutation operations.
581611 *
0 commit comments