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

btellier 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 fabfdf4  JAMES-3693 add a property in redis configuration for enabling 
cluster connection
fabfdf4 is described below

commit fabfdf4874da3aebb04e6fe4a7277322a395536a
Author: Rene Cordier <[email protected]>
AuthorDate: Wed Feb 16 16:55:18 2022 +0700

    JAMES-3693 add a property in redis configuration for enabling cluster 
connection
---
 server/mailet/rate-limiter-redis/README.adoc                 |  1 +
 server/mailet/rate-limiter-redis/redis.properties            |  3 ++-
 .../apache/james/rate/limiter/redis/RedisRateLimiter.scala   |  2 +-
 .../rate/limiter/redis/RedisRateLimiterConfiguration.scala   | 12 ++++++++----
 .../org/apache/james/rate/limiter/RedisRateLimiterTest.scala |  2 +-
 5 files changed, 13 insertions(+), 7 deletions(-)

diff --git a/server/mailet/rate-limiter-redis/README.adoc 
b/server/mailet/rate-limiter-redis/README.adoc
index 2602c3c..eef8043 100644
--- a/server/mailet/rate-limiter-redis/README.adoc
+++ b/server/mailet/rate-limiter-redis/README.adoc
@@ -20,6 +20,7 @@ 
guice.extension.module=org.apache.james.rate.limiter.redis.RedisRateLimiterModul
 
 ----
 redisURL=redis://redis:6379
+cluster.enabled=false
 ----
 
 - 5. Use the rate limiting mailets within `mailetcontainer.xml`
diff --git a/server/mailet/rate-limiter-redis/redis.properties 
b/server/mailet/rate-limiter-redis/redis.properties
index 20c1718..449e981 100644
--- a/server/mailet/rate-limiter-redis/redis.properties
+++ b/server/mailet/rate-limiter-redis/redis.properties
@@ -1 +1,2 @@
-redisURL=redis://redis:6379
\ No newline at end of file
+redisURL=redis://redis:6379
+cluster.enabled=false
\ No newline at end of file
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 d9aa0fc..0012372 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
@@ -47,7 +47,7 @@ class RedisRateLimiterModule() extends AbstractModule {
 
 class RedisRateLimiterFactory @Inject()(redisConfiguration: 
RedisRateLimiterConfiguration) extends RateLimiterFactory {
   val rateLimitjFactory: 
AbstractRequestRateLimiterFactory[RedisSlidingWindowRequestRateLimiter] =
-    if (redisConfiguration.redisURI.value.size > 1) {
+    if (redisConfiguration.isCluster) {
       new 
RedisClusterRateLimiterFactory(RedisClusterClient.create(redisConfiguration.redisURI.value.asJava))
     } else {
       new 
RedisSingleInstanceRateLimitjFactory(RedisClient.create(redisConfiguration.redisURI.value.last))
diff --git 
a/server/mailet/rate-limiter-redis/src/main/scala/org/apache/james/rate/limiter/redis/RedisRateLimiterConfiguration.scala
 
b/server/mailet/rate-limiter-redis/src/main/scala/org/apache/james/rate/limiter/redis/RedisRateLimiterConfiguration.scala
index 922bd09..592b34f 100644
--- 
a/server/mailet/rate-limiter-redis/src/main/scala/org/apache/james/rate/limiter/redis/RedisRateLimiterConfiguration.scala
+++ 
b/server/mailet/rate-limiter-redis/src/main/scala/org/apache/james/rate/limiter/redis/RedisRateLimiterConfiguration.scala
@@ -28,12 +28,16 @@ import org.apache.commons.configuration2.Configuration
 import org.apache.james.rate.limiter.redis.RedisUris.RedisUris
 
 object RedisRateLimiterConfiguration {
+  val CLUSTER_ENABLED_DEFAULT = false
+
   def from(config: Configuration): RedisRateLimiterConfiguration =
-    from(config.getString("redisURL"))
+    from(config.getString("redisURL"),
+      config.getBoolean("cluster.enabled", CLUSTER_ENABLED_DEFAULT))
 
-  def from(redisUri: String): RedisRateLimiterConfiguration = {
+  def from(redisUri: String, isCluster: Boolean): 
RedisRateLimiterConfiguration = {
     Preconditions.checkArgument(redisUri != null && !redisUri.isBlank)
-    RedisRateLimiterConfiguration(RedisUris.from(redisUri))
+    Preconditions.checkNotNull(isCluster)
+    RedisRateLimiterConfiguration(RedisUris.from(redisUri), isCluster)
   }
 }
 
@@ -56,4 +60,4 @@ object RedisUris {
   def from(value: String): RedisUris = 
liftOrThrow(value.split(',').toList.map(RedisURI.create))
 }
 
-case class RedisRateLimiterConfiguration(redisURI: RedisUris)
+case class RedisRateLimiterConfiguration(redisURI: RedisUris, isCluster: 
Boolean)
diff --git 
a/server/mailet/rate-limiter-redis/src/test/java/org/apache/james/rate/limiter/RedisRateLimiterTest.scala
 
b/server/mailet/rate-limiter-redis/src/test/java/org/apache/james/rate/limiter/RedisRateLimiterTest.scala
index ff378c0..27aef86 100644
--- 
a/server/mailet/rate-limiter-redis/src/test/java/org/apache/james/rate/limiter/RedisRateLimiterTest.scala
+++ 
b/server/mailet/rate-limiter-redis/src/test/java/org/apache/james/rate/limiter/RedisRateLimiterTest.scala
@@ -33,7 +33,7 @@ class RedisRateLimiterTest extends RateLimiterContract {
 
   @BeforeEach
   def setup(redis: DockerRedis): Unit = {
-    redisRateLimiterConfiguration = 
RedisRateLimiterConfiguration.from(redis.redisURI().toString)
+    redisRateLimiterConfiguration = 
RedisRateLimiterConfiguration.from(redis.redisURI().toString, false)
   }
 
   override def testee(): RateLimiterFactory = new 
RedisRateLimiterFactory(redisRateLimiterConfiguration)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to