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
The following commit(s) were added to refs/heads/master by this push:
new 874764038e JAMES-3693 Fixup parsing `redisURL` when cluster with multi
url endpoint
874764038e is described below
commit 874764038ec0dc7c8292c5edce2190dbbd83969a
Author: Tung Tran <[email protected]>
AuthorDate: Mon Apr 29 11:30:32 2024 +0700
JAMES-3693 Fixup parsing `redisURL` when cluster with multi url endpoint
- Before:
Ex: redisURL=redis://redis1:6379,redis://redis2:6379
Then RedisUris has size = 1
- After: RedisUris has size = 2
---
.../james/backends/redis/RedisConfiguration.scala | 28 ++++++++++++++++++----
.../backends/redis/RedisConfigurationTest.scala | 2 ++
2 files changed, 25 insertions(+), 5 deletions(-)
diff --git
a/backends-common/redis/src/main/java/org/apache/james/backends/redis/RedisConfiguration.scala
b/backends-common/redis/src/main/java/org/apache/james/backends/redis/RedisConfiguration.scala
index 5881f43156..ce6fbe10bf 100644
---
a/backends-common/redis/src/main/java/org/apache/james/backends/redis/RedisConfiguration.scala
+++
b/backends-common/redis/src/main/java/org/apache/james/backends/redis/RedisConfiguration.scala
@@ -26,20 +26,36 @@ import eu.timepit.refined.collection.NonEmpty
import io.lettuce.core.RedisURI
import org.apache.commons.configuration2.Configuration
import org.apache.james.backends.redis.RedisUris.RedisUris
+import org.slf4j.{Logger, LoggerFactory}
object RedisConfiguration {
val CLUSTER_ENABLED_DEFAULT = false
- def from(config: Configuration): RedisConfiguration =
- from(config.getString("redisURL"),
+ val LOGGER: Logger = LoggerFactory.getLogger(classOf[RedisConfiguration])
+
+ def from(config: Configuration): RedisConfiguration = {
+ val configuration = from(config.getStringArray("redisURL"),
config.getBoolean("cluster.enabled", CLUSTER_ENABLED_DEFAULT),
Option(config.getInteger("redis.ioThreads", null)).map(Integer2int),
Option(config.getInteger("redis.workerThreads", null)).map(Integer2int))
- def from(redisUri: String, isCluster: Boolean, ioThreads: Option[Int],
workerThreads:Option[Int]): RedisConfiguration = {
- Preconditions.checkArgument(redisUri != null && !redisUri.isBlank)
+ LOGGER.info("Redis was loaded with configuration: \n" +
+ "redisURL: {}\n" +
+ "isCluster: {}\n" +
+ "redis.ioThreads: {}\n" +
+ "redis.workerThreads: {}",
configuration.redisURI.value.map(_.toString).mkString(";"),
+ configuration.isCluster, configuration.ioThreads,
configuration.workerThreads)
+
+ configuration
+ }
+
+ def from(redisUri: String, isCluster: Boolean, ioThreads: Option[Int],
workerThreads: Option[Int]): RedisConfiguration =
+ from(Array(redisUri), isCluster, ioThreads, workerThreads)
+
+ def from(redisUris: Array[String], isCluster: Boolean, ioThreads:
Option[Int], workerThreads: Option[Int]): RedisConfiguration = {
+ Preconditions.checkArgument(redisUris != null && redisUris.length > 0)
Preconditions.checkNotNull(isCluster)
- RedisConfiguration(RedisUris.from(redisUri), isCluster, ioThreads,
workerThreads)
+ RedisConfiguration(RedisUris.from(redisUris), isCluster, ioThreads,
workerThreads)
}
def from(redisUri: String, isCluster: Boolean): RedisConfiguration =
from(redisUri, isCluster, None, None)
@@ -62,6 +78,8 @@ object RedisUris {
}
def from(value: String): RedisUris =
liftOrThrow(value.split(',').toList.map(RedisURI.create))
+
+ def from(value: Array[String]): RedisUris =
liftOrThrow(value.toList.map(RedisURI.create))
}
case class RedisConfiguration(redisURI: RedisUris, isCluster: Boolean,
ioThreads: Option[Int], workerThreads:Option[Int])
diff --git
a/backends-common/redis/src/test/java/org/apache/james/backends/redis/RedisConfigurationTest.scala
b/backends-common/redis/src/test/java/org/apache/james/backends/redis/RedisConfigurationTest.scala
index 94b1005569..b304089c89 100644
---
a/backends-common/redis/src/test/java/org/apache/james/backends/redis/RedisConfigurationTest.scala
+++
b/backends-common/redis/src/test/java/org/apache/james/backends/redis/RedisConfigurationTest.scala
@@ -21,6 +21,7 @@ package org.apache.james.backends.redis
import io.lettuce.core.RedisURI
import org.apache.commons.configuration2.PropertiesConfiguration
+import org.apache.commons.configuration2.convert.DefaultListDelimiterHandler
import org.scalatest.flatspec.AnyFlatSpec
import org.scalatest.matchers.should.Matchers
@@ -44,6 +45,7 @@ class RedisConfigurationTest extends AnyFlatSpec with
Matchers {
it should "parse multiple Redis URIs from config" in {
val config = new PropertiesConfiguration()
+ config.setListDelimiterHandler(new DefaultListDelimiterHandler(','))
config.addProperty("redisURL",
"redis://localhost:6379,redis://localhost:6380")
config.addProperty("cluster.enabled", true)
config.addProperty("redis.ioThreads", 16)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]