From 19639d1597ec66b138d99252b73f3bd99de57686 Mon Sep 17 00:00:00 2001 From: atakavci Date: Tue, 3 Mar 2026 10:31:35 +0300 Subject: [PATCH 1/4] - store enable/disable info as boolean in MultiDbConfig+builder --- .../redis/clients/jedis/MultiDbConfig.java | 24 +++++++++++++++---- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/src/main/java/redis/clients/jedis/MultiDbConfig.java b/src/main/java/redis/clients/jedis/MultiDbConfig.java index 60403446b0..e6140bb9e3 100644 --- a/src/main/java/redis/clients/jedis/MultiDbConfig.java +++ b/src/main/java/redis/clients/jedis/MultiDbConfig.java @@ -871,6 +871,9 @@ public static class DatabaseConfig { */ private float weight = 1.0f; + /** Health check enabled. Default: true */ + private boolean healthCheckEnabled; + /** * Strategy supplier for creating health check instances for this database. Default is * PingStrategy.DEFAULT. @@ -920,6 +923,7 @@ private DatabaseConfig(Builder builder) { this.jedisClientConfig = builder.jedisClientConfig; this.connectionPoolConfig = builder.connectionPoolConfig; this.weight = builder.weight; + this.healthCheckEnabled = builder.healthCheckEnabled; this.healthCheckStrategySupplier = builder.healthCheckStrategySupplier; } @@ -982,9 +986,20 @@ public float getWeight() { * @see redis.clients.jedis.mcf.HealthCheckStrategy */ public StrategySupplier getHealthCheckStrategySupplier() { + if (!healthCheckEnabled) { + return null; + } return healthCheckStrategySupplier; } + /** + * Returns whether health checks are enabled for this database. + * @return true if health checks are enabled, false otherwise + */ + public boolean isHealthCheckEnabled() { + return healthCheckEnabled; + } + /** * Builder class for creating DatabaseConfig instances with fluent configuration API. *

@@ -1014,6 +1029,9 @@ public static class Builder { /** Weight for database selection priority. Default: 1.0f */ private float weight = 1.0f; + /** Health check enabled. Default: true */ + private boolean healthCheckEnabled = true; + /** Health check strategy supplier. Default: PingStrategy.DEFAULT */ private StrategySupplier healthCheckStrategySupplier = PingStrategy.DEFAULT; @@ -1130,11 +1148,7 @@ public Builder healthCheckStrategy(HealthCheckStrategy healthCheckStrategy) { * @return this builder instance for method chaining */ public Builder healthCheckEnabled(boolean healthCheckEnabled) { - if (!healthCheckEnabled) { - this.healthCheckStrategySupplier = null; - } else if (healthCheckStrategySupplier == null) { - this.healthCheckStrategySupplier = PingStrategy.DEFAULT; - } + this.healthCheckEnabled = healthCheckEnabled; return this; } From 95f083ce04e033557307a9f6b9aad1f459e8cff3 Mon Sep 17 00:00:00 2001 From: atakavci Date: Tue, 3 Mar 2026 11:57:57 +0300 Subject: [PATCH 2/4] - set defaults --- src/main/java/redis/clients/jedis/MultiDbConfig.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/redis/clients/jedis/MultiDbConfig.java b/src/main/java/redis/clients/jedis/MultiDbConfig.java index e6140bb9e3..9921dc7aeb 100644 --- a/src/main/java/redis/clients/jedis/MultiDbConfig.java +++ b/src/main/java/redis/clients/jedis/MultiDbConfig.java @@ -872,13 +872,13 @@ public static class DatabaseConfig { private float weight = 1.0f; /** Health check enabled. Default: true */ - private boolean healthCheckEnabled; + private boolean healthCheckEnabled = true; /** * Strategy supplier for creating health check instances for this database. Default is * PingStrategy.DEFAULT. */ - private StrategySupplier healthCheckStrategySupplier; + private StrategySupplier healthCheckStrategySupplier = PingStrategy.DEFAULT; /** * Constructs a DatabaseConfig with basic endpoint and client configuration. From fae9d950bbe30e7507e22a1de186d279583187b5 Mon Sep 17 00:00:00 2001 From: atakavci Date: Mon, 9 Mar 2026 11:57:09 +0300 Subject: [PATCH 3/4] - drop DatabaseConfig ctor --- .../redis/clients/jedis/MultiDbConfig.java | 18 ------------------ 1 file changed, 18 deletions(-) diff --git a/src/main/java/redis/clients/jedis/MultiDbConfig.java b/src/main/java/redis/clients/jedis/MultiDbConfig.java index 9921dc7aeb..bcf65c8423 100644 --- a/src/main/java/redis/clients/jedis/MultiDbConfig.java +++ b/src/main/java/redis/clients/jedis/MultiDbConfig.java @@ -896,24 +896,6 @@ public DatabaseConfig(Endpoint endpoint, JedisClientConfig clientConfig) { this.jedisClientConfig = clientConfig; } - /** - * Constructs a DatabaseConfig with endpoint, client, and connection pool configuration. - *

- * This constructor allows specification of connection pool settings in addition to basic - * endpoint configuration. Default weight of 1.0f and PingStrategy for health checks are used. - *

- * @param endpoint the Redis endpoint (host and port) - * @param clientConfig the Jedis client configuration - * @param connectionPoolConfig the connection pool configuration - * @throws IllegalArgumentException if endpoint or clientConfig is null - */ - public DatabaseConfig(Endpoint endpoint, JedisClientConfig clientConfig, - GenericObjectPoolConfig connectionPoolConfig) { - this.endpoint = endpoint; - this.jedisClientConfig = clientConfig; - this.connectionPoolConfig = connectionPoolConfig; - } - /** * Private constructor used by the Builder to create configured instances. * @param builder the builder containing configuration values From 3353d3bf1643a420d313d54b032b3695844857c2 Mon Sep 17 00:00:00 2001 From: atakavci Date: Mon, 9 Mar 2026 11:57:16 +0300 Subject: [PATCH 4/4] - fix failing tests --- .../jedis/mcf/MultiDbConnectionProviderTest.java | 13 +++++++++---- .../clients/jedis/misc/AutomaticFailoverTest.java | 3 ++- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/src/test/java/redis/clients/jedis/mcf/MultiDbConnectionProviderTest.java b/src/test/java/redis/clients/jedis/mcf/MultiDbConnectionProviderTest.java index 0c3c8b50b6..859ec61d10 100644 --- a/src/test/java/redis/clients/jedis/mcf/MultiDbConnectionProviderTest.java +++ b/src/test/java/redis/clients/jedis/mcf/MultiDbConnectionProviderTest.java @@ -168,10 +168,15 @@ public void testConnectionPoolConfigApplied() { poolConfig.setMaxIdle(4); poolConfig.setMinIdle(1); DatabaseConfig[] databaseConfigs = new DatabaseConfig[2]; - databaseConfigs[0] = new DatabaseConfig(endpointStandalone0.getHostAndPort(), - endpointStandalone0.getClientConfigBuilder().build(), poolConfig); - databaseConfigs[1] = new DatabaseConfig(endpointStandalone1.getHostAndPort(), - endpointStandalone0.getClientConfigBuilder().build(), poolConfig); + + databaseConfigs[0] = DatabaseConfig + .builder(endpointStandalone0.getHostAndPort(), + endpointStandalone0.getClientConfigBuilder().build()) + .connectionPoolConfig(poolConfig).build(); + databaseConfigs[1] = DatabaseConfig + .builder(endpointStandalone1.getHostAndPort(), + endpointStandalone1.getClientConfigBuilder().build()) + .connectionPoolConfig(poolConfig).build(); try (MultiDbConnectionProvider customProvider = new MultiDbConnectionProvider( new MultiDbConfig.Builder(databaseConfigs).build())) { MultiDbConnectionProvider.Database activeDatabase = customProvider.getDatabase(); diff --git a/src/test/java/redis/clients/jedis/misc/AutomaticFailoverTest.java b/src/test/java/redis/clients/jedis/misc/AutomaticFailoverTest.java index 0cb889cdad..ef9e8b457f 100644 --- a/src/test/java/redis/clients/jedis/misc/AutomaticFailoverTest.java +++ b/src/test/java/redis/clients/jedis/misc/AutomaticFailoverTest.java @@ -18,6 +18,7 @@ import org.slf4j.LoggerFactory; import redis.clients.jedis.*; +import redis.clients.jedis.MultiDbConfig.DatabaseConfig; import redis.clients.jedis.exceptions.JedisAccessControlException; import redis.clients.jedis.exceptions.JedisConnectionException; import redis.clients.jedis.mcf.DatabaseSwitchEvent; @@ -63,7 +64,7 @@ public static void prepareEndpoints() { private List getDatabaseConfigs( JedisClientConfig clientConfig, HostAndPort... hostPorts) { return Arrays.stream(hostPorts) - .map(hp -> new MultiDbConfig.DatabaseConfig(hp, clientConfig)) + .map(hp -> DatabaseConfig.builder(hp, clientConfig).healthCheckEnabled(false).build()) .collect(Collectors.toList()); }