From f9d95b46d31fb576af0ec425bd619c0052a93c3d Mon Sep 17 00:00:00 2001 From: Luis Cruz Date: Thu, 17 Sep 2020 11:49:20 +0100 Subject: [PATCH] Don't prune messages inside dispatch script FMSG-61 #resolve --- .../messaging/core/task/MessageTask.java | 41 ++++++------------- 1 file changed, 12 insertions(+), 29 deletions(-) diff --git a/messaging-core/src/main/java/org/fenixedu/messaging/core/task/MessageTask.java b/messaging-core/src/main/java/org/fenixedu/messaging/core/task/MessageTask.java index e63b5b0..55ea4a5 100644 --- a/messaging-core/src/main/java/org/fenixedu/messaging/core/task/MessageTask.java +++ b/messaging-core/src/main/java/org/fenixedu/messaging/core/task/MessageTask.java @@ -5,44 +5,27 @@ import org.fenixedu.messaging.core.domain.Message; import org.fenixedu.messaging.core.domain.MessageDispatchReport; import org.fenixedu.messaging.core.domain.MessagingSystem; -import org.fenixedu.messaging.core.domain.Sender; - -import java.util.HashSet; -import java.util.Set; @Task(englishTitle = "Message Task", readOnly = true) public class MessageTask extends CronTask { @Override public void runTask() { - Set sendersFromMessages = new HashSet<>(); - int dispatched = 0; - for (final Message message : MessagingSystem.getPendingMessages()) { - long start = System.currentTimeMillis(); - MessageDispatchReport report = MessagingSystem.dispatch(message); - if (report != null) { - getLogger().info("Dispatched message: {} in {}ms for {} addresses", message.getExternalId(), System - .currentTimeMillis() - start, report.getTotalCount()); - dispatched++; - sendersFromMessages.add(message.getSender()); - } - } + final long dispatched = MessagingSystem.getPendingMessages().stream() + .mapToLong(this::dispatch) + .count(); if (dispatched > 0) { taskLog("Dispatched %d messages\n", dispatched); } + } - taskLog("%d possible senders to prune%n", sendersFromMessages.size()); - int pruned = 0; - for (Sender sender : sendersFromMessages){ - int diff = sender.getMessageSet().size(); - sender.pruneMessages(); - diff = diff - sender.getMessageSet().size(); - if (diff > 0) { - getLogger().info("Pruned sender: {} for {} messages", sender.getExternalId(), diff); - pruned += diff; - } - } - if (pruned > 0) { - taskLog("Pruned %d messages\n", pruned); + private long dispatch(final Message message) { + final long start = System.currentTimeMillis(); + final MessageDispatchReport report = MessagingSystem.dispatch(message); + if (report != null) { + getLogger().info("Dispatched message: {} in {}ms for {} addresses", message.getExternalId(), System + .currentTimeMillis() - start, report.getTotalCount()); + return 1; } + return 0; } }