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 733bcc4d6b8153451abdb463d238c200044ebf6a Author: hung phan <[email protected]> AuthorDate: Mon May 13 16:16:35 2024 +0700 JAMES-3693 Apply redis.readFrom to RedisRateLimiter --- .../limiter/redis/RedisMasterReplicaRateLimiterFactory.java | 10 +++++++++- .../org/apache/james/rate/limiter/redis/RedisRateLimiter.scala | 3 ++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/server/mailet/rate-limiter-redis/src/main/java/org/apache/james/rate/limiter/redis/RedisMasterReplicaRateLimiterFactory.java b/server/mailet/rate-limiter-redis/src/main/java/org/apache/james/rate/limiter/redis/RedisMasterReplicaRateLimiterFactory.java index 6fd39442a9..352fcb3f3e 100644 --- a/server/mailet/rate-limiter-redis/src/main/java/org/apache/james/rate/limiter/redis/RedisMasterReplicaRateLimiterFactory.java +++ b/server/mailet/rate-limiter-redis/src/main/java/org/apache/james/rate/limiter/redis/RedisMasterReplicaRateLimiterFactory.java @@ -27,6 +27,7 @@ import es.moki.ratelimitj.core.limiter.request.ReactiveRequestRateLimiter; import es.moki.ratelimitj.core.limiter.request.RequestLimitRule; import es.moki.ratelimitj.core.limiter.request.RequestRateLimiter; import es.moki.ratelimitj.redis.request.RedisSlidingWindowRequestRateLimiter; +import io.lettuce.core.ReadFrom; import io.lettuce.core.RedisClient; import io.lettuce.core.RedisURI; import io.lettuce.core.codec.StringCodec; @@ -36,11 +37,17 @@ import io.lettuce.core.masterreplica.StatefulRedisMasterReplicaConnection; public class RedisMasterReplicaRateLimiterFactory extends AbstractRequestRateLimiterFactory<RedisSlidingWindowRequestRateLimiter> { private final RedisClient client; private final List<RedisURI> redisURIs; + private final ReadFrom readFrom; private StatefulRedisMasterReplicaConnection<String, String> connection; - public RedisMasterReplicaRateLimiterFactory(RedisClient client, List<RedisURI> redisURIs) { + public RedisMasterReplicaRateLimiterFactory(RedisClient client, List<RedisURI> redisURIs, ReadFrom readFrom) { this.client = client; this.redisURIs = redisURIs; + this.readFrom = readFrom; + } + + public RedisMasterReplicaRateLimiterFactory(RedisClient client, List<RedisURI> redisURIs) { + this(client, redisURIs, ReadFrom.MASTER); } @Override @@ -66,6 +73,7 @@ public class RedisMasterReplicaRateLimiterFactory extends AbstractRequestRateLim private StatefulRedisMasterReplicaConnection<String, String> getConnection() { if (this.connection == null) { this.connection = MasterReplica.connect(this.client, StringCodec.UTF8, redisURIs); + this.connection.setReadFrom(readFrom); } return this.connection; 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 027e24f2f2..647e550783 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 @@ -64,7 +64,8 @@ class RedisRateLimiterFactory @Inject()(redisConfiguration: RedisConfiguration) case masterReplicaRedisConfiguration: MasterReplicaRedisConfiguration => new RedisMasterReplicaRateLimiterFactory( RedisClient.create(masterReplicaRedisConfiguration.redisURI.value.last), - masterReplicaRedisConfiguration.redisURI.value.asJava) + masterReplicaRedisConfiguration.redisURI.value.asJava, + masterReplicaRedisConfiguration.readFrom) case _ => throw new NotImplementedError() } --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
