From 58f0e725f759ad55af7077d82ca5af6fd2b32f54 Mon Sep 17 00:00:00 2001 From: quynhn Date: Thu, 11 May 2017 10:45:42 +0700 Subject: [PATCH] JAMES-1999 Increase init waiting time for each retrying times --- .../modules/mailbox/CassandraSessionModule.java | 3 ++- .../modules/mailbox/ElasticSearchMailboxModule.java | 3 ++- .../java/org/apache/james/DockerCassandraRule.java | 2 +- .../org/apache/james/DockerElasticSearchRule.java | 2 +- .../org/apache/james/utils/RetryExecutorUtil.java | 12 ++++++++---- 5 files changed, 14 insertions(+), 8 deletions(-) diff --git a/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/CassandraSessionModule.java b/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/CassandraSessionModule.java index ecaca9453e8..d4569f16e4c 100644 --- a/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/CassandraSessionModule.java +++ b/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/CassandraSessionModule.java @@ -19,6 +19,7 @@ package org.apache.james.modules.mailbox; import java.io.FileNotFoundException; +import java.time.LocalDateTime; import java.util.Arrays; import java.util.List; import java.util.Optional; @@ -115,7 +116,7 @@ Cluster provideCluster(CassandraSessionConfiguration cassandraSessionConfigurati } private RetryCallable getClusterRetryCallable(PropertiesConfiguration configuration, List servers, QueryLoggerConfiguration queryLoggerConfiguration) { - LOGGER.info("Trying to connect to Cassandra service"); + LOGGER.info("Trying to connect to Cassandra service at {}", LocalDateTime.now()); return context -> ClusterWithKeyspaceCreatedFactory .config(ClusterBuilder.builder() diff --git a/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/ElasticSearchMailboxModule.java b/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/ElasticSearchMailboxModule.java index e4a101100bb..443941195b1 100644 --- a/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/ElasticSearchMailboxModule.java +++ b/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/ElasticSearchMailboxModule.java @@ -20,6 +20,7 @@ package org.apache.james.modules.mailbox; import java.io.FileNotFoundException; +import java.time.LocalDateTime; import java.util.Optional; import java.util.concurrent.ExecutionException; @@ -104,7 +105,7 @@ private Client createIndexAndMapping(Client client, PropertiesConfiguration prop } private Client connectToCluster(PropertiesConfiguration propertiesReader) throws ConfigurationException { - LOGGER.info("Trying to connect to ElasticSearch service"); + LOGGER.info("Trying to connect to ElasticSearch service at {}", LocalDateTime.now()); return createIndexAndMapping(createClient(propertiesReader), propertiesReader); } diff --git a/server/container/guice/cassandra-guice/src/test/java/org/apache/james/DockerCassandraRule.java b/server/container/guice/cassandra-guice/src/test/java/org/apache/james/DockerCassandraRule.java index f5849e66674..31c6685a388 100644 --- a/server/container/guice/cassandra-guice/src/test/java/org/apache/james/DockerCassandraRule.java +++ b/server/container/guice/cassandra-guice/src/test/java/org/apache/james/DockerCassandraRule.java @@ -47,7 +47,7 @@ public PropertiesConfiguration getCassandraConfigurationForDocker() { configuration.addProperty("cassandra.nodes", getIp() + ":" + CASSANDRA_PORT); configuration.addProperty("cassandra.keyspace", "apache_james"); configuration.addProperty("cassandra.replication.factor", 1); - configuration.addProperty("cassandra.retryConnection.maxRetries", 10); + configuration.addProperty("cassandra.retryConnection.maxRetries", 20); configuration.addProperty("cassandra.retryConnection.minDelay", 5000); return configuration; diff --git a/server/container/guice/cassandra-guice/src/test/java/org/apache/james/DockerElasticSearchRule.java b/server/container/guice/cassandra-guice/src/test/java/org/apache/james/DockerElasticSearchRule.java index 3598b4fd92c..11022382e00 100644 --- a/server/container/guice/cassandra-guice/src/test/java/org/apache/james/DockerElasticSearchRule.java +++ b/server/container/guice/cassandra-guice/src/test/java/org/apache/james/DockerElasticSearchRule.java @@ -51,7 +51,7 @@ public PropertiesConfiguration getElasticSearchConfigurationForDocker() { configuration.addProperty("elasticsearch.nb.shards", 1); configuration.addProperty("elasticsearch.nb.replica", 0); configuration.addProperty("elasticsearch.retryConnection.maxRetries", 7); - configuration.addProperty("elasticsearch.retryConnection.minDelay", 30); + configuration.addProperty("elasticsearch.retryConnection.minDelay", 3000); configuration.addProperty("elasticsearch.indexAttachments", false); configuration.addProperty("elasticsearch.http.host", getIp()); configuration.addProperty("elasticsearch.http.port", ELASTIC_SEARCH_HTTP_PORT); diff --git a/server/container/guice/guice-common/src/main/java/org/apache/james/utils/RetryExecutorUtil.java b/server/container/guice/guice-common/src/main/java/org/apache/james/utils/RetryExecutorUtil.java index 8737ffec13f..c98ccdb782e 100644 --- a/server/container/guice/guice-common/src/main/java/org/apache/james/utils/RetryExecutorUtil.java +++ b/server/container/guice/guice-common/src/main/java/org/apache/james/utils/RetryExecutorUtil.java @@ -20,17 +20,21 @@ package org.apache.james.utils; import com.nurkiewicz.asyncretry.AsyncRetryExecutor; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; public class RetryExecutorUtil { + private static final Logger LOG = LoggerFactory.getLogger(RetryExecutorUtil.class); - public static final int INITIAL_DELAY_MILLIS = 500; - public static final int MULTIPLIER = 2; + private static final int INITIAL_DELAY_MILLIS = 500; + private static final int MULTIPLIER = 2; - public static AsyncRetryExecutor retryOnExceptions(AsyncRetryExecutor executor, int maxRetries, int minDelay, Class clazz) { + public static AsyncRetryExecutor retryOnExceptions(AsyncRetryExecutor executor, int maxRetries, int minDelay, Class... clazz) { + LOG.info("The action should retry when {} and retry to {} times if needed", clazz, maxRetries); return executor - .retryOn(clazz) .withExponentialBackoff(INITIAL_DELAY_MILLIS, MULTIPLIER) .withProportionalJitter() + .retryOn(clazz) .withMaxRetries(maxRetries) .withMinDelay(minDelay); }