You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@james.apache.org by bt...@apache.org on 2022/08/19 09:18:40 UTC
[james-project] branch master updated: JAMES-3803 RemoteDelivery uses different scheduler for dequeuing (#1121)
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 c57bf62155 JAMES-3803 RemoteDelivery uses different scheduler for dequeuing (#1121)
c57bf62155 is described below
commit c57bf62155843f2577d2c62a205d5e064b2ea5d8
Author: AdBuch <41...@users.noreply.github.com>
AuthorDate: Fri Aug 19 11:18:35 2022 +0200
JAMES-3803 RemoteDelivery uses different scheduler for dequeuing (#1121)
This is necessary as else in high load a delivery-task can queue in the same thread as the never ending dequeuing-task and stay there forever
---
.../transport/mailets/remote/delivery/DeliveryRunnable.java | 13 ++++++++-----
1 file changed, 8 insertions(+), 5 deletions(-)
diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/remote/delivery/DeliveryRunnable.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/remote/delivery/DeliveryRunnable.java
index 1c771f9920..25d3a2d549 100644
--- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/remote/delivery/DeliveryRunnable.java
+++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/remote/delivery/DeliveryRunnable.java
@@ -68,7 +68,8 @@ public class DeliveryRunnable implements Disposable {
private final Supplier<Date> dateSupplier;
private final MailetContext mailetContext;
private Disposable disposable;
- private Scheduler remoteDeliveryScheduler;
+ private Scheduler remoteDeliveryProcessScheduler;
+ private Scheduler remoteDeliveryDequeueScheduler;
public DeliveryRunnable(MailQueue queue, RemoteDeliveryConfiguration configuration, DNSService dnsServer, MetricFactory metricFactory,
MailetContext mailetContext, Bouncer bouncer) {
@@ -91,11 +92,12 @@ public class DeliveryRunnable implements Disposable {
}
public void start() {
- remoteDeliveryScheduler = Schedulers.newBoundedElastic(Schedulers.DEFAULT_BOUNDED_ELASTIC_SIZE, Schedulers.DEFAULT_BOUNDED_ELASTIC_QUEUESIZE, "RemoteDelivery");
+ remoteDeliveryProcessScheduler = Schedulers.newBoundedElastic(Schedulers.DEFAULT_BOUNDED_ELASTIC_SIZE, Schedulers.DEFAULT_BOUNDED_ELASTIC_QUEUESIZE, "RemoteDelivery-Process");
+ remoteDeliveryDequeueScheduler = Schedulers.newSingle("RemoteDelivery-Dequeue");
disposable = Flux.from(queue.deQueue())
- .flatMap(queueItem -> runStep(queueItem).subscribeOn(remoteDeliveryScheduler), Queues.SMALL_BUFFER_SIZE)
+ .flatMap(queueItem -> runStep(queueItem).subscribeOn(remoteDeliveryProcessScheduler), Queues.SMALL_BUFFER_SIZE)
.onErrorContinue(((throwable, nothing) -> LOGGER.error("Exception caught in RemoteDelivery", throwable)))
- .subscribeOn(remoteDeliveryScheduler)
+ .subscribeOn(remoteDeliveryDequeueScheduler)
.subscribe();
}
@@ -202,6 +204,7 @@ public class DeliveryRunnable implements Disposable {
@Override
public void dispose() {
disposable.dispose();
- remoteDeliveryScheduler.dispose();
+ remoteDeliveryProcessScheduler.dispose();
+ remoteDeliveryDequeueScheduler.dispose();
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@james.apache.org
For additional commands, e-mail: notifications-help@james.apache.org