Repository: james-project
Updated Branches:
  refs/heads/master a760297cc -> cf996f1af


MAILBOX-372 Use RetryBackoffConfiguration in InVmEventDelivery


Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/cf996f1a
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/cf996f1a
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/cf996f1a

Branch: refs/heads/master
Commit: cf996f1afce58a98b9a32bc5fc365e9112b9364f
Parents: 2d48bb0
Author: tran tien duc <[email protected]>
Authored: Wed Jan 16 17:13:16 2019 +0700
Committer: Benoit Tellier <[email protected]>
Committed: Mon Jan 21 10:04:49 2019 +0700

----------------------------------------------------------------------
 .../mailbox/events/delivery/InVmEventDelivery.java  | 16 ++++++++++------
 .../james/mailbox/events/InVMEventBusTest.java      |  2 +-
 .../events/delivery/InVmEventDeliveryTest.java      |  3 ++-
 .../james/modules/mailbox/DefaultEventModule.java   |  5 ++++-
 4 files changed, 17 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/cf996f1a/mailbox/event/event-memory/src/main/java/org/apache/james/mailbox/events/delivery/InVmEventDelivery.java
----------------------------------------------------------------------
diff --git 
a/mailbox/event/event-memory/src/main/java/org/apache/james/mailbox/events/delivery/InVmEventDelivery.java
 
b/mailbox/event/event-memory/src/main/java/org/apache/james/mailbox/events/delivery/InVmEventDelivery.java
index 90e64c8..84a6a90 100644
--- 
a/mailbox/event/event-memory/src/main/java/org/apache/james/mailbox/events/delivery/InVmEventDelivery.java
+++ 
b/mailbox/event/event-memory/src/main/java/org/apache/james/mailbox/events/delivery/InVmEventDelivery.java
@@ -27,6 +27,7 @@ import javax.inject.Inject;
 
 import org.apache.james.mailbox.Event;
 import org.apache.james.mailbox.MailboxListener;
+import org.apache.james.mailbox.events.RetryBackoffConfiguration;
 import org.apache.james.metrics.api.MetricFactory;
 import org.apache.james.metrics.api.TimeMetric;
 import org.slf4j.Logger;
@@ -46,17 +47,20 @@ public class InVmEventDelivery implements EventDelivery {
     }
 
     private static final Logger LOGGER = 
LoggerFactory.getLogger(InVmEventDelivery.class);
-    private static final int MAX_RETRIES = 3;
-    private static final Duration FIRST_BACKOFF = Duration.ofMillis(100);
     private static final Duration MAX_BACKOFF = 
Duration.ofMillis(Long.MAX_VALUE);
-    private static final double DEFAULT_JITTER_FACTOR = 0.5;
 
     private final MetricFactory metricFactory;
+    private final RetryBackoffConfiguration retryBackoff;
 
     @Inject
     @VisibleForTesting
-    public InVmEventDelivery(MetricFactory metricFactory) {
+    public InVmEventDelivery(MetricFactory metricFactory, 
RetryBackoffConfiguration retryBackoff) {
         this.metricFactory = metricFactory;
+        this.retryBackoff = retryBackoff;
+    }
+
+    public InVmEventDelivery(MetricFactory metricFactory) {
+        this(metricFactory, RetryBackoffConfiguration.DEFAULT);
     }
 
     @Override
@@ -106,10 +110,10 @@ public class InVmEventDelivery implements EventDelivery {
         }
 
         return firstDelivery
-            .retryBackoff(MAX_RETRIES, FIRST_BACKOFF, MAX_BACKOFF, 
DEFAULT_JITTER_FACTOR)
+            .retryBackoff(retryBackoff.getMaxRetries(), 
retryBackoff.getFirstBackoff(), MAX_BACKOFF, retryBackoff.getJitterFactor())
             .doOnError(throwable -> LOGGER.error("listener {} exceeded maximum 
retry({}) to handle event {}",
                 listenerName(mailboxListener),
-                MAX_RETRIES,
+                retryBackoff.getMaxRetries(),
                 eventName(event),
                 throwable))
             .then();

http://git-wip-us.apache.org/repos/asf/james-project/blob/cf996f1a/mailbox/event/event-memory/src/test/java/org/apache/james/mailbox/events/InVMEventBusTest.java
----------------------------------------------------------------------
diff --git 
a/mailbox/event/event-memory/src/test/java/org/apache/james/mailbox/events/InVMEventBusTest.java
 
b/mailbox/event/event-memory/src/test/java/org/apache/james/mailbox/events/InVMEventBusTest.java
index 8df4557..2ee725b 100644
--- 
a/mailbox/event/event-memory/src/test/java/org/apache/james/mailbox/events/InVMEventBusTest.java
+++ 
b/mailbox/event/event-memory/src/test/java/org/apache/james/mailbox/events/InVMEventBusTest.java
@@ -32,7 +32,7 @@ public class InVMEventBusTest implements 
KeyContract.SingleEventBusKeyContract,
     void setUp() {
         eventBus = new InVMEventBus(
             new InVmEventDelivery(
-                new NoopMetricFactory()));
+                new NoopMetricFactory(), RetryBackoffConfiguration.DEFAULT));
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/james-project/blob/cf996f1a/mailbox/event/event-memory/src/test/java/org/apache/james/mailbox/events/delivery/InVmEventDeliveryTest.java
----------------------------------------------------------------------
diff --git 
a/mailbox/event/event-memory/src/test/java/org/apache/james/mailbox/events/delivery/InVmEventDeliveryTest.java
 
