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]
