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 2021/10/27 09:14:58 UTC
[james-project] branch master updated: JAMES-3477 Some email sent
via the mailet context were never disposed (#712)
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 3009ea6 JAMES-3477 Some email sent via the mailet context were never disposed (#712)
3009ea6 is described below
commit 3009ea62fb5cde1bd2c6db1d6579ba12b5e7739e
Author: Benoit TELLIER <bt...@linagora.com>
AuthorDate: Wed Oct 27 16:14:55 2021 +0700
JAMES-3477 Some email sent via the mailet context were never disposed (#712)
---
.../james/blob/export/file/LocalFileBlobExportMechanism.java | 7 ++++++-
.../java/org/apache/james/healthcheck/MailReceptionCheck.java | 9 ++++++---
.../james/transport/mailets/RecipientRewriteTableProcessor.java | 1 +
.../apache/james/transport/mailets/delivery/MailDispatcher.java | 2 ++
.../james/transport/mailets/jsieve/delivery/SieveExecutor.java | 1 +
5 files changed, 16 insertions(+), 4 deletions(-)
diff --git a/server/blob/blob-export-file/src/main/java/org/apache/james/blob/export/file/LocalFileBlobExportMechanism.java b/server/blob/blob-export-file/src/main/java/org/apache/james/blob/export/file/LocalFileBlobExportMechanism.java
index e6aec2b..4925775 100644
--- a/server/blob/blob-export-file/src/main/java/org/apache/james/blob/export/file/LocalFileBlobExportMechanism.java
+++ b/server/blob/blob-export-file/src/main/java/org/apache/james/blob/export/file/LocalFileBlobExportMechanism.java
@@ -39,6 +39,7 @@ import org.apache.james.core.MailAddress;
import org.apache.james.core.builder.MimeMessageBuilder;
import org.apache.james.dnsservice.api.DNSService;
import org.apache.james.filesystem.api.FileSystem;
+import org.apache.james.lifecycle.api.LifecycleUtil;
import org.apache.james.server.core.MailImpl;
import org.apache.mailet.MailetContext;
@@ -147,7 +148,11 @@ public class LocalFileBlobExportMechanism implements BlobExportMechanism {
.mimeMessage(mimeMessage)
.build();
- mailetContext.sendMail(mail);
+ try {
+ mailetContext.sendMail(mail);
+ } finally {
+ LifecycleUtil.dispose(mail);
+ }
} catch (Exception e) {
throw new BlobExportException("Error while sending email", e);
}
diff --git a/server/container/feature-checks/src/main/java/org/apache/james/healthcheck/MailReceptionCheck.java b/server/container/feature-checks/src/main/java/org/apache/james/healthcheck/MailReceptionCheck.java
index 97ef6ea..ef8fe10 100644
--- a/server/container/feature-checks/src/main/java/org/apache/james/healthcheck/MailReceptionCheck.java
+++ b/server/container/feature-checks/src/main/java/org/apache/james/healthcheck/MailReceptionCheck.java
@@ -39,6 +39,7 @@ import org.apache.james.core.healthcheck.Result;
import org.apache.james.events.Event;
import org.apache.james.events.EventBus;
import org.apache.james.events.EventListener;
+import org.apache.james.lifecycle.api.LifecycleUtil;
import org.apache.james.mailbox.MailboxManager;
import org.apache.james.mailbox.MailboxSession;
import org.apache.james.mailbox.MessageManager;
@@ -254,8 +255,8 @@ public class MailReceptionCheck implements HealthCheck {
Content content = Content.generate();
return Mono.fromCallable(() -> usersRepository.getMailAddressFor(username))
- .flatMap(address -> Mono.fromRunnable(Throwing.runnable(() ->
- mailetContext.sendMail(MailImpl.builder()
+ .flatMap(address ->
+ Mono.using(() -> MailImpl.builder()
.name(content.asString())
.sender(address)
.addRecipient(address)
@@ -264,7 +265,9 @@ public class MailReceptionCheck implements HealthCheck {
.addToRecipient(address.asString())
.setSubject(content.asString())
.setText(content.asString()))
- .build()))))
+ .build(),
+ mail -> Mono.fromRunnable(Throwing.runnable(() -> mailetContext.sendMail(mail))),
+ LifecycleUtil::dispose))
.thenReturn(content);
}
}
diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/RecipientRewriteTableProcessor.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/RecipientRewriteTableProcessor.java
index 802a43f..df1cdc6 100644
--- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/RecipientRewriteTableProcessor.java
+++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/RecipientRewriteTableProcessor.java
@@ -203,6 +203,7 @@ public class RecipientRewriteTableProcessor {
.state(errorProcessor)
.build();
mailetContext.sendMail(newMail);
+ LifecycleUtil.dispose(newMail);
}
if (executionResults.newRecipients.isEmpty()) {
diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/delivery/MailDispatcher.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/delivery/MailDispatcher.java
index 2a7bf6a..4e8d61b 100644
--- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/delivery/MailDispatcher.java
+++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/delivery/MailDispatcher.java
@@ -29,6 +29,7 @@ import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
import org.apache.james.core.MailAddress;
+import org.apache.james.lifecycle.api.LifecycleUtil;
import org.apache.james.server.core.MailImpl;
import org.apache.mailet.Mail;
import org.apache.mailet.MailetContext;
@@ -114,6 +115,7 @@ public class MailDispatcher {
.state(Mail.ERROR)
.build();
mailetContext.sendMail(newMail);
+ LifecycleUtil.dispose(newMail);
}
if (consume) {
// Consume this message
diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/jsieve/delivery/SieveExecutor.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/jsieve/delivery/SieveExecutor.java
index d86cba0..df394a6 100644
--- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/jsieve/delivery/SieveExecutor.java
+++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/jsieve/delivery/SieveExecutor.java
@@ -164,5 +164,6 @@ public class SieveExecutor {
.build();
mailetContext.sendMail(errorMail);
+ errorMail.dispose();
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@james.apache.org
For additional commands, e-mail: notifications-help@james.apache.org