This is an automated email from the ASF dual-hosted git repository. hqtran pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/james-project.git
The following commit(s) were added to refs/heads/master by this push: new 61f40b5bfc JAMES-4072 Enable timeout option in RedisClientFactory (#2706) 61f40b5bfc is described below commit 61f40b5bfc420bfb77fb1ab95675a99eadf62c54 Author: vttran <vtt...@linagora.com> AuthorDate: Tue May 13 11:08:37 2025 +0700 JAMES-4072 Enable timeout option in RedisClientFactory (#2706) --- .../java/org/apache/james/backends/redis/RedisClientFactory.scala | 4 ++-- .../java/org/apache/james/backends/redis/RedisHealthCheck.scala | 7 +------ .../org/apache/james/backends/redis/RedisClusterExtension.java | 1 + .../apache/james/backends/redis/RedisMasterReplicaExtension.java | 3 ++- .../org/apache/james/backends/redis/RedisSentinelExtension.java | 2 +- .../java/org/apache/james/backends/redis/RedisTLSExtension.java | 1 + 6 files changed, 8 insertions(+), 10 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 96b224b0f4..3c85ee6b1a 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 @@ -20,10 +20,9 @@ package org.apache.james.backends.redis 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 io.lettuce.core.{AbstractRedisClient, ClientOptions, RedisClient, SslOptions, TimeoutOptions} import jakarta.annotation.PreDestroy import jakarta.inject.{Inject, Singleton} import org.apache.james.filesystem.api.FileSystem @@ -80,6 +79,7 @@ class RedisClientFactory @Singleton() @Inject() private def createClientOptions(useSSL: Boolean, mayBeSSLConfiguration: Option[SSLConfiguration]): ClientOptions = { val clientOptionsBuilder = ClientOptions.builder + clientOptionsBuilder.timeoutOptions(TimeoutOptions.enabled) if (useSSL) { mayBeSSLConfiguration.foreach(sslConfig => { if (!sslConfig.ignoreCertificateCheck) { 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 96fbeecb40..fac2326a40 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 @@ -19,25 +19,21 @@ package org.apache.james.backends.redis -import java.time.Duration - import io.lettuce.core.api.reactive.RedisStringReactiveCommands 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.inject.Inject -import org.apache.james.backends.redis.RedisHealthCheck.{healthCheckKey, healthCheckValue, healthcheckTimeout, redisComponent} +import org.apache.james.backends.redis.RedisHealthCheck.{healthCheckKey, healthCheckValue, redisComponent} import org.apache.james.core.healthcheck.{ComponentName, HealthCheck, Result} import org.reactivestreams.Publisher import reactor.core.scala.publisher.SMono import scala.jdk.CollectionConverters._ -import scala.jdk.DurationConverters._ object RedisHealthCheck { val redisComponent: ComponentName = new ComponentName("Redis") - val healthcheckTimeout: Duration = Duration.ofSeconds(3) val healthCheckKey: String = "healthcheck" val healthCheckValue: String = "healthy" } @@ -63,7 +59,6 @@ class RedisHealthCheck @Inject()(redisClientFactory: RedisClientFactory, redisCo override def check(): Publisher[Result] = SMono(redisCommand.set(healthCheckKey, healthCheckValue) .`then`(redisCommand.getdel(healthCheckKey))) - .timeout(healthcheckTimeout.toScala) .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."))) diff --git a/backends-common/redis/src/test/java/org/apache/james/backends/redis/RedisClusterExtension.java b/backends-common/redis/src/test/java/org/apache/james/backends/redis/RedisClusterExtension.java index 733a44ee91..eed1e3c3bb 100644 --- a/backends-common/redis/src/test/java/org/apache/james/backends/redis/RedisClusterExtension.java +++ b/backends-common/redis/src/test/java/org/apache/james/backends/redis/RedisClusterExtension.java @@ -176,6 +176,7 @@ public class RedisClusterExtension implements GuiceModuleTestExtension { .setScheme("redis") .setHost(redisContainer.getHost()) .setPort(redisContainer.getMappedPort(DEFAULT_PORT)) + .setParameter("timeout", "3s") .build()).get(); } } diff --git a/backends-common/redis/src/test/java/org/apache/james/backends/redis/RedisMasterReplicaExtension.java b/backends-common/redis/src/test/java/org/apache/james/backends/redis/RedisMasterReplicaExtension.java index a37457b8c7..2c09d83146 100644 --- a/backends-common/redis/src/test/java/org/apache/james/backends/redis/RedisMasterReplicaExtension.java +++ b/backends-common/redis/src/test/java/org/apache/james/backends/redis/RedisMasterReplicaExtension.java @@ -92,7 +92,8 @@ public class RedisMasterReplicaExtension implements GuiceModuleTestExtension { return redisContainer -> "redis://123@" + redisContainer.getHost() + ":" + - redisContainer.getMappedPort(DEFAULT_PORT); + redisContainer.getMappedPort(DEFAULT_PORT) + + "?timeout=3s"; } } diff --git a/backends-common/redis/src/test/java/org/apache/james/backends/redis/RedisSentinelExtension.java b/backends-common/redis/src/test/java/org/apache/james/backends/redis/RedisSentinelExtension.java index e6f4114694..7d398c1d46 100644 --- a/backends-common/redis/src/test/java/org/apache/james/backends/redis/RedisSentinelExtension.java +++ b/backends-common/redis/src/test/java/org/apache/james/backends/redis/RedisSentinelExtension.java @@ -109,7 +109,7 @@ public class RedisSentinelExtension implements GuiceModuleTestExtension { sb.append("redis-sentinel://123@"); sb.append(this.stream().map(container -> container.getHost() + ":" + container.getMappedPort(SENTINEL_PORT)) .collect(Collectors.joining(","))); - sb.append("?sentinelMasterId=mymaster"); + sb.append("?sentinelMasterId=mymaster&timeout=3s"); return sb.toString(); } } diff --git a/backends-common/redis/src/test/java/org/apache/james/backends/redis/RedisTLSExtension.java b/backends-common/redis/src/test/java/org/apache/james/backends/redis/RedisTLSExtension.java index 963f590f73..21f4d3871a 100644 --- a/backends-common/redis/src/test/java/org/apache/james/backends/redis/RedisTLSExtension.java +++ b/backends-common/redis/src/test/java/org/apache/james/backends/redis/RedisTLSExtension.java @@ -61,6 +61,7 @@ public class RedisTLSExtension implements GuiceModuleTestExtension { .append(":") .append(container.getMappedPort(DEFAULT_PORT)) .append("?verifyPeer=NONE") + .append("&timeout=3s") .toString(); } } --------------------------------------------------------------------- To unsubscribe, e-mail: notifications-unsubscr...@james.apache.org For additional commands, e-mail: notifications-h...@james.apache.org