From 2cd42449223cb3202de2f290c5f2630a91439b23 Mon Sep 17 00:00:00 2001 From: Nikita Koksharov Date: Fri, 24 Sep 2021 11:34:47 +0300 Subject: [PATCH] Feature - sentinelsDiscovery setting added. #3681 --- .../config/SentinelServersConfig.java | 20 +++++++++++++++++++ .../connection/SentinelConnectionManager.java | 8 +++++++- 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/redisson/src/main/java/org/redisson/config/SentinelServersConfig.java b/redisson/src/main/java/org/redisson/config/SentinelServersConfig.java index 72690e788..9e8540209 100644 --- a/redisson/src/main/java/org/redisson/config/SentinelServersConfig.java +++ b/redisson/src/main/java/org/redisson/config/SentinelServersConfig.java @@ -53,6 +53,8 @@ public class SentinelServersConfig extends BaseMasterSlaveServersConfig + * Default is true + * + * @param sentinelsDiscovery - boolean value + * @return config + */ + public SentinelServersConfig setSentinelsDiscovery(boolean sentinelsDiscovery) { + this.sentinelsDiscovery = sentinelsDiscovery; + return this; + } } diff --git a/redisson/src/main/java/org/redisson/connection/SentinelConnectionManager.java b/redisson/src/main/java/org/redisson/connection/SentinelConnectionManager.java index cc5e61853..c7549aff0 100755 --- a/redisson/src/main/java/org/redisson/connection/SentinelConnectionManager.java +++ b/redisson/src/main/java/org/redisson/connection/SentinelConnectionManager.java @@ -70,6 +70,7 @@ public class SentinelConnectionManager extends MasterSlaveConnectionManager { private boolean usePassword = false; private String scheme; private boolean checkSlaveStatusWithSyncing; + private boolean sentinelsDiscovery; public SentinelConnectionManager(SentinelServersConfig cfg, Config config, UUID id) { super(config, id); @@ -84,6 +85,7 @@ public class SentinelConnectionManager extends MasterSlaveConnectionManager { this.config = create(cfg); this.sentinelPassword = cfg.getSentinelPassword(); this.checkSlaveStatusWithSyncing = cfg.isCheckSlaveStatusWithSyncing(); + this.sentinelsDiscovery = cfg.isSentinelsDiscovery(); initTimer(this.config); this.natMapper = cfg.getNatMapper(); @@ -186,7 +188,7 @@ public class SentinelConnectionManager extends MasterSlaveConnectionManager { } } - if (cfg.isCheckSentinelsList()) { + if (cfg.isCheckSentinelsList() && cfg.isSentinelsDiscovery()) { if (sentinels.isEmpty()) { stopThreads(); throw new RedisConnectionException("SENTINEL SENTINELS command returns empty result! Set checkSentinelsList = false to avoid this check.", lastException); @@ -387,6 +389,10 @@ public class SentinelConnectionManager extends MasterSlaveConnectionManager { } private RFuture>> checkSentinelsChange(SentinelServersConfig cfg, RedisConnection connection) { + if (!sentinelsDiscovery) { + return RedissonPromise.newSucceededFuture(null); + } + RFuture>> sentinelsFuture = connection.async(StringCodec.INSTANCE, RedisCommands.SENTINEL_SENTINELS, cfg.getMasterName()); sentinelsFuture.onComplete((list, e) -> { if (e != null || list.isEmpty()) {