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]

Reply via email to