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]