b/mailbox/event/event-memory/src/test/java/org/apache/james/mailbox/events/delivery/InVmEventDeliveryTest.java
index d09eb78..c0ae5a1 100644
--- 
a/mailbox/event/event-memory/src/test/java/org/apache/james/mailbox/events/delivery/InVmEventDeliveryTest.java
+++ 
b/mailbox/event/event-memory/src/test/java/org/apache/james/mailbox/events/delivery/InVmEventDeliveryTest.java
@@ -35,6 +35,7 @@ import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.TimeUnit;
 
 import org.apache.james.mailbox.MailboxListener;
+import org.apache.james.mailbox.events.RetryBackoffConfiguration;
 import org.apache.james.mailbox.util.EventCollector;
 import org.apache.james.metrics.api.NoopMetricFactory;
 import org.assertj.core.api.SoftAssertions;
@@ -59,7 +60,7 @@ class InVmEventDeliveryTest {
         event = mock(MailboxListener.MailboxEvent.class);
         listener = mock(MailboxListener.class);
         listener2 = mock(MailboxListener.class);
-        inVmEventDelivery = new InVmEventDelivery(new NoopMetricFactory());
+        inVmEventDelivery = new InVmEventDelivery(new NoopMetricFactory(), 
RetryBackoffConfiguration.DEFAULT);
     }
 
     @Nested

http://git-wip-us.apache.org/repos/asf/james-project/blob/cf996f1a/server/container/guice/mailbox/src/main/java/org/apache/james/modules/mailbox/DefaultEventModule.java
----------------------------------------------------------------------
diff --git 
a/server/container/guice/mailbox/src/main/java/org/apache/james/modules/mailbox/DefaultEventModule.java
 
b/server/container/guice/mailbox/src/main/java/org/apache/james/modules/mailbox/DefaultEventModule.java
index 83056d1..2cd7252 100644
--- 
a/server/container/guice/mailbox/src/main/java/org/apache/james/modules/mailbox/DefaultEventModule.java
+++ 
b/server/container/guice/mailbox/src/main/java/org/apache/james/modules/mailbox/DefaultEventModule.java
@@ -28,6 +28,7 @@ import org.apache.james.lifecycle.api.Configurable;
 import org.apache.james.mailbox.MailboxListener;
 import org.apache.james.mailbox.events.EventBus;
 import org.apache.james.mailbox.events.InVMEventBus;
+import org.apache.james.mailbox.events.RetryBackoffConfiguration;
 import org.apache.james.mailbox.events.delivery.EventDelivery;
 import org.apache.james.mailbox.events.delivery.InVmEventDelivery;
 import org.apache.james.server.core.configuration.ConfigurationProvider;
@@ -48,11 +49,13 @@ public class DefaultEventModule extends AbstractModule {
         bind(MailboxListenersLoaderImpl.class).in(Scopes.SINGLETON);
         bind(InVmEventDelivery.class).in(Scopes.SINGLETON);
         bind(InVMEventBus.class).in(Scopes.SINGLETON);
-        
+
         
bind(MailboxListenersLoader.class).to(MailboxListenersLoaderImpl.class);
         bind(EventDelivery.class).to(InVmEventDelivery.class);
         bind(EventBus.class).to(InVMEventBus.class);
 
+        
bind(RetryBackoffConfiguration.class).toInstance(RetryBackoffConfiguration.DEFAULT);
+
         Multibinder.newSetBinder(binder(), 
MailboxListener.GroupMailboxListener.class);
     }
 


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

Reply via email to