This is an automated email from the ASF dual-hosted git repository.

rcordier pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git

commit b808dcc5b04aa46e53e26a423f89654aae4ff9f3
Author: Rene Cordier <rcord...@linagora.com>
AuthorDate: Tue Apr 1 14:35:21 2025 +0700

    [JAMES-3693] Only one RedisClient declaration is necessary
---
 .../org/apache/james/backends/redis/RedisClientFactory.scala | 12 +++++++++++-
 .../org/apache/james/backends/redis/RedisHealthCheck.scala   | 12 +-----------
 .../apache/james/rate/limiter/redis/RedisRateLimiter.scala   |  2 +-
 3 files changed, 13 insertions(+), 13 deletions(-)

diff --git 
a/backends-common/redis/src/main/java/org/apache/james/backends/redis/RedisClientFactory.scala
 
b/backends-common/redis/src/main/java/org/apache/james/backends/redis/RedisClientFactory.scala
index 688c16d6ae..96b224b0f4 100644
--- 
a/backends-common/redis/src/main/java/org/apache/james/backends/redis/RedisClientFactory.scala
+++ 
b/backends-common/redis/src/main/java/org/apache/james/backends/redis/RedisClientFactory.scala
@@ -24,15 +24,18 @@ import java.time.Duration
 import io.lettuce.core.cluster.{ClusterClientOptions, RedisClusterClient}
 import io.lettuce.core.resource.ClientResources
 import io.lettuce.core.{AbstractRedisClient, ClientOptions, RedisClient, 
SslOptions}
+import jakarta.annotation.PreDestroy
 import jakarta.inject.{Inject, Singleton}
 import org.apache.james.filesystem.api.FileSystem
 import org.apache.james.util.concurrent.NamedThreadFactory
+import reactor.core.publisher.Mono
+import reactor.core.scheduler.Schedulers
 
 import scala.jdk.CollectionConverters._
 
 class RedisClientFactory @Singleton() @Inject()
 (fileSystem: FileSystem, redisConfiguration: RedisConfiguration) {
-  def createRawRedisClient(): AbstractRedisClient = redisConfiguration match {
+  val rawRedisClient: AbstractRedisClient = redisConfiguration match {
     case standaloneRedisConfiguration: StandaloneRedisConfiguration => 
createStandaloneClient(standaloneRedisConfiguration)
     case masterReplicaRedisConfiguration: MasterReplicaRedisConfiguration => 
createMasterReplicaClient(masterReplicaRedisConfiguration)
     case clusterRedisConfiguration: ClusterRedisConfiguration => 
createClusterClient(clusterRedisConfiguration)
@@ -89,4 +92,11 @@ class RedisClientFactory @Singleton() @Inject()
     }
     clientOptionsBuilder.build()
   }
+
+  @PreDestroy
+  def close(): Unit = {
+    Mono.fromCompletionStage(rawRedisClient.shutdownAsync())
+      .subscribeOn(Schedulers.boundedElastic())
+      .subscribe()
+  }
 }
diff --git 
a/backends-common/redis/src/main/java/org/apache/james/backends/redis/RedisHealthCheck.scala
 
b/backends-common/redis/src/main/java/org/apache/james/backends/redis/RedisHealthCheck.scala
index 5ab511a8cc..96fbeecb40 100644
--- 
a/backends-common/redis/src/main/java/org/apache/james/backends/redis/RedisHealthCheck.scala
+++ 
b/backends-common/redis/src/main/java/org/apache/james/backends/redis/RedisHealthCheck.scala
@@ -26,14 +26,11 @@ import io.lettuce.core.cluster.RedisClusterClient
 import io.lettuce.core.codec.StringCodec
 import io.lettuce.core.masterreplica.MasterReplica
 import io.lettuce.core.{AbstractRedisClient, RedisClient}
-import jakarta.annotation.PreDestroy
 import jakarta.inject.Inject
 import org.apache.james.backends.redis.RedisHealthCheck.{healthCheckKey, 
healthCheckValue, healthcheckTimeout, redisComponent}
 import org.apache.james.core.healthcheck.{ComponentName, HealthCheck, Result}
 import org.reactivestreams.Publisher
-import reactor.core.publisher.Mono
 import reactor.core.scala.publisher.SMono
-import reactor.core.scheduler.Schedulers
 
 import scala.jdk.CollectionConverters._
 import scala.jdk.DurationConverters._
@@ -47,7 +44,7 @@ object RedisHealthCheck {
 
 class RedisHealthCheck @Inject()(redisClientFactory: RedisClientFactory, 
redisConfiguration: RedisConfiguration) extends HealthCheck {
 
-  private val rawRedisClient: AbstractRedisClient = 
redisClientFactory.createRawRedisClient()
+  private val rawRedisClient: AbstractRedisClient = 
redisClientFactory.rawRedisClient
   private val redisCommand: RedisStringReactiveCommands[String, String] = 
redisConfiguration match {
     case _: StandaloneRedisConfiguration => 
rawRedisClient.asInstanceOf[RedisClient].connect().reactive()
     case _: ClusterRedisConfiguration => 
rawRedisClient.asInstanceOf[RedisClusterClient].connect().reactive()
@@ -70,11 +67,4 @@ class RedisHealthCheck @Inject()(redisClientFactory: 
RedisClientFactory, redisCo
       .map(_ => Result.healthy(redisComponent))
       .switchIfEmpty(SMono.just(Result.degraded(redisComponent, "Can not write 
to Redis.")))
       .onErrorResume(_ => SMono.just(Result.degraded(redisComponent, "Can not 
connect to Redis.")))
-
-  @PreDestroy
-  def close(): Unit = {
-    Mono.fromCompletionStage(rawRedisClient.shutdownAsync())
-      .subscribeOn(Schedulers.boundedElastic())
-      .subscribe()
-  }
 }
diff --git 
a/server/mailet/rate-limiter-redis/src/main/scala/org/apache/james/rate/limiter/redis/RedisRateLimiter.scala
 
b/server/mailet/rate-limiter-redis/src/main/scala/org/apache/james/rate/limiter/redis/RedisRateLimiter.scala
index fd200a10c6..fb9c64fea5 100644
--- 
a/server/mailet/rate-limiter-redis/src/main/scala/org/apache/james/rate/limiter/redis/RedisRateLimiter.scala
+++ 
b/server/mailet/rate-limiter-redis/src/main/scala/org/apache/james/rate/limiter/redis/RedisRateLimiter.scala
@@ -51,7 +51,7 @@ class RedisRateLimiterModule() extends AbstractModule {
 }
 
 class RedisRateLimiterFactory @Inject()(redisConfiguration: 
RedisConfiguration, redisClientFactory: RedisClientFactory) extends 
RateLimiterFactory {
-  private val rawRedisClient: AbstractRedisClient = 
redisClientFactory.createRawRedisClient()
+  private val rawRedisClient: AbstractRedisClient = 
redisClientFactory.rawRedisClient
   private val rateLimitjFactory: 
AbstractRequestRateLimiterFactory[RedisSlidingWindowRequestRateLimiter] = 
redisConfiguration match {
     case _: StandaloneRedisConfiguration => new 
RedisSingleInstanceRateLimitjFactory(rawRedisClient.asInstanceOf[RedisClient])
 


---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscr...@james.apache.org
For additional commands, e-mail: notifications-h...@james.apache.org

Reply via email to