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]