From d8f53954d0ac699def30b6e96c69493d3ed6960a Mon Sep 17 00:00:00 2001 From: Jon Chambers Date: Tue, 5 Nov 2024 17:18:50 -0500 Subject: [PATCH] Don't send `CLIENT SETINFO` commands when connecting to Redis instances --- .../redis/FaultTolerantRedisClient.java | 11 +++++++++++ .../redis/FaultTolerantRedisClusterClient.java | 13 +++++++++++++ 2 files changed, 24 insertions(+) diff --git a/service/src/main/java/org/whispersystems/textsecuregcm/redis/FaultTolerantRedisClient.java b/service/src/main/java/org/whispersystems/textsecuregcm/redis/FaultTolerantRedisClient.java index 84671d5c8..53749407e 100644 --- a/service/src/main/java/org/whispersystems/textsecuregcm/redis/FaultTolerantRedisClient.java +++ b/service/src/main/java/org/whispersystems/textsecuregcm/redis/FaultTolerantRedisClient.java @@ -59,6 +59,17 @@ public class FaultTolerantRedisClient { this.name = name; + // Lettuce will issue a CLIENT SETINFO command unconditionally if these fields are set (and they are by default), + // which can generate a bunch of spurious warnings in versions of Redis before 7.2.0. + // + // See: + // + // - https://github.com/redis/lettuce/pull/2823 + // - https://github.com/redis/lettuce/issues/2817 + redisUri.setClientName(null); + redisUri.setLibraryName(null); + redisUri.setLibraryVersion(null); + final LettuceShardCircuitBreaker lettuceShardCircuitBreaker = new LettuceShardCircuitBreaker(name, circuitBreakerConfiguration.toCircuitBreakerConfig(), Schedulers.newSingle("topology-changed-" + name, true)); this.redisClient = RedisClient.create(clientResourcesBuilder.build(), redisUri); diff --git a/service/src/main/java/org/whispersystems/textsecuregcm/redis/FaultTolerantRedisClusterClient.java b/service/src/main/java/org/whispersystems/textsecuregcm/redis/FaultTolerantRedisClusterClient.java index 5053c7c6b..258dd1432 100644 --- a/service/src/main/java/org/whispersystems/textsecuregcm/redis/FaultTolerantRedisClusterClient.java +++ b/service/src/main/java/org/whispersystems/textsecuregcm/redis/FaultTolerantRedisClusterClient.java @@ -75,6 +75,19 @@ public class FaultTolerantRedisClusterClient { this.name = name; + // Lettuce will issue a CLIENT SETINFO command unconditionally if these fields are set (and they are by default), + // which can generate a bunch of spurious warnings in versions of Redis before 7.2.0. + // + // See: + // + // - https://github.com/redis/lettuce/pull/2823 + // - https://github.com/redis/lettuce/issues/2817 + redisUris.forEach(redisUri -> { + redisUri.setClientName(null); + redisUri.setLibraryName(null); + redisUri.setLibraryVersion(null); + }); + final LettuceShardCircuitBreaker lettuceShardCircuitBreaker = new LettuceShardCircuitBreaker(name, circuitBreakerConfig.toCircuitBreakerConfig(), Schedulers.newSingle("topology-changed-" + name, true)); this.clusterClient = RedisClusterClient.create(