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 1a40ed6  JAMES-3621 Fix clear mailbox content reactive handling
1a40ed6 is described below

commit 1a40ed6b59c9e21aa2a77e0d625f6d50e34eb1a2
Author: Benoit Tellier <[email protected]>
AuthorDate: Thu Aug 12 12:43:36 2021 +0700

    JAMES-3621 Fix clear mailbox content reactive handling
    
     - Avoid costly operation at pipeline evaluation,
     integrate their reactive version to the reactive
     pipeline.
     - Remove no longer needed exceptions in method
     signature
     - Drop no longer needed logger
---
 .../webadmin/service/ClearMailboxContentTask.java      | 18 ++++--------------
 .../james/webadmin/service/UserMailboxesService.java   | 11 ++++++-----
 2 files changed, 10 insertions(+), 19 deletions(-)

diff --git 
a/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/service/ClearMailboxContentTask.java
 
b/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/service/ClearMailboxContentTask.java
index 048e369..1607ac4 100644
--- 
a/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/service/ClearMailboxContentTask.java
+++ 
b/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/service/ClearMailboxContentTask.java
@@ -26,21 +26,16 @@ import java.util.Optional;
 import java.util.concurrent.atomic.AtomicLong;
 
 import org.apache.james.core.Username;
-import org.apache.james.mailbox.exception.MailboxException;
 import org.apache.james.task.Task;
 import org.apache.james.task.TaskExecutionDetails;
 import org.apache.james.task.TaskType;
 import org.apache.james.webadmin.validation.MailboxName;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 import com.google.common.base.MoreObjects;
 
 import reactor.core.scheduler.Schedulers;
 
 public class ClearMailboxContentTask implements Task {
-    private static final Logger LOGGER = 
LoggerFactory.getLogger(ClearMailboxContentTask.class);
-
     public static class Context {
         public static class Snapshot {
             private final long messagesSuccessCount;
@@ -182,15 +177,10 @@ public class ClearMailboxContentTask implements Task {
     }
 
     @Override
-    public Result run() throws InterruptedException {
-        try {
-            return userMailboxesService.clearMailboxContent(username, 
mailboxName, context)
-                .subscribeOn(Schedulers.elastic())
-                .block();
-        } catch (MailboxException e) {
-            LOGGER.error("Has an error when clear the mailbox content. ", e);
-            throw new InterruptedException(e.getMessage());
-        }
+    public Result run() {
+        return userMailboxesService.clearMailboxContent(username, mailboxName, 
context)
+            .subscribeOn(Schedulers.elastic())
+            .block();
     }
 
     @Override
diff --git 
a/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/service/UserMailboxesService.java
 
b/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/service/UserMailboxesService.java
index f40d84e..cff29bc 100644
--- 
a/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/service/UserMailboxesService.java
+++ 
b/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/service/UserMailboxesService.java
@@ -105,13 +105,14 @@ public class UserMailboxesService {
             .block();
     }
 
-    public Mono<Result> clearMailboxContent(Username username, MailboxName 
mailboxName, ClearMailboxContentTask.Context context) throws MailboxException {
+
+    public Mono<Result> clearMailboxContent(Username username, MailboxName 
mailboxName, ClearMailboxContentTask.Context context) {
         MailboxSession mailboxSession = 
mailboxManager.createSystemSession(username);
-        MessageManager messageManager = 
mailboxManager.getMailbox(MailboxPath.forUser(username, 
mailboxName.asString()), mailboxSession);
 
-        return 
Flux.from(messageManager.listMessagesMetadata(MessageRange.all(), 
mailboxSession))
-            .map(metaData -> metaData.getComposedMessageId().getUid())
-            .concatMap(messageUid -> deleteMessage(messageManager, messageUid, 
mailboxSession, context))
+        return 
Mono.from(mailboxManager.getMailboxReactive(MailboxPath.forUser(username, 
mailboxName.asString()), mailboxSession))
+            .flatMapMany(messageManager -> 
Flux.from(messageManager.listMessagesMetadata(MessageRange.all(), 
mailboxSession))
+                .map(metaData -> metaData.getComposedMessageId().getUid())
+                .concatMap(messageUid -> deleteMessage(messageManager, 
messageUid, mailboxSession, context)))
             .onErrorResume(e -> {
                 LOGGER.error("Error when clear mailbox content. Mailbox {} for 
user {}", mailboxName.asString(), username, e);
                 context.incrementMessageFails();

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

Reply via email to