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/03/11 05:10:59 UTC

[james-project] branch master updated (6f646b0 -> fa12f5e)

This is an automated email from the ASF dual-hosted git repository.

btellier pushed a change to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git.


    from 6f646b0  [RELEASE] Fix a typo in Memory imapserver.xml
     new c458cea  JAMES-3723 Allow to not consume emails upon reprocessing
     new 33f3d94  JAMES-3723 Fix a typo Reprocessing/Reindexing
     new fa12f5e  JAMES-3723 Document reprocessing with consume = false

The 3 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../tools/indexer/ErrorRecoveryIndexationTask.java | 14 ++--
 .../mailbox/tools/indexer/FullReindexingTask.java  | 14 ++--
 .../mailbox/tools/indexer/ReIndexerPerformer.java  | 38 ++++-----
 ...ocessingContext.java => ReIndexingContext.java} |  4 +-
 ...tion.java => ReIndexingContextInformation.java} |  6 +-
 ...O.java => ReIndexingContextInformationDTO.java} | 58 +++++++-------
 .../tools/indexer/SingleMailboxReindexingTask.java | 14 ++--
 ...lboxReindexingTaskAdditionalInformationDTO.java | 28 +++----
 .../tools/indexer/SingleMessageReindexingTask.java |  2 +-
 .../mailbox/tools/indexer/UserReindexingTask.java  | 14 ++--
 ...UserReindexingTaskAdditionalInformationDTO.java | 24 +++---
 .../tools/indexer/CassandraReIndexerImplTest.java  | 12 +--
 ...rorRecoveryIndexationTaskSerializationTest.java | 14 ++--
 .../FullReindexingTaskSerializationTest.java       | 10 +--
 .../docs/modules/ROOT/pages/operate/webadmin.adoc  | 20 ++++-
 .../mailbox/ReIndexingTaskSerializationModule.java |  6 +-
 .../WebAdminReIndexingTaskSerializationModule.java |  6 +-
 ...dminServerTaskSerializationIntegrationTest.java |  1 +
 ...> WebAdminIndexationContextInformationDTO.java} | 22 +++---
 ...lboxReindexingTaskAdditionalInformationDTO.java |  4 +-
 ...UserReindexingTaskAdditionalInformationDTO.java |  4 +-
 ...bAdminIndexationContextInformationDTOTest.java} | 20 ++---
 ...a => WebAdminSingleMailboxIndexingDTOTest.java} |  2 +-
 ...est.java => WebAdminUserReIndexingDTOTest.java} |  2 +-
 .../james/webadmin/routes/MailboxesRoutesTest.java | 88 ++++++++++-----------
 .../james/webadmin/routes/MessageRoutesTest.java   |  2 +-
 .../webadmin/routes/UserMailboxesRoutesTest.java   |  3 +-
 .../webadmin/routes/MailRepositoriesRoutes.java    | 20 +++--
 .../webadmin/service/ReprocessingAllMailsTask.java | 37 +++------
 ...essingAllMailsTaskAdditionalInformationDTO.java | 18 ++++-
 .../service/ReprocessingAllMailsTaskDTO.java       | 20 +++--
 .../webadmin/service/ReprocessingOneMailTask.java  | 38 +++------
 ...cessingOneMailTaskAdditionalInformationDTO.java | 18 ++++-
 .../service/ReprocessingOneMailTaskDTO.java        | 24 ++++--
 .../webadmin/service/ReprocessingService.java      | 44 ++++++++---
 .../routes/MailRepositoriesRoutesTest.java         | 91 ++++++++++++++++++++++
 .../service/ReprocessingAllMailsTaskTest.java      | 49 +++++++++---
 .../service/ReprocessingOneMailTaskTest.java       | 42 ++++++++--
 .../webadmin/service/ReprocessingServiceTest.java  | 12 +--
 src/site/markdown/server/manage-webadmin.md        |  6 ++
 40 files changed, 531 insertions(+), 320 deletions(-)
 rename mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/{ReprocessingContext.java => ReIndexingContext.java} (98%)
 rename mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/{ReprocessingContextInformation.java => ReIndexingContextInformation.java} (87%)
 rename mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/{ReprocessingContextInformationDTO.java => ReIndexingContextInformationDTO.java} (80%)
 rename server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/dto/{WebAdminReprocessingContextInformationDTO.java => WebAdminIndexationContextInformationDTO.java} (82%)
 rename server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/dto/{WebAdminReprocessingContextInformationDTOTest.java => WebAdminIndexationContextInformationDTOTest.java} (85%)
 rename server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/dto/{WebAdminSingleMailboxReprocessingDTOTest.java => WebAdminSingleMailboxIndexingDTOTest.java} (98%)
 rename server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/dto/{WebAdminUserReprocessingDTOTest.java => WebAdminUserReIndexingDTOTest.java} (99%)

---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@james.apache.org
For additional commands, e-mail: notifications-help@james.apache.org


[james-project] 02/03: JAMES-3723 Fix a typo Reprocessing/Reindexing

Posted by bt...@apache.org.
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

commit 33f3d94bd3d390b2d3a7dc267569de7e9498546c
Author: Benoit Tellier <bt...@linagora.com>
AuthorDate: Sat Mar 5 22:08:14 2022 +0700

    JAMES-3723 Fix a typo Reprocessing/Reindexing
---
 .../tools/indexer/ErrorRecoveryIndexationTask.java | 14 ++--
 .../mailbox/tools/indexer/FullReindexingTask.java  | 14 ++--
 .../mailbox/tools/indexer/ReIndexerPerformer.java  | 38 +++++-----
 ...ocessingContext.java => ReIndexingContext.java} |  4 +-
 ...tion.java => ReIndexingContextInformation.java} |  6 +-
 ...O.java => ReIndexingContextInformationDTO.java} | 58 +++++++-------
 .../tools/indexer/SingleMailboxReindexingTask.java | 14 ++--
 ...lboxReindexingTaskAdditionalInformationDTO.java | 28 +++----
 .../tools/indexer/SingleMessageReindexingTask.java |  2 +-
 .../mailbox/tools/indexer/UserReindexingTask.java  | 14 ++--
 ...UserReindexingTaskAdditionalInformationDTO.java | 24 +++---
 .../tools/indexer/CassandraReIndexerImplTest.java  | 12 +--
 ...rorRecoveryIndexationTaskSerializationTest.java | 14 ++--
 .../FullReindexingTaskSerializationTest.java       | 10 +--
 .../mailbox/ReIndexingTaskSerializationModule.java |  6 +-
 .../WebAdminReIndexingTaskSerializationModule.java |  6 +-
 ...> WebAdminIndexationContextInformationDTO.java} | 22 +++---
 ...lboxReindexingTaskAdditionalInformationDTO.java |  4 +-
 ...UserReindexingTaskAdditionalInformationDTO.java |  4 +-
 ...bAdminIndexationContextInformationDTOTest.java} | 20 ++---
 ...a => WebAdminSingleMailboxIndexingDTOTest.java} |  2 +-
 ...est.java => WebAdminUserReIndexingDTOTest.java} |  2 +-
 .../james/webadmin/routes/MailboxesRoutesTest.java | 88 +++++++++++-----------
 .../james/webadmin/routes/MessageRoutesTest.java   |  2 +-
 .../webadmin/routes/UserMailboxesRoutesTest.java   |  3 +-
 25 files changed, 205 insertions(+), 206 deletions(-)

diff --git a/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/ErrorRecoveryIndexationTask.java b/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/ErrorRecoveryIndexationTask.java
index 5f5c1e4..28c13a2 100644
--- a/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/ErrorRecoveryIndexationTask.java
+++ b/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/ErrorRecoveryIndexationTask.java
@@ -77,20 +77,20 @@ public class ErrorRecoveryIndexationTask implements Task {
     }
 
     private final ReIndexerPerformer reIndexerPerformer;
-    private final ReprocessingContext reprocessingContext;
+    private final ReIndexingContext reIndexingContext;
     private final ReIndexingExecutionFailures previousFailures;
     private final RunningOptions runningOptions;
 
     public ErrorRecoveryIndexationTask(ReIndexerPerformer reIndexerPerformer, ReIndexingExecutionFailures previousFailures, RunningOptions runningOptions) {
         this.reIndexerPerformer = reIndexerPerformer;
         this.previousFailures = previousFailures;
-        this.reprocessingContext = new ReprocessingContext();
+        this.reIndexingContext = new ReIndexingContext();
         this.runningOptions = runningOptions;
     }
 
     @Override
     public Result run() {
-        return reIndexerPerformer.reIndexErrors(reprocessingContext, previousFailures, runningOptions).block();
+        return reIndexerPerformer.reIndexErrors(reIndexingContext, previousFailures, runningOptions).block();
     }
 
     @Override
@@ -108,10 +108,10 @@ public class ErrorRecoveryIndexationTask implements Task {
 
     @Override
     public Optional<TaskExecutionDetails.AdditionalInformation> details() {
-        return Optional.of(new ReprocessingContextInformationDTO.ReprocessingContextInformationForErrorRecoveryIndexationTask(
-            reprocessingContext.successfullyReprocessedMailCount(),
-            reprocessingContext.failedReprocessingMailCount(),
-            reprocessingContext.failures(),
+        return Optional.of(new ReIndexingContextInformationDTO.ReIndexingContextInformationForErrorRecoveryIndexationTask(
+            reIndexingContext.successfullyReprocessedMailCount(),
+            reIndexingContext.failedReprocessingMailCount(),
+            reIndexingContext.failures(),
             Clock.systemUTC().instant(),
             runningOptions));
     }
diff --git a/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/FullReindexingTask.java b/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/FullReindexingTask.java
index b99eb5f..f974cb3 100644
--- a/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/FullReindexingTask.java
+++ b/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/FullReindexingTask.java
@@ -36,19 +36,19 @@ public class FullReindexingTask implements Task {
     public static final TaskType FULL_RE_INDEXING = TaskType.of("full-reindexing");
 
     private final ReIndexerPerformer reIndexerPerformer;
-    private final ReprocessingContext reprocessingContext;
+    private final ReIndexingContext reIndexingContext;
     private final RunningOptions runningOptions;
 
     @Inject
     public FullReindexingTask(ReIndexerPerformer reIndexerPerformer, RunningOptions runningOptions) {
         this.reIndexerPerformer = reIndexerPerformer;
-        this.reprocessingContext = new ReprocessingContext();
+        this.reIndexingContext = new ReIndexingContext();
         this.runningOptions = runningOptions;
     }
 
     @Override
     public Result run() {
-        return reIndexerPerformer.reIndexAllMessages(reprocessingContext, runningOptions)
+        return reIndexerPerformer.reIndexAllMessages(reIndexingContext, runningOptions)
             .onErrorResume(e -> Mono.just(Result.PARTIAL))
             .block();
     }
@@ -64,10 +64,10 @@ public class FullReindexingTask implements Task {
 
     @Override
     public Optional<TaskExecutionDetails.AdditionalInformation> details() {
-        return Optional.of(new ReprocessingContextInformationDTO.ReprocessingContextInformationForFullReindexingTask(
-            reprocessingContext.successfullyReprocessedMailCount(),
-            reprocessingContext.failedReprocessingMailCount(),
-            reprocessingContext.failures(),
+        return Optional.of(new ReIndexingContextInformationDTO.ReIndexingContextInformationForFullReindexingTask(
+            reIndexingContext.successfullyReprocessedMailCount(),
+            reIndexingContext.failedReprocessingMailCount(),
+            reIndexingContext.failures(),
             Clock.systemUTC().instant(),
             runningOptions));
     }
diff --git a/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/ReIndexerPerformer.java b/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/ReIndexerPerformer.java
index 5f32f55..9844ab7 100644
--- a/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/ReIndexerPerformer.java
+++ b/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/ReIndexerPerformer.java
@@ -84,7 +84,7 @@ public class ReIndexerPerformer {
     }
 
     private interface Failure {
-        void recordFailure(ReprocessingContext context);
+        void recordFailure(ReIndexingContext context);
     }
 
     private static class MailboxFailure implements Failure {
@@ -99,7 +99,7 @@ public class ReIndexerPerformer {
         }
 
         @Override
-        public void recordFailure(ReprocessingContext context) {
+        public void recordFailure(ReIndexingContext context) {
             context.recordMailboxFailure(mailboxId);
         }
     }
@@ -122,7 +122,7 @@ public class ReIndexerPerformer {
         }
 
         @Override
-        public void recordFailure(ReprocessingContext context) {
+        public void recordFailure(ReIndexingContext context) {
             context.recordFailureDetailsForMessage(mailboxId, uid);
         }
     }
@@ -146,28 +146,28 @@ public class ReIndexerPerformer {
         this.mailboxSessionMapperFactory = mailboxSessionMapperFactory;
     }
 
-    Mono<Result> reIndexAllMessages(ReprocessingContext reprocessingContext, RunningOptions runningOptions) {
+    Mono<Result> reIndexAllMessages(ReIndexingContext reIndexingContext, RunningOptions runningOptions) {
         MailboxSession mailboxSession = mailboxManager.createSystemSession(RE_INDEXER_PERFORMER_USER);
         LOGGER.info("Starting a full reindex");
 
         Flux<Either<Failure, ReIndexingEntry>> entriesToIndex = mailboxSessionMapperFactory.getMailboxMapper(mailboxSession).list()
             .flatMap(mailbox -> reIndexingEntriesForMailbox(mailbox, mailboxSession, runningOptions), MAILBOX_CONCURRENCY);
 
-        return reIndexMessages(entriesToIndex, runningOptions, reprocessingContext)
+        return reIndexMessages(entriesToIndex, runningOptions, reIndexingContext)
             .doFinally(any -> LOGGER.info("Full reindex finished"));
     }
 
-    Mono<Result> reIndexSingleMailbox(MailboxId mailboxId, ReprocessingContext reprocessingContext, RunningOptions runningOptions) {
+    Mono<Result> reIndexSingleMailbox(MailboxId mailboxId, ReIndexingContext reIndexingContext, RunningOptions runningOptions) {
         MailboxSession mailboxSession = mailboxManager.createSystemSession(RE_INDEXER_PERFORMER_USER);
 
         Flux<Either<Failure, ReIndexingEntry>> entriesToIndex = mailboxSessionMapperFactory.getMailboxMapper(mailboxSession)
             .findMailboxById(mailboxId)
             .flatMapMany(mailbox -> reIndexingEntriesForMailbox(mailbox, mailboxSession, runningOptions));
 
-        return reIndexMessages(entriesToIndex, runningOptions, reprocessingContext);
+        return reIndexMessages(entriesToIndex, runningOptions, reIndexingContext);
     }
 
-    Mono<Result> reIndexUserMailboxes(Username username, ReprocessingContext reprocessingContext, RunningOptions runningOptions) {
+    Mono<Result> reIndexUserMailboxes(Username username, ReIndexingContext reIndexingContext, RunningOptions runningOptions) {
         MailboxSession mailboxSession = mailboxManager.createSystemSession(username);
         MailboxMapper mailboxMapper = mailboxSessionMapperFactory.getMailboxMapper(mailboxSession);
         LOGGER.info("Starting a reindex for user {}", username.asString());
@@ -178,7 +178,7 @@ public class ReIndexerPerformer {
             Flux<Either<Failure, ReIndexingEntry>> entriesToIndex = mailboxMapper.findMailboxWithPathLike(mailboxQuery.asUserBound())
                 .flatMap(mailbox -> reIndexingEntriesForMailbox(mailbox, mailboxSession, runningOptions), MAILBOX_CONCURRENCY);
 
-            return reIndexMessages(entriesToIndex, runningOptions, reprocessingContext)
+            return reIndexMessages(entriesToIndex, runningOptions, reIndexingContext)
                 .doFinally(any -> LOGGER.info("User {} reindex finished", username.asString()));
         } catch (Exception e) {
             LOGGER.error("Error fetching mailboxes for user: {}", username.asString());
@@ -186,7 +186,7 @@ public class ReIndexerPerformer {
         }
     }
 
-    Mono<Result> reIndexSingleMessage(MailboxId mailboxId, MessageUid uid, ReprocessingContext reprocessingContext) {
+    Mono<Result> reIndexSingleMessage(MailboxId mailboxId, MessageUid uid, ReIndexingContext reIndexingContext) {
         MailboxSession mailboxSession = mailboxManager.createSystemSession(RE_INDEXER_PERFORMER_USER);
 
         return mailboxSessionMapperFactory.getMailboxMapper(mailboxSession)
@@ -211,7 +211,7 @@ public class ReIndexerPerformer {
             });
     }
 
-    Mono<Result> reIndexErrors(ReprocessingContext reprocessingContext, ReIndexingExecutionFailures previousReIndexingFailures, RunningOptions runningOptions) {
+    Mono<Result> reIndexErrors(ReIndexingContext reIndexingContext, ReIndexingExecutionFailures previousReIndexingFailures, RunningOptions runningOptions) {
         MailboxSession mailboxSession = mailboxManager.createSystemSession(RE_INDEXER_PERFORMER_USER);
         MailboxMapper mapper = mailboxSessionMapperFactory.getMailboxMapper(mailboxSession);
 
@@ -226,7 +226,7 @@ public class ReIndexerPerformer {
                         return Mono.just(Either.left(new MailboxFailure(mailboxId)));
                     }), MAILBOX_CONCURRENCY));
 
-        return reIndexMessages(entriesToIndex, runningOptions, reprocessingContext);
+        return reIndexMessages(entriesToIndex, runningOptions, reIndexingContext);
     }
 
     private Mono<Result> reIndex(MailboxMessage mailboxMessage, MailboxSession session) {
@@ -281,29 +281,29 @@ public class ReIndexerPerformer {
         }
     }
 
-    private Mono<Task.Result> reIndexMessages(Flux<Either<Failure, ReIndexingEntry>> entriesToIndex, RunningOptions runningOptions, ReprocessingContext reprocessingContext) {
+    private Mono<Task.Result> reIndexMessages(Flux<Either<Failure, ReIndexingEntry>> entriesToIndex, RunningOptions runningOptions, ReIndexingContext reIndexingContext) {
         return entriesToIndex.transform(
             ReactorUtils.<Either<Failure, ReIndexingEntry>, Task.Result>throttle()
                 .elements(runningOptions.getMessagesPerSecond())
                 .per(Duration.ofSeconds(1))
-                .forOperation(entry -> reIndex(entry, reprocessingContext, runningOptions)))
+                .forOperation(entry -> reIndex(entry, reIndexingContext, runningOptions)))
             .reduce(Task::combine)
             .switchIfEmpty(Mono.just(Result.COMPLETED));
     }
 
-    private Mono<Task.Result> reIndex(Either<Failure, ReIndexingEntry> failureOrEntry, ReprocessingContext reprocessingContext, RunningOptions runningOptions) {
+    private Mono<Task.Result> reIndex(Either<Failure, ReIndexingEntry> failureOrEntry, ReIndexingContext reIndexingContext, RunningOptions runningOptions) {
         return toMono(failureOrEntry.map(entry -> reIndex(entry, runningOptions)))
             .map(this::flatten)
-            .map(failureOrTaskResult -> recordIndexingResult(failureOrTaskResult, reprocessingContext));
+            .map(failureOrTaskResult -> recordIndexingResult(failureOrTaskResult, reIndexingContext));
     }
 
-    private Result recordIndexingResult(Either<Failure, Result> failureOrTaskResult, ReprocessingContext reprocessingContext) {
+    private Result recordIndexingResult(Either<Failure, Result> failureOrTaskResult, ReIndexingContext reIndexingContext) {
         return failureOrTaskResult.fold(
             failure -> {
-                failure.recordFailure(reprocessingContext);
+                failure.recordFailure(reIndexingContext);
                 return Result.PARTIAL;
             },
-            result -> result.onComplete(reprocessingContext::recordSuccess));
+            result -> result.onComplete(reIndexingContext::recordSuccess));
     }
 
     private Mono<Either<Failure, Result>> reIndex(ReIndexingEntry entry, RunningOptions runningOptions) {
diff --git a/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/ReprocessingContext.java b/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/ReIndexingContext.java
similarity index 98%
rename from mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/ReprocessingContext.java
rename to mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/ReIndexingContext.java
index bc4facb..5a8b0a7 100644
--- a/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/ReprocessingContext.java
+++ b/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/ReIndexingContext.java
@@ -28,13 +28,13 @@ import org.apache.james.mailbox.model.MailboxId;
 
 import com.google.common.collect.ImmutableList;
 
-class ReprocessingContext {
+class ReIndexingContext {
     private final AtomicInteger successfullyReprocessedMails;
     private final AtomicInteger failedReprocessingMails;
     private final ConcurrentLinkedDeque<ReIndexingExecutionFailures.ReIndexingFailure> failures;
     private final ConcurrentLinkedDeque<MailboxId> mailboxFailures;
 
-    ReprocessingContext() {
+    ReIndexingContext() {
         failedReprocessingMails = new AtomicInteger(0);
         successfullyReprocessedMails = new AtomicInteger(0);
         failures = new ConcurrentLinkedDeque<>();
diff --git a/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/ReprocessingContextInformation.java b/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/ReIndexingContextInformation.java
similarity index 87%
rename from mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/ReprocessingContextInformation.java
rename to mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/ReIndexingContextInformation.java
index 0dc02b0..41aace0 100644
--- a/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/ReprocessingContextInformation.java
+++ b/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/ReIndexingContextInformation.java
@@ -26,7 +26,7 @@ import org.apache.james.mailbox.indexer.ReIndexer.RunningOptions;
 import org.apache.james.mailbox.indexer.ReIndexingExecutionFailures;
 import org.apache.james.task.TaskExecutionDetails;
 
-public class ReprocessingContextInformation implements TaskExecutionDetails.AdditionalInformation, IndexingDetailInformation {
+public class ReIndexingContextInformation implements TaskExecutionDetails.AdditionalInformation, IndexingDetailInformation {
 
     private final int successfullyReprocessedMailCount;
     private final int failedReprocessedMailCount;
@@ -34,8 +34,8 @@ public class ReprocessingContextInformation implements TaskExecutionDetails.Addi
     private final Instant timestamp;
     private final RunningOptions runningOptions;
 
-    ReprocessingContextInformation(int successfullyReprocessedMailCount, int failedReprocessedMailCount,
-                                   ReIndexingExecutionFailures failures, Instant timestamp, RunningOptions runningOptions) {
+    ReIndexingContextInformation(int successfullyReprocessedMailCount, int failedReprocessedMailCount,
+                                 ReIndexingExecutionFailures failures, Instant timestamp, RunningOptions runningOptions) {
         this.successfullyReprocessedMailCount = successfullyReprocessedMailCount;
         this.failedReprocessedMailCount = failedReprocessedMailCount;
         this.failures = failures;
diff --git a/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/ReprocessingContextInformationDTO.java b/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/ReIndexingContextInformationDTO.java
similarity index 80%
rename from mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/ReprocessingContextInformationDTO.java
rename to mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/ReIndexingContextInformationDTO.java
index d22ea83..c458630 100644
--- a/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/ReprocessingContextInformationDTO.java
+++ b/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/ReIndexingContextInformationDTO.java
@@ -40,7 +40,7 @@ import com.google.common.base.Preconditions;
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableListMultimap;
 
-public class ReprocessingContextInformationDTO implements AdditionalInformationDTO {
+public class ReIndexingContextInformationDTO implements AdditionalInformationDTO {
 
     public static class ReindexingFailureDTO {
 
@@ -61,9 +61,9 @@ public class ReprocessingContextInformationDTO implements AdditionalInformationD
         }
     }
 
-    public static class ReprocessingContextInformationForErrorRecoveryIndexationTask extends ReprocessingContextInformation {
+    public static class ReIndexingContextInformationForErrorRecoveryIndexationTask extends ReIndexingContextInformation {
 
-        public static class DTO extends ReprocessingContextInformationDTO {
+        public static class DTO extends ReIndexingContextInformationDTO {
 
             DTO(@JsonProperty("type") String type,
                 @JsonProperty("successfullyReprocessedMailCount") int successfullyReprocessedMailCount,
@@ -77,10 +77,10 @@ public class ReprocessingContextInformationDTO implements AdditionalInformationD
             }
         }
 
-        public static AdditionalInformationDTOModule<ReprocessingContextInformationForErrorRecoveryIndexationTask, DTO> module(MailboxId.Factory mailboxIdFactory) {
-            return DTOModule.forDomainObject(ReprocessingContextInformationForErrorRecoveryIndexationTask.class)
+        public static AdditionalInformationDTOModule<ReIndexingContextInformationForErrorRecoveryIndexationTask, DTO> module(MailboxId.Factory mailboxIdFactory) {
+            return DTOModule.forDomainObject(ReIndexingContextInformationForErrorRecoveryIndexationTask.class)
                 .convertToDTO(DTO.class)
-                .toDomainObjectConverter(dto -> new ReprocessingContextInformationForErrorRecoveryIndexationTask(
+                .toDomainObjectConverter(dto -> new ReIndexingContextInformationForErrorRecoveryIndexationTask(
                     dto.successfullyReprocessedMailCount,
                     dto.failedReprocessedMailCount,
                     deserializeFailures(mailboxIdFactory, dto.messageFailures, dto.mailboxFailures.orElse(ImmutableList.of())),
@@ -103,18 +103,18 @@ public class ReprocessingContextInformationDTO implements AdditionalInformationD
         }
 
         @VisibleForTesting
-        public ReprocessingContextInformationForErrorRecoveryIndexationTask(int successfullyReprocessedMailCount,
-                                                                     int failedReprocessedMailCount,
-                                                                     ReIndexingExecutionFailures failures,
-                                                                     Instant timestamp,
-                                                                     RunningOptions runningOptions) {
+        public ReIndexingContextInformationForErrorRecoveryIndexationTask(int successfullyReprocessedMailCount,
+                                                                          int failedReprocessedMailCount,
+                                                                          ReIndexingExecutionFailures failures,
+                                                                          Instant timestamp,
+                                                                          RunningOptions runningOptions) {
             super(successfullyReprocessedMailCount, failedReprocessedMailCount, failures, timestamp, runningOptions);
         }
     }
 
-    public static class ReprocessingContextInformationForFullReindexingTask extends ReprocessingContextInformation {
+    public static class ReIndexingContextInformationForFullReindexingTask extends ReIndexingContextInformation {
 
-        public static class DTO extends ReprocessingContextInformationDTO {
+        public static class DTO extends ReIndexingContextInformationDTO {
 
             DTO(@JsonProperty("type") String type,
                 @JsonProperty("successfullyReprocessedMailCount") int successfullyReprocessedMailCount,
@@ -128,10 +128,10 @@ public class ReprocessingContextInformationDTO implements AdditionalInformationD
             }
         }
 
-        public static AdditionalInformationDTOModule<ReprocessingContextInformationForFullReindexingTask, DTO> module(MailboxId.Factory mailboxIdFactory) {
-            return DTOModule.forDomainObject(ReprocessingContextInformationForFullReindexingTask.class)
+        public static AdditionalInformationDTOModule<ReIndexingContextInformationForFullReindexingTask, DTO> module(MailboxId.Factory mailboxIdFactory) {
+            return DTOModule.forDomainObject(ReIndexingContextInformationForFullReindexingTask.class)
                 .convertToDTO(DTO.class)
-                .toDomainObjectConverter(dto -> new ReprocessingContextInformationForFullReindexingTask(
+                .toDomainObjectConverter(dto -> new ReIndexingContextInformationForFullReindexingTask(
                     dto.successfullyReprocessedMailCount,
                     dto.failedReprocessedMailCount,
                     deserializeFailures(mailboxIdFactory, dto.messageFailures, dto.mailboxFailures.orElse(ImmutableList.of())),
@@ -153,11 +153,11 @@ public class ReprocessingContextInformationDTO implements AdditionalInformationD
         }
 
         @VisibleForTesting
-        public ReprocessingContextInformationForFullReindexingTask(int successfullyReprocessedMailCount,
-                                                            int failedReprocessedMailCount,
-                                                            ReIndexingExecutionFailures failures,
-                                                            Instant timestamp,
-                                                            RunningOptions runningOptions) {
+        public ReIndexingContextInformationForFullReindexingTask(int successfullyReprocessedMailCount,
+                                                                 int failedReprocessedMailCount,
+                                                                 ReIndexingExecutionFailures failures,
+                                                                 Instant timestamp,
+                                                                 RunningOptions runningOptions) {
             super(successfullyReprocessedMailCount, failedReprocessedMailCount, failures, timestamp, runningOptions);
         }
     }
@@ -223,14 +223,14 @@ public class ReprocessingContextInformationDTO implements AdditionalInformationD
     protected final Instant timestamp;
     protected final Optional<RunningOptionsDTO> runningOptions;
 
-    ReprocessingContextInformationDTO(@JsonProperty("type") String type,
-                                      @JsonProperty("successfullyReprocessedMailCount") int successfullyReprocessedMailCount,
-                                      @JsonProperty("failedReprocessedMailCount") int failedReprocessedMailCount,
-                                      @JsonProperty("failures") Optional<List<ReindexingFailureDTO>> failures,
-                                      @JsonProperty("messageFailures") Optional<List<ReindexingFailureDTO>> messageFailures,
-                                      @JsonProperty("mailboxFailures") Optional<List<String>> mailboxFailures,
-                                      @JsonProperty("timestamp") Instant timestamp,
-                                      @JsonProperty("runningOptions") Optional<RunningOptionsDTO> runningOptions) {
+    ReIndexingContextInformationDTO(@JsonProperty("type") String type,
+                                    @JsonProperty("successfullyReprocessedMailCount") int successfullyReprocessedMailCount,
+                                    @JsonProperty("failedReprocessedMailCount") int failedReprocessedMailCount,
+                                    @JsonProperty("failures") Optional<List<ReindexingFailureDTO>> failures,
+                                    @JsonProperty("messageFailures") Optional<List<ReindexingFailureDTO>> messageFailures,
+                                    @JsonProperty("mailboxFailures") Optional<List<String>> mailboxFailures,
+                                    @JsonProperty("timestamp") Instant timestamp,
+                                    @JsonProperty("runningOptions") Optional<RunningOptionsDTO> runningOptions) {
         this.type = type;
         this.successfullyReprocessedMailCount = successfullyReprocessedMailCount;
         this.failedReprocessedMailCount = failedReprocessedMailCount;
diff --git a/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/SingleMailboxReindexingTask.java b/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/SingleMailboxReindexingTask.java
index 668b934..3285d5a 100644
--- a/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/SingleMailboxReindexingTask.java
+++ b/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/SingleMailboxReindexingTask.java
@@ -38,7 +38,7 @@ public class SingleMailboxReindexingTask implements Task {
 
     public static final TaskType TYPE = TaskType.of("mailbox-reindexing");
 
-    public static class AdditionalInformation extends ReprocessingContextInformation {
+    public static class AdditionalInformation extends ReIndexingContextInformation {
         private final MailboxId mailboxId;
 
         @VisibleForTesting
@@ -76,21 +76,21 @@ public class SingleMailboxReindexingTask implements Task {
 
     private final ReIndexerPerformer reIndexerPerformer;
     private final MailboxId mailboxId;
-    private final ReprocessingContext reprocessingContext;
+    private final ReIndexingContext reIndexingContext;
     private final RunningOptions runningOptions;
 
     @Inject
     public SingleMailboxReindexingTask(ReIndexerPerformer reIndexerPerformer, MailboxId mailboxId, RunningOptions runningOptions) {
         this.reIndexerPerformer = reIndexerPerformer;
         this.mailboxId = mailboxId;
-        this.reprocessingContext = new ReprocessingContext();
+        this.reIndexingContext = new ReIndexingContext();
         this.runningOptions = runningOptions;
     }
 
     @Override
     public Result run() {
         try {
-            return reIndexerPerformer.reIndexSingleMailbox(mailboxId, reprocessingContext, runningOptions)
+            return reIndexerPerformer.reIndexSingleMailbox(mailboxId, reIndexingContext, runningOptions)
                 .block();
         } catch (Exception e) {
             return Result.PARTIAL;
@@ -115,9 +115,9 @@ public class SingleMailboxReindexingTask implements Task {
         return Optional.of(
             new SingleMailboxReindexingTask.AdditionalInformation(
                 mailboxId,
-                reprocessingContext.successfullyReprocessedMailCount(),
-                reprocessingContext.failedReprocessingMailCount(),
-                reprocessingContext.failures(),
+                reIndexingContext.successfullyReprocessedMailCount(),
+                reIndexingContext.failedReprocessingMailCount(),
+                reIndexingContext.failures(),
                 Clock.systemUTC().instant(),
                 runningOptions)
         );
diff --git a/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/SingleMailboxReindexingTaskAdditionalInformationDTO.java b/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/SingleMailboxReindexingTaskAdditionalInformationDTO.java
index faec1f4..d4ef440 100644
--- a/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/SingleMailboxReindexingTaskAdditionalInformationDTO.java
+++ b/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/SingleMailboxReindexingTaskAdditionalInformationDTO.java
@@ -40,7 +40,7 @@ public class SingleMailboxReindexingTaskAdditionalInformationDTO implements Addi
             .toDomainObjectConverter(dto -> new SingleMailboxReindexingTask.AdditionalInformation(factory.fromString(dto.getMailboxId()),
                 dto.getSuccessfullyReprocessedMailCount(),
                 dto.getFailedReprocessedMailCount(),
-                ReprocessingContextInformationDTO.deserializeFailures(factory, dto.getMessageFailures(), dto.getMailboxFailures().orElse(ImmutableList.of())),
+                ReIndexingContextInformationDTO.deserializeFailures(factory, dto.getMessageFailures(), dto.getMailboxFailures().orElse(ImmutableList.of())),
                 dto.getTimestamp(),
                 dto.getRunningOptions()
                     .map(RunningOptionsDTO::toDomainObject)
@@ -52,7 +52,7 @@ public class SingleMailboxReindexingTaskAdditionalInformationDTO implements Addi
                 details.getSuccessfullyReprocessedMailCount(),
                 details.getFailedReprocessedMailCount(),
                 Optional.empty(),
-                Optional.of(ReprocessingContextInformationDTO.serializeFailures(details.failures())),
+                Optional.of(ReIndexingContextInformationDTO.serializeFailures(details.failures())),
                 Optional.of(details.failures().mailboxFailures().stream().map(MailboxId::serialize).collect(ImmutableList.toImmutableList())),
                 details.timestamp(),
                 Optional.of(RunningOptionsDTO.toDTO(details.getRunningOptions()))
@@ -61,7 +61,7 @@ public class SingleMailboxReindexingTaskAdditionalInformationDTO implements Addi
             .withFactory(AdditionalInformationDTOModule::new);
     }
 
-    private final ReprocessingContextInformationDTO reprocessingContextInformationDTO;
+    private final ReIndexingContextInformationDTO reIndexingContextInformationDTO;
     private final String mailboxId;
 
     @JsonCreator
@@ -69,13 +69,13 @@ public class SingleMailboxReindexingTaskAdditionalInformationDTO implements Addi
                                                                 @JsonProperty("mailboxId") String mailboxId,
                                                                 @JsonProperty("successfullyReprocessedMailCount") int successfullyReprocessedMailCount,
                                                                 @JsonProperty("failedReprocessedMailCount") int failedReprocessedMailCount,
-                                                                @JsonProperty("failures") Optional<List<ReprocessingContextInformationDTO.ReindexingFailureDTO>> failures,
-                                                                @JsonProperty("messageFailures") Optional<List<ReprocessingContextInformationDTO.ReindexingFailureDTO>> messageFailures,
+                                                                @JsonProperty("failures") Optional<List<ReIndexingContextInformationDTO.ReindexingFailureDTO>> failures,
+                                                                @JsonProperty("messageFailures") Optional<List<ReIndexingContextInformationDTO.ReindexingFailureDTO>> messageFailures,
                                                                 @JsonProperty("mailboxFailures") Optional<List<String>> mailboxFailures,
                                                                 @JsonProperty("timestamp") Instant timestamp,
                                                                 @JsonProperty("runningOptions") Optional<RunningOptionsDTO> runningOptions) {
         this.mailboxId = mailboxId;
-        this.reprocessingContextInformationDTO = new ReprocessingContextInformationDTO(
+        this.reIndexingContextInformationDTO = new ReIndexingContextInformationDTO(
             type,
             successfullyReprocessedMailCount,
             failedReprocessedMailCount,
@@ -88,11 +88,11 @@ public class SingleMailboxReindexingTaskAdditionalInformationDTO implements Addi
 
     @Override
     public String getType() {
-        return reprocessingContextInformationDTO.getType();
+        return reIndexingContextInformationDTO.getType();
     }
 
     public Instant getTimestamp() {
-        return reprocessingContextInformationDTO.getTimestamp();
+        return reIndexingContextInformationDTO.getTimestamp();
     }
 
     public String getMailboxId() {
@@ -100,22 +100,22 @@ public class SingleMailboxReindexingTaskAdditionalInformationDTO implements Addi
     }
 
     public int getSuccessfullyReprocessedMailCount() {
-        return reprocessingContextInformationDTO.getSuccessfullyReprocessedMailCount();
+        return reIndexingContextInformationDTO.getSuccessfullyReprocessedMailCount();
     }
 
     public int getFailedReprocessedMailCount() {
-        return reprocessingContextInformationDTO.getFailedReprocessedMailCount();
+        return reIndexingContextInformationDTO.getFailedReprocessedMailCount();
     }
 
-    public List<ReprocessingContextInformationDTO.ReindexingFailureDTO> getMessageFailures() {
-        return reprocessingContextInformationDTO.getMessageFailures();
+    public List<ReIndexingContextInformationDTO.ReindexingFailureDTO> getMessageFailures() {
+        return reIndexingContextInformationDTO.getMessageFailures();
     }
 
     public Optional<List<String>> getMailboxFailures() {
-        return reprocessingContextInformationDTO.getMailboxFailures();
+        return reIndexingContextInformationDTO.getMailboxFailures();
     }
 
     public Optional<RunningOptionsDTO> getRunningOptions() {
-        return reprocessingContextInformationDTO.getRunningOptions();
+        return reIndexingContextInformationDTO.getRunningOptions();
     }
 }
diff --git a/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/SingleMessageReindexingTask.java b/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/SingleMessageReindexingTask.java
index a5a787d..5264100 100644
--- a/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/SingleMessageReindexingTask.java
+++ b/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/SingleMessageReindexingTask.java
@@ -96,7 +96,7 @@ public class SingleMessageReindexingTask implements Task {
 
     @Override
     public Result run() {
-        return reIndexerPerformer.reIndexSingleMessage(mailboxId, uid, new ReprocessingContext())
+        return reIndexerPerformer.reIndexSingleMessage(mailboxId, uid, new ReIndexingContext())
             .onErrorResume(e -> {
                 LOGGER.warn("Error encountered while reindexing {} : {}", mailboxId, uid, e);
                 return Mono.just(Result.PARTIAL);
diff --git a/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/UserReindexingTask.java b/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/UserReindexingTask.java
index 5fe450b..f7b82c9 100644
--- a/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/UserReindexingTask.java
+++ b/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/UserReindexingTask.java
@@ -40,7 +40,7 @@ public class UserReindexingTask implements Task {
 
     public static final TaskType USER_RE_INDEXING = TaskType.of("user-reindexing");
 
-    public static class AdditionalInformation extends ReprocessingContextInformation {
+    public static class AdditionalInformation extends ReIndexingContextInformation {
         private final Username username;
 
         @VisibleForTesting
@@ -59,14 +59,14 @@ public class UserReindexingTask implements Task {
 
     private final ReIndexerPerformer reIndexerPerformer;
     private final Username username;
-    private final ReprocessingContext reprocessingContext;
+    private final ReIndexingContext reIndexingContext;
     private final RunningOptions runningOptions;
 
     @Inject
     public UserReindexingTask(ReIndexerPerformer reIndexerPerformer, Username username, RunningOptions runningOptions) {
         this.reIndexerPerformer = reIndexerPerformer;
         this.username = username;
-        this.reprocessingContext = new ReprocessingContext();
+        this.reIndexingContext = new ReIndexingContext();
         this.runningOptions = runningOptions;
     }
 
@@ -90,7 +90,7 @@ public class UserReindexingTask implements Task {
 
     @Override
     public Result run() {
-        return reIndexerPerformer.reIndexUserMailboxes(username, reprocessingContext, runningOptions)
+        return reIndexerPerformer.reIndexUserMailboxes(username, reIndexingContext, runningOptions)
             .onErrorResume(e -> Mono.just(Result.PARTIAL))
             .block();
     }
@@ -111,9 +111,9 @@ public class UserReindexingTask implements Task {
     @Override
     public Optional<TaskExecutionDetails.AdditionalInformation> details() {
         return Optional.of(new UserReindexingTask.AdditionalInformation(username,
-            reprocessingContext.successfullyReprocessedMailCount(),
-            reprocessingContext.failedReprocessingMailCount(),
-            reprocessingContext.failures(),
+            reIndexingContext.successfullyReprocessedMailCount(),
+            reIndexingContext.failedReprocessingMailCount(),
+            reIndexingContext.failures(),
             Clock.systemUTC().instant(),
             runningOptions)
         );
diff --git a/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/UserReindexingTaskAdditionalInformationDTO.java b/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/UserReindexingTaskAdditionalInformationDTO.java
index ce952b6..7817bef 100644
--- a/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/UserReindexingTaskAdditionalInformationDTO.java
+++ b/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/UserReindexingTaskAdditionalInformationDTO.java
@@ -28,7 +28,7 @@ import org.apache.james.mailbox.indexer.ReIndexer;
 import org.apache.james.mailbox.model.MailboxId;
 import org.apache.james.server.task.json.dto.AdditionalInformationDTO;
 import org.apache.james.server.task.json.dto.AdditionalInformationDTOModule;
-import org.apache.mailbox.tools.indexer.ReprocessingContextInformationDTO.ReindexingFailureDTO;
+import org.apache.mailbox.tools.indexer.ReIndexingContextInformationDTO.ReindexingFailureDTO;
 
 import com.fasterxml.jackson.annotation.JsonCreator;
 import com.fasterxml.jackson.annotation.JsonProperty;
@@ -42,7 +42,7 @@ public class UserReindexingTaskAdditionalInformationDTO implements AdditionalInf
             .toDomainObjectConverter(dto -> new UserReindexingTask.AdditionalInformation(Username.of(dto.getUser()),
                 dto.getSuccessfullyReprocessedMailCount(),
                 dto.getFailedReprocessedMailCount(),
-                ReprocessingContextInformationDTO.deserializeFailures(factory, dto.getMessageFailures(), dto.getMailboxFailures().orElse(ImmutableList.of())),
+                ReIndexingContextInformationDTO.deserializeFailures(factory, dto.getMessageFailures(), dto.getMailboxFailures().orElse(ImmutableList.of())),
                 dto.getTimestamp(),
                 dto.getRunningOptions()
                     .map(RunningOptionsDTO::toDomainObject)
@@ -54,7 +54,7 @@ public class UserReindexingTaskAdditionalInformationDTO implements AdditionalInf
                 details.getSuccessfullyReprocessedMailCount(),
                 details.getFailedReprocessedMailCount(),
                 Optional.empty(),
-                Optional.of(ReprocessingContextInformationDTO.serializeFailures(details.failures())),
+                Optional.of(ReIndexingContextInformationDTO.serializeFailures(details.failures())),
                 Optional.of(details.failures().mailboxFailures().stream().map(MailboxId::serialize).collect(ImmutableList.toImmutableList())),
                 details.timestamp(),
                 Optional.of(RunningOptionsDTO.toDTO(details.getRunningOptions()))))
@@ -62,7 +62,7 @@ public class UserReindexingTaskAdditionalInformationDTO implements AdditionalInf
             .withFactory(AdditionalInformationDTOModule::new);
     }
 
-    private final ReprocessingContextInformationDTO reprocessingContextInformationDTO;
+    private final ReIndexingContextInformationDTO reIndexingContextInformationDTO;
     private final String user;
 
     @JsonCreator
@@ -77,7 +77,7 @@ public class UserReindexingTaskAdditionalInformationDTO implements AdditionalInf
                                                        @JsonProperty("runningOptions") Optional<RunningOptionsDTO> runningOptions
                                                        ) {
         this.user = user;
-        this.reprocessingContextInformationDTO = new ReprocessingContextInformationDTO(type,
+        this.reIndexingContextInformationDTO = new ReIndexingContextInformationDTO(type,
             successfullyReprocessedMailCount,
             failedReprocessedMailCount,
             failures,
@@ -89,11 +89,11 @@ public class UserReindexingTaskAdditionalInformationDTO implements AdditionalInf
 
     @Override
     public String getType() {
-        return reprocessingContextInformationDTO.getType();
+        return reIndexingContextInformationDTO.getType();
     }
 
     public Instant getTimestamp() {
-        return reprocessingContextInformationDTO.getTimestamp();
+        return reIndexingContextInformationDTO.getTimestamp();
     }
 
     public String getUser() {
@@ -101,22 +101,22 @@ public class UserReindexingTaskAdditionalInformationDTO implements AdditionalInf
     }
 
     public int getSuccessfullyReprocessedMailCount() {
-        return reprocessingContextInformationDTO.getSuccessfullyReprocessedMailCount();
+        return reIndexingContextInformationDTO.getSuccessfullyReprocessedMailCount();
     }
 
     public int getFailedReprocessedMailCount() {
-        return reprocessingContextInformationDTO.getFailedReprocessedMailCount();
+        return reIndexingContextInformationDTO.getFailedReprocessedMailCount();
     }
 
     public List<ReindexingFailureDTO> getMessageFailures() {
-        return reprocessingContextInformationDTO.getMessageFailures();
+        return reIndexingContextInformationDTO.getMessageFailures();
     }
 
     public Optional<List<String>> getMailboxFailures() {
-        return reprocessingContextInformationDTO.getMailboxFailures();
+        return reIndexingContextInformationDTO.getMailboxFailures();
     }
 
     public Optional<RunningOptionsDTO> getRunningOptions() {
-        return reprocessingContextInformationDTO.getRunningOptions();
+        return reIndexingContextInformationDTO.getRunningOptions();
     }
 }
diff --git a/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/CassandraReIndexerImplTest.java b/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/CassandraReIndexerImplTest.java
index 9ccdd1f..0ddf6df 100644
--- a/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/CassandraReIndexerImplTest.java
+++ b/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/CassandraReIndexerImplTest.java
@@ -53,8 +53,8 @@ import org.apache.james.mailbox.store.mail.model.MailboxMessage;
 import org.apache.james.mailbox.store.search.ListeningMessageSearchIndex;
 import org.apache.james.task.Task;
 import org.apache.james.util.concurrency.ConcurrentTestRunner;
-import org.apache.mailbox.tools.indexer.ReprocessingContextInformationDTO.ReprocessingContextInformationForErrorRecoveryIndexationTask;
-import org.apache.mailbox.tools.indexer.ReprocessingContextInformationDTO.ReprocessingContextInformationForFullReindexingTask;
+import org.apache.mailbox.tools.indexer.ReIndexingContextInformationDTO.ReIndexingContextInformationForErrorRecoveryIndexationTask;
+import org.apache.mailbox.tools.indexer.ReIndexingContextInformationDTO.ReIndexingContextInformationForFullReindexingTask;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Nested;
 import org.junit.jupiter.api.Test;
@@ -154,7 +154,7 @@ public class CassandraReIndexerImplTest {
             Task task = reIndexer.reIndex(ReIndexer.RunningOptions.DEFAULT);
             task.run();
 
-            ReprocessingContextInformationForFullReindexingTask information = (ReprocessingContextInformationForFullReindexingTask) task.details().get();
+            ReIndexingContextInformationForFullReindexingTask information = (ReIndexingContextInformationForFullReindexingTask) task.details().get();
             assertThat(information.failures().mailboxFailures()).containsExactly(mailbox.getId());
         }
 
@@ -279,7 +279,7 @@ public class CassandraReIndexerImplTest {
                 ReIndexer.RunningOptions.DEFAULT);
             task.run();
 
-            ReprocessingContextInformationForErrorRecoveryIndexationTask information = (ReprocessingContextInformationForErrorRecoveryIndexationTask) task.details().get();
+            ReIndexingContextInformationForErrorRecoveryIndexationTask information = (ReIndexingContextInformationForErrorRecoveryIndexationTask) task.details().get();
             assertThat(information.failures().mailboxFailures()).containsExactly(mailbox.getId());
         }
 
@@ -303,7 +303,7 @@ public class CassandraReIndexerImplTest {
                 ReIndexer.RunningOptions.DEFAULT);
             task.run();
 
-            ReprocessingContextInformationForErrorRecoveryIndexationTask information = (ReprocessingContextInformationForErrorRecoveryIndexationTask) task.details().get();
+            ReIndexingContextInformationForErrorRecoveryIndexationTask information = (ReIndexingContextInformationForErrorRecoveryIndexationTask) task.details().get();
             assertThat(information.failures().messageFailures()).containsExactly(new ReIndexingFailure(mailbox.getId(), appendResult.getId().getUid()));
         }
 
@@ -323,7 +323,7 @@ public class CassandraReIndexerImplTest {
             Task task = reIndexer.reIndex(ReIndexer.RunningOptions.DEFAULT);
             task.run();
 
-            ReprocessingContextInformationForFullReindexingTask information = (ReprocessingContextInformationForFullReindexingTask) task.details().get();
+            ReIndexingContextInformationForFullReindexingTask information = (ReIndexingContextInformationForFullReindexingTask) task.details().get();
             assertThat(information.failures().messageFailures()).containsExactly(new ReIndexingFailure(mailbox.getId(), appendResult.getId().getUid()));
         }
     }
diff --git a/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/ErrorRecoveryIndexationTaskSerializationTest.java b/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/ErrorRecoveryIndexationTaskSerializationTest.java
index 7ef471c..a964c03 100644
--- a/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/ErrorRecoveryIndexationTaskSerializationTest.java
+++ b/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/ErrorRecoveryIndexationTaskSerializationTest.java
@@ -30,7 +30,7 @@ import org.apache.james.mailbox.MessageUid;
 import org.apache.james.mailbox.indexer.ReIndexer.RunningOptions;
 import org.apache.james.mailbox.indexer.ReIndexingExecutionFailures;
 import org.apache.james.mailbox.model.TestId;
-import org.apache.mailbox.tools.indexer.ReprocessingContextInformationDTO.ReprocessingContextInformationForErrorRecoveryIndexationTask;
+import org.apache.mailbox.tools.indexer.ReIndexingContextInformationDTO.ReIndexingContextInformationForErrorRecoveryIndexationTask;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 
@@ -90,8 +90,8 @@ class ErrorRecoveryIndexationTaskSerializationTest {
 
     @Test
     void additionalInformationShouldBeSerializable() throws Exception {
-        ReprocessingContextInformationForErrorRecoveryIndexationTask details = new ReprocessingContextInformationForErrorRecoveryIndexationTask(successfullyReprocessedMailCount, failedReprocessedMailCount, executionFailures, TIMESTAMP, RunningOptions.DEFAULT);
-        JsonSerializationVerifier.dtoModule(ReprocessingContextInformationForErrorRecoveryIndexationTask.module(mailboxIdFactory))
+        ReIndexingContextInformationForErrorRecoveryIndexationTask details = new ReIndexingContextInformationForErrorRecoveryIndexationTask(successfullyReprocessedMailCount, failedReprocessedMailCount, executionFailures, TIMESTAMP, RunningOptions.DEFAULT);
+        JsonSerializationVerifier.dtoModule(ReIndexingContextInformationForErrorRecoveryIndexationTask.module(mailboxIdFactory))
             .bean(details)
             .json(serializedAdditionalInformation)
             .verify();
@@ -102,8 +102,8 @@ class ErrorRecoveryIndexationTaskSerializationTest {
         RunningOptions runningOptions = RunningOptions.builder()
             .mode(RunningOptions.Mode.FIX_OUTDATED)
             .build();
-        ReprocessingContextInformationForErrorRecoveryIndexationTask details = new ReprocessingContextInformationForErrorRecoveryIndexationTask(successfullyReprocessedMailCount, failedReprocessedMailCount, executionFailures, TIMESTAMP, runningOptions);
-        JsonSerializationVerifier.dtoModule(ReprocessingContextInformationForErrorRecoveryIndexationTask.module(mailboxIdFactory))
+        ReIndexingContextInformationForErrorRecoveryIndexationTask details = new ReIndexingContextInformationForErrorRecoveryIndexationTask(successfullyReprocessedMailCount, failedReprocessedMailCount, executionFailures, TIMESTAMP, runningOptions);
+        JsonSerializationVerifier.dtoModule(ReIndexingContextInformationForErrorRecoveryIndexationTask.module(mailboxIdFactory))
             .bean(details)
             .json(serializedAdditionalInformationWithCorrectMode)
             .verify();
@@ -111,11 +111,11 @@ class ErrorRecoveryIndexationTaskSerializationTest {
 
     @Test
     void legacyAdditionalInformationShouldBeDeserializable() throws Exception {
-        ReprocessingContextInformationForErrorRecoveryIndexationTask legacyAdditionalInformation = JsonGenericSerializer.forModules(ReprocessingContextInformationDTO.ReprocessingContextInformationForErrorRecoveryIndexationTask.module(new TestId.Factory()))
+        ReIndexingContextInformationForErrorRecoveryIndexationTask legacyAdditionalInformation = JsonGenericSerializer.forModules(ReIndexingContextInformationForErrorRecoveryIndexationTask.module(new TestId.Factory()))
             .withoutNestedType()
             .deserialize(legacySerializedAdditionalInformation);
 
-        ReprocessingContextInformationDTO.ReprocessingContextInformationForFullReindexingTask expected = new ReprocessingContextInformationDTO.ReprocessingContextInformationForFullReindexingTask(
+        ReIndexingContextInformationDTO.ReIndexingContextInformationForFullReindexingTask expected = new ReIndexingContextInformationDTO.ReIndexingContextInformationForFullReindexingTask(
             42,
             2,
             new ReIndexingExecutionFailures(failures, ImmutableList.of()),
diff --git a/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/FullReindexingTaskSerializationTest.java b/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/FullReindexingTaskSerializationTest.java
index 81ae782..a540f48 100644
--- a/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/FullReindexingTaskSerializationTest.java
+++ b/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/FullReindexingTaskSerializationTest.java
@@ -29,7 +29,7 @@ import org.apache.james.mailbox.MessageUid;
 import org.apache.james.mailbox.indexer.ReIndexer.RunningOptions;
 import org.apache.james.mailbox.indexer.ReIndexingExecutionFailures;
 import org.apache.james.mailbox.model.TestId;
-import org.apache.mailbox.tools.indexer.ReprocessingContextInformationDTO.ReprocessingContextInformationForFullReindexingTask;
+import org.apache.mailbox.tools.indexer.ReIndexingContextInformationDTO.ReIndexingContextInformationForFullReindexingTask;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 
@@ -91,9 +91,9 @@ class FullReindexingTaskSerializationTest {
         RunningOptions runningOptions = RunningOptions.builder()
             .mode(RunningOptions.Mode.FIX_OUTDATED)
             .build();
-        ReprocessingContextInformationForFullReindexingTask details = new ReprocessingContextInformationForFullReindexingTask(successfullyReprocessedMailCount, failedReprocessedMailCount, reIndexingExecutionFailures, TIMESTAMP, runningOptions);
+        ReIndexingContextInformationForFullReindexingTask details = new ReIndexingContextInformationForFullReindexingTask(successfullyReprocessedMailCount, failedReprocessedMailCount, reIndexingExecutionFailures, TIMESTAMP, runningOptions);
 
-        JsonSerializationVerifier.dtoModule(ReprocessingContextInformationForFullReindexingTask.module(new TestId.Factory()))
+        JsonSerializationVerifier.dtoModule(ReIndexingContextInformationForFullReindexingTask.module(new TestId.Factory()))
             .bean(details)
             .json(serializedAdditionalInformation)
             .verify();
@@ -101,11 +101,11 @@ class FullReindexingTaskSerializationTest {
 
     @Test
     void legacyAdditionalInformationShouldBeDeserializable() throws Exception {
-        ReprocessingContextInformationForFullReindexingTask legacyAdditionalInformation = JsonGenericSerializer.forModules(ReprocessingContextInformationForFullReindexingTask.module(new TestId.Factory()))
+        ReIndexingContextInformationForFullReindexingTask legacyAdditionalInformation = JsonGenericSerializer.forModules(ReIndexingContextInformationForFullReindexingTask.module(new TestId.Factory()))
             .withoutNestedType()
             .deserialize(legacySerializedAdditionalInformation);
 
-        ReprocessingContextInformationForFullReindexingTask expected = new ReprocessingContextInformationForFullReindexingTask(
+        ReIndexingContextInformationForFullReindexingTask expected = new ReIndexingContextInformationForFullReindexingTask(
             42,
             2,
             new ReIndexingExecutionFailures(ImmutableList.of(
diff --git a/server/container/guice/mailbox/src/main/java/org/apache/james/modules/mailbox/ReIndexingTaskSerializationModule.java b/server/container/guice/mailbox/src/main/java/org/apache/james/modules/mailbox/ReIndexingTaskSerializationModule.java
index cc90eb6..0ec7c4e 100644
--- a/server/container/guice/mailbox/src/main/java/org/apache/james/modules/mailbox/ReIndexingTaskSerializationModule.java
+++ b/server/container/guice/mailbox/src/main/java/org/apache/james/modules/mailbox/ReIndexingTaskSerializationModule.java
@@ -33,7 +33,7 @@ import org.apache.mailbox.tools.indexer.MessageIdReIndexingTask;
 import org.apache.mailbox.tools.indexer.MessageIdReindexingTaskAdditionalInformationDTO;
 import org.apache.mailbox.tools.indexer.MessageIdReindexingTaskDTO;
 import org.apache.mailbox.tools.indexer.ReIndexerPerformer;
-import org.apache.mailbox.tools.indexer.ReprocessingContextInformationDTO;
+import org.apache.mailbox.tools.indexer.ReIndexingContextInformationDTO;
 import org.apache.mailbox.tools.indexer.SingleMailboxReindexingTask;
 import org.apache.mailbox.tools.indexer.SingleMailboxReindexingTaskAdditionalInformationDTO;
 import org.apache.mailbox.tools.indexer.SingleMailboxReindexingTaskDTO;
@@ -80,12 +80,12 @@ public class ReIndexingTaskSerializationModule extends AbstractModule {
 
     @ProvidesIntoSet
     public AdditionalInformationDTOModule<? extends TaskExecutionDetails.AdditionalInformation, ? extends  AdditionalInformationDTO> errorRecoveryAdditionalInformation(MailboxId.Factory mailboxIdFactory) {
-        return ReprocessingContextInformationDTO.ReprocessingContextInformationForErrorRecoveryIndexationTask.module(mailboxIdFactory);
+        return ReIndexingContextInformationDTO.ReIndexingContextInformationForErrorRecoveryIndexationTask.module(mailboxIdFactory);
     }
 
     @ProvidesIntoSet
     public AdditionalInformationDTOModule<? extends TaskExecutionDetails.AdditionalInformation, ? extends  AdditionalInformationDTO> fullReindexAdditionalInformation(MailboxId.Factory mailboxIdFactory) {
-        return ReprocessingContextInformationDTO.ReprocessingContextInformationForFullReindexingTask.module(mailboxIdFactory);
+        return ReIndexingContextInformationDTO.ReIndexingContextInformationForFullReindexingTask.module(mailboxIdFactory);
     }
 
     @ProvidesIntoSet
diff --git a/server/container/guice/protocols/webadmin-mailbox/src/main/java/org/apache/james/modules/server/WebAdminReIndexingTaskSerializationModule.java b/server/container/guice/protocols/webadmin-mailbox/src/main/java/org/apache/james/modules/server/WebAdminReIndexingTaskSerializationModule.java
index 537d758..960878d 100644
--- a/server/container/guice/protocols/webadmin-mailbox/src/main/java/org/apache/james/modules/server/WebAdminReIndexingTaskSerializationModule.java
+++ b/server/container/guice/protocols/webadmin-mailbox/src/main/java/org/apache/james/modules/server/WebAdminReIndexingTaskSerializationModule.java
@@ -24,7 +24,7 @@ import org.apache.james.server.task.json.dto.AdditionalInformationDTO;
 import org.apache.james.server.task.json.dto.AdditionalInformationDTOModule;
 import org.apache.james.task.TaskExecutionDetails;
 import org.apache.james.webadmin.dto.DTOModuleInjections;
-import org.apache.james.webadmin.dto.WebAdminReprocessingContextInformationDTO;
+import org.apache.james.webadmin.dto.WebAdminIndexationContextInformationDTO;
 import org.apache.james.webadmin.dto.WebAdminSingleMailboxReindexingTaskAdditionalInformationDTO;
 import org.apache.james.webadmin.dto.WebAdminUserReindexingTaskAdditionalInformationDTO;
 import org.apache.mailbox.tools.indexer.MessageIdReindexingTaskAdditionalInformationDTO;
@@ -38,13 +38,13 @@ public class WebAdminReIndexingTaskSerializationModule extends AbstractModule {
     @Named(DTOModuleInjections.WEBADMIN_DTO)
     @ProvidesIntoSet
     public AdditionalInformationDTOModule<? extends TaskExecutionDetails.AdditionalInformation, ? extends  AdditionalInformationDTO> errorRecoveryAdditionalInformation(MailboxId.Factory mailboxIdFactory) {
-        return WebAdminReprocessingContextInformationDTO.WebAdminErrorRecoveryIndexationDTO.serializationModule();
+        return WebAdminIndexationContextInformationDTO.WebAdminErrorRecoveryIndexationDTO.serializationModule();
     }
 
     @Named(DTOModuleInjections.WEBADMIN_DTO)
     @ProvidesIntoSet
     public AdditionalInformationDTOModule<? extends TaskExecutionDetails.AdditionalInformation, ? extends  AdditionalInformationDTO> fullReindexAdditionalInformation() {
-        return WebAdminReprocessingContextInformationDTO.WebAdminFullIndexationDTO.serializationModule();
+        return WebAdminIndexationContextInformationDTO.WebAdminFullIndexationDTO.serializationModule();
     }
 
     @Named(DTOModuleInjections.WEBADMIN_DTO)
diff --git a/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/dto/WebAdminReprocessingContextInformationDTO.java b/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/dto/WebAdminIndexationContextInformationDTO.java
similarity index 82%
rename from server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/dto/WebAdminReprocessingContextInformationDTO.java
rename to server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/dto/WebAdminIndexationContextInformationDTO.java
index 35aa0b2..de6e1e1 100644
--- a/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/dto/WebAdminReprocessingContextInformationDTO.java
+++ b/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/dto/WebAdminIndexationContextInformationDTO.java
@@ -29,15 +29,15 @@ import org.apache.james.server.task.json.dto.AdditionalInformationDTO;
 import org.apache.james.server.task.json.dto.AdditionalInformationDTOModule;
 import org.apache.mailbox.tools.indexer.ErrorRecoveryIndexationTask;
 import org.apache.mailbox.tools.indexer.FullReindexingTask;
-import org.apache.mailbox.tools.indexer.ReprocessingContextInformationDTO;
+import org.apache.mailbox.tools.indexer.ReIndexingContextInformationDTO;
 import org.apache.mailbox.tools.indexer.RunningOptionsDTO;
 
 import com.google.common.collect.ImmutableList;
 
-public class WebAdminReprocessingContextInformationDTO implements AdditionalInformationDTO {
-    public static class WebAdminErrorRecoveryIndexationDTO extends WebAdminReprocessingContextInformationDTO {
-        public static AdditionalInformationDTOModule<ReprocessingContextInformationDTO.ReprocessingContextInformationForErrorRecoveryIndexationTask, WebAdminErrorRecoveryIndexationDTO> serializationModule() {
-            return DTOModule.forDomainObject(ReprocessingContextInformationDTO.ReprocessingContextInformationForErrorRecoveryIndexationTask.class)
+public class WebAdminIndexationContextInformationDTO implements AdditionalInformationDTO {
+    public static class WebAdminErrorRecoveryIndexationDTO extends WebAdminIndexationContextInformationDTO {
+        public static AdditionalInformationDTOModule<ReIndexingContextInformationDTO.ReIndexingContextInformationForErrorRecoveryIndexationTask, WebAdminErrorRecoveryIndexationDTO> serializationModule() {
+            return DTOModule.forDomainObject(ReIndexingContextInformationDTO.ReIndexingContextInformationForErrorRecoveryIndexationTask.class)
                 .convertToDTO(WebAdminErrorRecoveryIndexationDTO.class)
                 .toDomainObjectConverter(dto -> {
                     throw new NotImplementedException("Deserialization not implemented for this DTO");
@@ -59,9 +59,9 @@ public class WebAdminReprocessingContextInformationDTO implements AdditionalInfo
         }
     }
 
-    public static class WebAdminFullIndexationDTO extends WebAdminReprocessingContextInformationDTO {
-        public static AdditionalInformationDTOModule<ReprocessingContextInformationDTO.ReprocessingContextInformationForFullReindexingTask, WebAdminFullIndexationDTO> serializationModule() {
-            return DTOModule.forDomainObject(ReprocessingContextInformationDTO.ReprocessingContextInformationForFullReindexingTask.class)
+    public static class WebAdminFullIndexationDTO extends WebAdminIndexationContextInformationDTO {
+        public static AdditionalInformationDTOModule<ReIndexingContextInformationDTO.ReIndexingContextInformationForFullReindexingTask, WebAdminFullIndexationDTO> serializationModule() {
+            return DTOModule.forDomainObject(ReIndexingContextInformationDTO.ReIndexingContextInformationForFullReindexingTask.class)
                 .convertToDTO(WebAdminFullIndexationDTO.class)
                 .toDomainObjectConverter(dto -> {
                     throw new NotImplementedException("Deserialization not implemented for this DTO");
@@ -91,9 +91,9 @@ public class WebAdminReprocessingContextInformationDTO implements AdditionalInfo
     private final List<String> mailboxFailures;
     protected final Instant timestamp;
 
-    WebAdminReprocessingContextInformationDTO(String type, RunningOptionsDTO runningOptions, int successfullyReprocessedMailCount, int failedReprocessedMailCount,
-                                              ReIndexingExecutionFailures failures,
-                                              Instant timestamp) {
+    WebAdminIndexationContextInformationDTO(String type, RunningOptionsDTO runningOptions, int successfullyReprocessedMailCount, int failedReprocessedMailCount,
+                                            ReIndexingExecutionFailures failures,
+                                            Instant timestamp) {
         this.type = type;
         this.runningOptions = runningOptions;
         this.successfullyReprocessedMailCount = successfullyReprocessedMailCount;
diff --git a/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/dto/WebAdminSingleMailboxReindexingTaskAdditionalInformationDTO.java b/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/dto/WebAdminSingleMailboxReindexingTaskAdditionalInformationDTO.java
index 49c2692..d4ddc12 100644
--- a/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/dto/WebAdminSingleMailboxReindexingTaskAdditionalInformationDTO.java
+++ b/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/dto/WebAdminSingleMailboxReindexingTaskAdditionalInformationDTO.java
@@ -51,7 +51,7 @@ public class WebAdminSingleMailboxReindexingTaskAdditionalInformationDTO impleme
             .withFactory(AdditionalInformationDTOModule::new);
     }
 
-    private final WebAdminReprocessingContextInformationDTO reprocessingContextInformationDTO;
+    private final WebAdminIndexationContextInformationDTO reprocessingContextInformationDTO;
     private final String mailboxId;
 
     @JsonCreator
@@ -63,7 +63,7 @@ public class WebAdminSingleMailboxReindexingTaskAdditionalInformationDTO impleme
                                                                         ReIndexingExecutionFailures failures,
                                                                         Instant timestamp) {
         this.mailboxId = mailboxId;
-        this.reprocessingContextInformationDTO = new WebAdminReprocessingContextInformationDTO(
+        this.reprocessingContextInformationDTO = new WebAdminIndexationContextInformationDTO(
             type, runningOptions, successfullyReprocessedMailCount, failedReprocessedMailCount, failures, timestamp);
     }
 
diff --git a/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/dto/WebAdminUserReindexingTaskAdditionalInformationDTO.java b/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/dto/WebAdminUserReindexingTaskAdditionalInformationDTO.java
index e1c6f62..fe0485b 100644
--- a/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/dto/WebAdminUserReindexingTaskAdditionalInformationDTO.java
+++ b/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/dto/WebAdminUserReindexingTaskAdditionalInformationDTO.java
@@ -51,7 +51,7 @@ public class WebAdminUserReindexingTaskAdditionalInformationDTO implements Addit
             .withFactory(AdditionalInformationDTOModule::new);
     }
 
-    private final WebAdminReprocessingContextInformationDTO reprocessingContextInformationDTO;
+    private final WebAdminIndexationContextInformationDTO reprocessingContextInformationDTO;
     private final String username;
 
     @JsonCreator
@@ -63,7 +63,7 @@ public class WebAdminUserReindexingTaskAdditionalInformationDTO implements Addit
                                                                ReIndexingExecutionFailures failures,
                                                                Instant timestamp) {
         this.username = username;
-        this.reprocessingContextInformationDTO = new WebAdminReprocessingContextInformationDTO(
+        this.reprocessingContextInformationDTO = new WebAdminIndexationContextInformationDTO(
             type,
             runningOptions,
             successfullyReprocessedMailCount,
diff --git a/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/dto/WebAdminReprocessingContextInformationDTOTest.java b/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/dto/WebAdminIndexationContextInformationDTOTest.java
similarity index 85%
rename from server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/dto/WebAdminReprocessingContextInformationDTOTest.java
rename to server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/dto/WebAdminIndexationContextInformationDTOTest.java
index 3f45a2d..0c2188a 100644
--- a/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/dto/WebAdminReprocessingContextInformationDTOTest.java
+++ b/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/dto/WebAdminIndexationContextInformationDTOTest.java
@@ -30,13 +30,13 @@ import org.apache.james.mailbox.indexer.ReIndexer;
 import org.apache.james.mailbox.indexer.ReIndexingExecutionFailures;
 import org.apache.james.mailbox.model.MailboxId;
 import org.apache.james.mailbox.model.TestId;
-import org.apache.mailbox.tools.indexer.ReprocessingContextInformationDTO;
+import org.apache.mailbox.tools.indexer.ReIndexingContextInformationDTO;
 import org.junit.jupiter.api.Test;
 
 import com.fasterxml.jackson.databind.exc.InvalidDefinitionException;
 import com.google.common.collect.ImmutableList;
 
-class WebAdminReprocessingContextInformationDTOTest {
+class WebAdminIndexationContextInformationDTOTest {
     private static final Instant TIMESTAMP = Instant.parse("2018-11-13T12:00:55Z");
 
     private final String serializedErrorRecoveryAdditionalInformation = "{" +
@@ -68,8 +68,8 @@ class WebAdminReprocessingContextInformationDTOTest {
 
     @Test
     void shouldSerializeErrorRecoveryAdditionalInformation() throws Exception {
-        ReprocessingContextInformationDTO.ReprocessingContextInformationForErrorRecoveryIndexationTask domainObject =
-            new ReprocessingContextInformationDTO.ReprocessingContextInformationForErrorRecoveryIndexationTask(
+        ReIndexingContextInformationDTO.ReIndexingContextInformationForErrorRecoveryIndexationTask domainObject =
+            new ReIndexingContextInformationDTO.ReIndexingContextInformationForErrorRecoveryIndexationTask(
                 42,
                 2,
                 executionFailures,
@@ -77,7 +77,7 @@ class WebAdminReprocessingContextInformationDTOTest {
                 ReIndexer.RunningOptions.DEFAULT);
 
         String json =
-            JsonGenericSerializer.forModules(WebAdminReprocessingContextInformationDTO.WebAdminErrorRecoveryIndexationDTO
+            JsonGenericSerializer.forModules(WebAdminIndexationContextInformationDTO.WebAdminErrorRecoveryIndexationDTO
                 .serializationModule())
                 .withoutNestedType()
                 .serialize(domainObject);
@@ -88,7 +88,7 @@ class WebAdminReprocessingContextInformationDTOTest {
 
     @Test
     void deserializeErrorRecoveryShouldNotBeSupported() {
-        assertThatThrownBy(() -> JsonGenericSerializer.forModules(WebAdminReprocessingContextInformationDTO.WebAdminErrorRecoveryIndexationDTO
+        assertThatThrownBy(() -> JsonGenericSerializer.forModules(WebAdminIndexationContextInformationDTO.WebAdminErrorRecoveryIndexationDTO
             .serializationModule())
             .withoutNestedType()
             .deserialize(serializedErrorRecoveryAdditionalInformation))
@@ -97,8 +97,8 @@ class WebAdminReprocessingContextInformationDTOTest {
 
     @Test
     void shouldSerializeFullAdditionalInformation() throws Exception {
-        ReprocessingContextInformationDTO.ReprocessingContextInformationForFullReindexingTask domainObject =
-            new ReprocessingContextInformationDTO.ReprocessingContextInformationForFullReindexingTask(
+        ReIndexingContextInformationDTO.ReIndexingContextInformationForFullReindexingTask domainObject =
+            new ReIndexingContextInformationDTO.ReIndexingContextInformationForFullReindexingTask(
                 42,
                 2,
                 executionFailures,
@@ -106,7 +106,7 @@ class WebAdminReprocessingContextInformationDTOTest {
                 ReIndexer.RunningOptions.DEFAULT);
 
         String json =
-            JsonGenericSerializer.forModules(WebAdminReprocessingContextInformationDTO.WebAdminFullIndexationDTO
+            JsonGenericSerializer.forModules(WebAdminIndexationContextInformationDTO.WebAdminFullIndexationDTO
                 .serializationModule())
                 .withoutNestedType()
                 .serialize(domainObject);
@@ -117,7 +117,7 @@ class WebAdminReprocessingContextInformationDTOTest {
 
     @Test
     void deserializeFullShouldNotBeSupported() {
-        assertThatThrownBy(() -> JsonGenericSerializer.forModules(WebAdminReprocessingContextInformationDTO.WebAdminFullIndexationDTO
+        assertThatThrownBy(() -> JsonGenericSerializer.forModules(WebAdminIndexationContextInformationDTO.WebAdminFullIndexationDTO
             .serializationModule())
             .withoutNestedType()
             .deserialize(serializedFullAdditionalInformation))
diff --git a/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/dto/WebAdminSingleMailboxReprocessingDTOTest.java b/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/dto/WebAdminSingleMailboxIndexingDTOTest.java
similarity index 98%
rename from server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/dto/WebAdminSingleMailboxReprocessingDTOTest.java
rename to server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/dto/WebAdminSingleMailboxIndexingDTOTest.java
index 03459e5..51361fb 100644
--- a/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/dto/WebAdminSingleMailboxReprocessingDTOTest.java
+++ b/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/dto/WebAdminSingleMailboxIndexingDTOTest.java
@@ -36,7 +36,7 @@ import org.junit.jupiter.api.Test;
 import com.fasterxml.jackson.databind.exc.InvalidDefinitionException;
 import com.google.common.collect.ImmutableList;
 
-class WebAdminSingleMailboxReprocessingDTOTest {
+class WebAdminSingleMailboxIndexingDTOTest {
     private static final Instant TIMESTAMP = Instant.parse("2018-11-13T12:00:55Z");
 
     private final String serializedAdditionalInformation = "{" +
diff --git a/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/dto/WebAdminUserReprocessingDTOTest.java b/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/dto/WebAdminUserReIndexingDTOTest.java
similarity index 99%
rename from server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/dto/WebAdminUserReprocessingDTOTest.java
rename to server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/dto/WebAdminUserReIndexingDTOTest.java
index bce12a9..6a1fa55 100644
--- a/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/dto/WebAdminUserReprocessingDTOTest.java
+++ b/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/dto/WebAdminUserReIndexingDTOTest.java
@@ -37,7 +37,7 @@ import org.junit.jupiter.api.Test;
 import com.fasterxml.jackson.databind.exc.InvalidDefinitionException;
 import com.google.common.collect.ImmutableList;
 
-class WebAdminUserReprocessingDTOTest {
+class WebAdminUserReIndexingDTOTest {
     private static final Instant TIMESTAMP = Instant.parse("2018-11-13T12:00:55Z");
 
     private final String serializedAdditionalInformation = "{" +
diff --git a/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/MailboxesRoutesTest.java b/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/MailboxesRoutesTest.java
index 935d075..344bd12 100644
--- a/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/MailboxesRoutesTest.java
+++ b/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/MailboxesRoutesTest.java
@@ -82,8 +82,8 @@ import org.apache.james.task.Hostname;
 import org.apache.james.task.MemoryTaskManager;
 import org.apache.james.webadmin.WebAdminServer;
 import org.apache.james.webadmin.WebAdminUtils;
-import org.apache.james.webadmin.dto.WebAdminReprocessingContextInformationDTO.WebAdminErrorRecoveryIndexationDTO;
-import org.apache.james.webadmin.dto.WebAdminReprocessingContextInformationDTO.WebAdminFullIndexationDTO;
+import org.apache.james.webadmin.dto.WebAdminIndexationContextInformationDTO.WebAdminErrorRecoveryIndexationDTO;
+import org.apache.james.webadmin.dto.WebAdminIndexationContextInformationDTO.WebAdminFullIndexationDTO;
 import org.apache.james.webadmin.dto.WebAdminSingleMailboxReindexingTaskAdditionalInformationDTO;
 import org.apache.james.webadmin.service.PreviousReIndexingService;
 import org.apache.james.webadmin.utils.ErrorResponder;
@@ -202,11 +202,11 @@ class MailboxesRoutesTest {
     }
 
     @Nested
-    class FullReprocessing {
+    class FullReIndexing {
         @Nested
         class Validation {
             @Test
-            void fullReprocessingShouldFailWithNoTask() {
+            void fullReIndexingShouldFailWithNoTask() {
                 when()
                     .post("/mailboxes")
                 .then()
@@ -218,7 +218,7 @@ class MailboxesRoutesTest {
             }
 
             @Test
-            void fullReprocessingShouldFailWithBadTask() {
+            void fullReIndexingShouldFailWithBadTask() {
                 when()
                     .post("/mailboxes?task=bad")
                 .then()
@@ -233,7 +233,7 @@ class MailboxesRoutesTest {
         @Nested
         class TaskDetails {
             @Test
-            void fullReprocessingShouldNotFailWhenNoMail() {
+            void fullReIndexingShouldNotFailWhenNoMail() {
                 String taskId = with()
                     .post("/mailboxes?task=reIndex")
                     .jsonPath()
@@ -257,7 +257,7 @@ class MailboxesRoutesTest {
             }
 
             @Test
-            void fullReprocessingShouldReturnTaskDetailsWhenMail() throws Exception {
+            void fullReIndexingShouldReturnTaskDetailsWhenMail() throws Exception {
                 MailboxSession systemSession = mailboxManager.createSystemSession(USERNAME);
                 mailboxManager.createMailbox(INBOX, systemSession).get();
                 mailboxManager.getMailbox(INBOX, systemSession)
@@ -288,7 +288,7 @@ class MailboxesRoutesTest {
             }
 
             @Test
-            void fullReprocessingWithMessagesPerSecondShouldReturnTaskDetailsWhenMail() throws Exception {
+            void fullReIndexingWithMessagesPerSecondShouldReturnTaskDetailsWhenMail() throws Exception {
                 MailboxSession systemSession = mailboxManager.createSystemSession(USERNAME);
                 mailboxManager.createMailbox(INBOX, systemSession).get();
                 mailboxManager.getMailbox(INBOX, systemSession)
@@ -320,7 +320,7 @@ class MailboxesRoutesTest {
             }
 
             @Test
-            void fullReprocessingShouldReturnTaskDetailsWhenFailing() throws Exception {
+            void fullReIndexingShouldReturnTaskDetailsWhenFailing() throws Exception {
                 MailboxSession systemSession = mailboxManager.createSystemSession(USERNAME);
                 MailboxId mailboxId = mailboxManager.createMailbox(INBOX, systemSession).get();
                 ComposedMessageId composedMessageId = mailboxManager.getMailbox(INBOX, systemSession)
@@ -356,7 +356,7 @@ class MailboxesRoutesTest {
             }
 
             @Test
-            void userReprocessingShouldReturnTaskDetailsWhenFailingAtTheMailboxLevel() throws Exception {
+            void userReIndexingShouldReturnTaskDetailsWhenFailingAtTheMailboxLevel() throws Exception {
                 MailboxSession systemSession = mailboxManager.createSystemSession(USERNAME);
                 MailboxId mailboxId = mailboxManager.createMailbox(INBOX, systemSession).get();
 
@@ -380,7 +380,7 @@ class MailboxesRoutesTest {
             }
 
             @Test
-            void fullReprocessingWithCorrectModeShouldReturnTaskDetailsWhenMails() throws Exception {
+            void fullReIndexingWithCorrectModeShouldReturnTaskDetailsWhenMails() throws Exception {
                 MailboxSession systemSession = mailboxManager.createSystemSession(USERNAME);
                 MailboxId mailboxId = mailboxManager.createMailbox(INBOX, systemSession).get();
                 Mailbox mailbox = mailboxManager.getMailbox(mailboxId, systemSession).getMailboxEntity();
@@ -431,7 +431,7 @@ class MailboxesRoutesTest {
             }
 
             @Test
-            void fullReprocessingShouldAcceptRebuildAllNoCleanupMode() throws Exception {
+            void fullReIndexingShouldAcceptRebuildAllNoCleanupMode() throws Exception {
                 MailboxSession systemSession = mailboxManager.createSystemSession(USERNAME);
                 MailboxId mailboxId = mailboxManager.createMailbox(INBOX, systemSession).get();
                 Mailbox mailbox = mailboxManager.getMailbox(mailboxId, systemSession).getMailboxEntity();
@@ -485,7 +485,7 @@ class MailboxesRoutesTest {
             }
 
             @Test
-            void fullReprocessingWithCorrectModeShouldFixInconsistenciesInES() throws Exception {
+            void fullReIndexingWithCorrectModeShouldFixInconsistenciesInES() throws Exception {
                 MailboxSession systemSession = mailboxManager.createSystemSession(USERNAME);
                 MailboxId mailboxId = mailboxManager.createMailbox(INBOX, systemSession).get();
                 Mailbox mailbox = mailboxManager.getMailbox(mailboxId, systemSession).getMailboxEntity();
@@ -526,7 +526,7 @@ class MailboxesRoutesTest {
             }
 
             @Test
-            void fullReprocessingNoCleanupShouldNoopWhenNoInconsistencies() throws Exception {
+            void fullReIndexingNoCleanupShouldNoopWhenNoInconsistencies() throws Exception {
                 MailboxSession systemSession = mailboxManager.createSystemSession(USERNAME);
                 MailboxId mailboxId = mailboxManager.createMailbox(INBOX, systemSession).get();
                 Mailbox mailbox = mailboxManager.getMailbox(mailboxId, systemSession).getMailboxEntity();
@@ -554,7 +554,7 @@ class MailboxesRoutesTest {
             }
 
             @Test
-            void fullReprocessingNoCleanupShouldSolveInconsistencies() throws Exception {
+            void fullReIndexingNoCleanupShouldSolveInconsistencies() throws Exception {
                 MailboxSession systemSession = mailboxManager.createSystemSession(USERNAME);
                 MailboxId mailboxId = mailboxManager.createMailbox(INBOX, systemSession).get();
                 Mailbox mailbox = mailboxManager.getMailbox(mailboxId, systemSession).getMailboxEntity();
@@ -591,7 +591,7 @@ class MailboxesRoutesTest {
             }
 
             @Test
-            void fullReprocessingWithCorrectModeShouldNotChangeDocumentsInESWhenNoInconsistencies() throws Exception {
+            void fullReIndexingWithCorrectModeShouldNotChangeDocumentsInESWhenNoInconsistencies() throws Exception {
                 MailboxSession systemSession = mailboxManager.createSystemSession(USERNAME);
                 MailboxId mailboxId = mailboxManager.createMailbox(INBOX, systemSession).get();
                 Mailbox mailbox = mailboxManager.getMailbox(mailboxId, systemSession).getMailboxEntity();
@@ -621,7 +621,7 @@ class MailboxesRoutesTest {
             @Disabled("JAMES-3202 Limitation of the current correct mode reindexation. We only check metadata and fix "
                 + "inconsistencies with ES, but we don't check for inconsistencies from ES to metadata")
             @Test
-            void fullReprocessingWithCorrectModeShouldRemoveOrphanMessagesInES() throws Exception {
+            void fullReIndexingWithCorrectModeShouldRemoveOrphanMessagesInES() throws Exception {
                 MailboxSession systemSession = mailboxManager.createSystemSession(USERNAME);
                 MailboxId mailboxId = mailboxManager.createMailbox(INBOX, systemSession).get();
                 Mailbox mailbox = mailboxManager.getMailbox(mailboxId, systemSession).getMailboxEntity();
@@ -662,7 +662,7 @@ class MailboxesRoutesTest {
         @Nested
         class SideEffects {
             @Test
-            void fullReprocessingShouldPerformReprocessingWhenMail() throws Exception {
+            void fullReIndexingShouldPerformReIndexingWhenMail() throws Exception {
                 MailboxSession systemSession = mailboxManager.createSystemSession(USERNAME);
                 MailboxId mailboxId = mailboxManager.createMailbox(INBOX, systemSession).get();
                 ComposedMessageId createdMessage = mailboxManager.getMailbox(INBOX, systemSession)
@@ -699,11 +699,11 @@ class MailboxesRoutesTest {
     }
 
     @Nested
-    class MailboxReprocessing {
+    class MailboxReIndexing {
         @Nested
         class Validation {
             @Test
-            void mailboxReprocessingShouldFailWithNoTask() throws Exception {
+            void mailboxReIndexingShouldFailWithNoTask() throws Exception {
                 MailboxSession systemSession = mailboxManager.createSystemSession(USERNAME);
                 MailboxId mailboxId = mailboxManager.createMailbox(INBOX, systemSession).get();
 
@@ -718,7 +718,7 @@ class MailboxesRoutesTest {
             }
 
             @Test
-            void mailboxReprocessingShouldFailWithBadTask() throws Exception {
+            void mailboxReIndexingShouldFailWithBadTask() throws Exception {
                 MailboxSession systemSession = mailboxManager.createSystemSession(USERNAME);
                 MailboxId mailboxId = mailboxManager.createMailbox(INBOX, systemSession).get();
 
@@ -733,7 +733,7 @@ class MailboxesRoutesTest {
             }
 
             @Test
-            void mailboxReprocessingShouldFailWithBadMailboxId() {
+            void mailboxReIndexingShouldFailWithBadMailboxId() {
                 when()
                     .post("/mailboxes/bad?task=reIndex")
                 .then()
@@ -744,7 +744,7 @@ class MailboxesRoutesTest {
             }
 
             @Test
-            void mailboxReprocessingShouldFailWithNonExistentMailboxId() {
+            void mailboxReIndexingShouldFailWithNonExistentMailboxId() {
                 when()
                     .post("/mailboxes/36?task=reIndex")
                 .then()
@@ -758,7 +758,7 @@ class MailboxesRoutesTest {
         @Nested
         class TaskDetails {
             @Test
-            void mailboxReprocessingShouldNotFailWhenNoMail() throws Exception {
+            void mailboxReIndexingShouldNotFailWhenNoMail() throws Exception {
                 MailboxSession systemSession = mailboxManager.createSystemSession(USERNAME);
                 MailboxId mailboxId = mailboxManager.createMailbox(INBOX, systemSession).get();
 
@@ -786,7 +786,7 @@ class MailboxesRoutesTest {
             }
 
             @Test
-            void mailboxReprocessingShouldReturnTaskDetailsWhenMail() throws Exception {
+            void mailboxReIndexingShouldReturnTaskDetailsWhenMail() throws Exception {
                 MailboxSession systemSession = mailboxManager.createSystemSession(USERNAME);
                 MailboxId mailboxId = mailboxManager.createMailbox(INBOX, systemSession).get();
                 mailboxManager.getMailbox(INBOX, systemSession)
@@ -817,7 +817,7 @@ class MailboxesRoutesTest {
             }
 
             @Test
-            void mailboxReprocessingWithMessagesPerSecondShouldReturnTaskDetailsWhenMail() throws Exception {
+            void mailboxReIndexingWithMessagesPerSecondShouldReturnTaskDetailsWhenMail() throws Exception {
                 MailboxSession systemSession = mailboxManager.createSystemSession(USERNAME);
                 MailboxId mailboxId = mailboxManager.createMailbox(INBOX, systemSession).get();
                 mailboxManager.getMailbox(INBOX, systemSession)
@@ -850,7 +850,7 @@ class MailboxesRoutesTest {
             }
 
             @Test
-            void mailboxReprocessingShouldReturnTaskDetailsWhenFailing() throws Exception {
+            void mailboxReIndexingShouldReturnTaskDetailsWhenFailing() throws Exception {
                 MailboxSession systemSession = mailboxManager.createSystemSession(USERNAME);
                 MailboxId mailboxId = mailboxManager.createMailbox(INBOX, systemSession).get();
                 ComposedMessageId composedMessageId = mailboxManager.getMailbox(INBOX, systemSession)
@@ -887,7 +887,7 @@ class MailboxesRoutesTest {
             }
 
             @Test
-            void userReprocessingShouldReturnTaskDetailsWhenFailingAtTheMailboxLevel() throws Exception {
+            void userReIndexingShouldReturnTaskDetailsWhenFailingAtTheMailboxLevel() throws Exception {
                 MailboxSession systemSession = mailboxManager.createSystemSession(USERNAME);
                 MailboxId mailboxId = mailboxManager.createMailbox(INBOX, systemSession).get();
 
@@ -913,7 +913,7 @@ class MailboxesRoutesTest {
 
 
             @Test
-            void mailboxReprocessingWithCorrectModeShouldReturnTaskDetailsWhenMails() throws Exception {
+            void mailboxReIndexingWithCorrectModeShouldReturnTaskDetailsWhenMails() throws Exception {
                 MailboxSession systemSession = mailboxManager.createSystemSession(USERNAME);
                 MailboxId mailboxId = mailboxManager.createMailbox(INBOX, systemSession).get();
                 Mailbox mailbox = mailboxManager.getMailbox(mailboxId, systemSession).getMailboxEntity();
@@ -966,7 +966,7 @@ class MailboxesRoutesTest {
             }
 
             @Test
-            void mailboxReprocessingWithCorrectModeShouldFixInconsistenciesInES() throws Exception {
+            void mailboxReIndexingWithCorrectModeShouldFixInconsistenciesInES() throws Exception {
                 MailboxSession systemSession = mailboxManager.createSystemSession(USERNAME);
                 MailboxId mailboxId = mailboxManager.createMailbox(INBOX, systemSession).get();
                 Mailbox mailbox = mailboxManager.getMailbox(mailboxId, systemSession).getMailboxEntity();
@@ -1009,7 +1009,7 @@ class MailboxesRoutesTest {
             }
 
             @Test
-            void mailboxReprocessingWithCorrectModeShouldNotChangeDocumentsInESWhenNoInconsistencies() throws Exception {
+            void mailboxReIndexingWithCorrectModeShouldNotChangeDocumentsInESWhenNoInconsistencies() throws Exception {
                 MailboxSession systemSession = mailboxManager.createSystemSession(USERNAME);
                 MailboxId mailboxId = mailboxManager.createMailbox(INBOX, systemSession).get();
                 Mailbox mailbox = mailboxManager.getMailbox(mailboxId, systemSession).getMailboxEntity();
@@ -1041,7 +1041,7 @@ class MailboxesRoutesTest {
             @Disabled("JAMES-3202 Limitation of the current correct mode reindexation. We only check metadata and fix "
                 + "inconsistencies with ES, but we don't check for inconsistencies from ES to metadata")
             @Test
-            void mailboxReprocessingWithCorrectModeShouldRemoveOrphanMessagesInES() throws Exception {
+            void mailboxReIndexingWithCorrectModeShouldRemoveOrphanMessagesInES() throws Exception {
                 MailboxSession systemSession = mailboxManager.createSystemSession(USERNAME);
                 MailboxId mailboxId = mailboxManager.createMailbox(INBOX, systemSession).get();
                 Mailbox mailbox = mailboxManager.getMailbox(mailboxId, systemSession).getMailboxEntity();
@@ -1084,7 +1084,7 @@ class MailboxesRoutesTest {
         @Nested
         class SideEffects {
             @Test
-            void mailboxReprocessingShouldPerformReprocessingWhenMail() throws Exception {
+            void mailboxReIndexingShouldPerformReIndexingWhenMail() throws Exception {
                 MailboxSession systemSession = mailboxManager.createSystemSession(USERNAME);
                 MailboxId mailboxId = mailboxManager.createMailbox(INBOX, systemSession).get();
                 ComposedMessageId createdMessage = mailboxManager.getMailbox(INBOX, systemSession)
@@ -1122,11 +1122,11 @@ class MailboxesRoutesTest {
     }
 
     @Nested
-    class MessageReprocessing {
+    class MessageReIndexing {
         @Nested
         class Validation {
             @Test
-            void messageReprocessingShouldFailWithNoTask() throws Exception {
+            void messageReIndexingShouldFailWithNoTask() throws Exception {
                 MailboxSession systemSession = mailboxManager.createSystemSession(USERNAME);
                 MailboxId mailboxId = mailboxManager.createMailbox(INBOX, systemSession).get();
 
@@ -1141,7 +1141,7 @@ class MailboxesRoutesTest {
             }
 
             @Test
-            void messageReprocessingShouldFailWithBadTask() throws Exception {
+            void messageReIndexingShouldFailWithBadTask() throws Exception {
                 MailboxSession systemSession = mailboxManager.createSystemSession(USERNAME);
                 MailboxId mailboxId = mailboxManager.createMailbox(INBOX, systemSession).get();
 
@@ -1156,7 +1156,7 @@ class MailboxesRoutesTest {
             }
 
             @Test
-            void messageReprocessingShouldFailWithBadMailboxId() {
+            void messageReIndexingShouldFailWithBadMailboxId() {
                 when()
                     .post("/mailboxes/bad/mails/7?task=reIndex")
                 .then()
@@ -1167,7 +1167,7 @@ class MailboxesRoutesTest {
             }
 
             @Test
-            void messageReprocessingShouldFailWithNonExistentMailboxId() {
+            void messageReIndexingShouldFailWithNonExistentMailboxId() {
                 when()
                     .post("/mailboxes/36/mails/7?task=reIndex")
                 .then()
@@ -1178,7 +1178,7 @@ class MailboxesRoutesTest {
             }
 
             @Test
-            void messageReprocessingShouldFailWithBadUid() {
+            void messageReIndexingShouldFailWithBadUid() {
                 when()
                     .post("/mailboxes/36/mails/bad?task=reIndex")
                 .then()
@@ -1192,7 +1192,7 @@ class MailboxesRoutesTest {
         @Nested
         class TaskDetails {
             @Test
-            void messageReprocessingShouldNotFailWhenUidNotFound() throws Exception {
+            void messageReIndexingShouldNotFailWhenUidNotFound() throws Exception {
                 MailboxSession systemSession = mailboxManager.createSystemSession(USERNAME);
                 MailboxId mailboxId = mailboxManager.createMailbox(INBOX, systemSession).get();
 
@@ -1217,7 +1217,7 @@ class MailboxesRoutesTest {
             }
 
             @Test
-            void messageReprocessingShouldReturnTaskDetailsWhenMail() throws Exception {
+            void messageReIndexingShouldReturnTaskDetailsWhenMail() throws Exception {
                 MailboxSession systemSession = mailboxManager.createSystemSession(USERNAME);
                 MailboxId mailboxId = mailboxManager.createMailbox(INBOX, systemSession).get();
                 ComposedMessageId composedMessageId = mailboxManager.getMailbox(INBOX, systemSession)
@@ -1250,7 +1250,7 @@ class MailboxesRoutesTest {
         @Nested
         class SideEffects {
             @Test
-            void mailboxReprocessingShouldPerformReprocessingWhenMail() throws Exception {
+            void mailboxReIndexingShouldPerformReIndexingWhenMail() throws Exception {
                 MailboxSession systemSession = mailboxManager.createSystemSession(USERNAME);
                 MailboxId mailboxId = mailboxManager.createMailbox(INBOX, systemSession).get();
                 ComposedMessageId createdMessage = mailboxManager.getMailbox(INBOX, systemSession)
@@ -1530,7 +1530,7 @@ class MailboxesRoutesTest {
             }
 
             @Test
-            void userReprocessingShouldReturnTaskDetailsWhenFailingAtTheMailboxLevel() throws Exception {
+            void userReIndexingShouldReturnTaskDetailsWhenFailingAtTheMailboxLevel() throws Exception {
                 MailboxSession systemSession = mailboxManager.createSystemSession(USERNAME);
                 MailboxId mailboxId = mailboxManager.createMailbox(INBOX, systemSession).get();
 
@@ -1570,7 +1570,7 @@ class MailboxesRoutesTest {
         @Nested
         class SideEffects {
             @Test
-            void fixingReprocessingShouldPerformReprocessingWhenMail() throws Exception {
+            void fixingReIndexingShouldPerformReIndexingWhenMail() throws Exception {
                 MailboxSession systemSession = mailboxManager.createSystemSession(USERNAME);
                 MailboxId mailboxId = mailboxManager.createMailbox(INBOX, systemSession).get();
                 ComposedMessageId createdMessage = mailboxManager.getMailbox(INBOX, systemSession)
diff --git a/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/MessageRoutesTest.java b/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/MessageRoutesTest.java
index 27058fa..f86221f 100644
--- a/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/MessageRoutesTest.java
+++ b/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/MessageRoutesTest.java
@@ -108,7 +108,7 @@ class MessageRoutesTest {
     }
 
     @Nested
-    class MessageReprocessing {
+    class MessageReIndexing {
         @Nested
         class Validation {
             @Test
diff --git a/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/UserMailboxesRoutesTest.java b/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/UserMailboxesRoutesTest.java
index fe79047..861cb7b 100644
--- a/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/UserMailboxesRoutesTest.java
+++ b/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/UserMailboxesRoutesTest.java
@@ -1444,8 +1444,7 @@ class UserMailboxesRoutesTest {
     }
 
     @Nested
-    class UserReprocessing {
-        static final int BATCH_SIZE = 1;
+    class UserReIndexing {
         static final int SEARCH_SIZE = 1;
 
         @RegisterExtension

---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@james.apache.org
For additional commands, e-mail: notifications-help@james.apache.org


[james-project] 01/03: JAMES-3723 Allow to not consume emails upon reprocessing

Posted by bt...@apache.org.
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

commit c458cea86af5c48ccd844dff6d202834fc2be44d
Author: Benoit Tellier <bt...@linagora.com>
AuthorDate: Sat Mar 5 22:06:45 2022 +0700

    JAMES-3723 Allow to not consume emails upon reprocessing
---
 ...dminServerTaskSerializationIntegrationTest.java |  1 +
 .../webadmin/routes/MailRepositoriesRoutes.java    | 20 +++--
 .../webadmin/service/ReprocessingAllMailsTask.java | 37 +++------
 ...essingAllMailsTaskAdditionalInformationDTO.java | 18 ++++-
 .../service/ReprocessingAllMailsTaskDTO.java       | 20 +++--
 .../webadmin/service/ReprocessingOneMailTask.java  | 38 +++------
 ...cessingOneMailTaskAdditionalInformationDTO.java | 18 ++++-
 .../service/ReprocessingOneMailTaskDTO.java        | 24 ++++--
 .../webadmin/service/ReprocessingService.java      | 44 ++++++++---
 .../routes/MailRepositoriesRoutesTest.java         | 91 ++++++++++++++++++++++
 .../service/ReprocessingAllMailsTaskTest.java      | 49 +++++++++---
 .../service/ReprocessingOneMailTaskTest.java       | 42 ++++++++--
 .../webadmin/service/ReprocessingServiceTest.java  | 12 +--
 13 files changed, 304 insertions(+), 110 deletions(-)

diff --git a/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/rabbitmq/RabbitMQWebAdminServerTaskSerializationIntegrationTest.java b/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/rabbitmq/RabbitMQWebAdminServerTaskSerializationIntegrationTest.java
index 4e3ac97..4e5ba18 100644
--- a/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/rabbitmq/RabbitMQWebAdminServerTaskSerializationIntegrationTest.java
+++ b/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/rabbitmq/RabbitMQWebAdminServerTaskSerializationIntegrationTest.java
@@ -344,6 +344,7 @@ class RabbitMQWebAdminServerTaskSerializationIntegrationTest {
             .body("type", is("reprocessing-one"))
             .body("additionalInformation.repositoryPath", is(mailRepositoryUrl.asString()))
             .body("additionalInformation.targetQueue", is(notNullValue()))
+            .body("additionalInformation.consume", is(notNullValue()))
             .body("additionalInformation.mailKey", is(mailKey))
             .body("additionalInformation.targetProcessor", is(nullValue()));
     }
diff --git a/server/protocols/webadmin/webadmin-mailrepository/src/main/java/org/apache/james/webadmin/routes/MailRepositoriesRoutes.java b/server/protocols/webadmin/webadmin-mailrepository/src/main/java/org/apache/james/webadmin/routes/MailRepositoriesRoutes.java
index aea7771..97c5634 100644
--- a/server/protocols/webadmin/webadmin-mailrepository/src/main/java/org/apache/james/webadmin/routes/MailRepositoriesRoutes.java
+++ b/server/protocols/webadmin/webadmin-mailrepository/src/main/java/org/apache/james/webadmin/routes/MailRepositoriesRoutes.java
@@ -322,11 +322,15 @@ public class MailRepositoriesRoutes implements Routes {
 
     private Task reprocessAll(Request request) throws UnsupportedEncodingException, MailRepositoryStore.MailRepositoryStoreException {
         MailRepositoryPath path = decodedRepositoryPath(request);
-        Optional<String> targetProcessor = parseTargetProcessor(request);
-        MailQueueName targetQueue = parseTargetQueue(request);
 
         Long repositorySize = repositoryStoreService.size(path).orElse(0L);
-        return new ReprocessingAllMailsTask(reprocessingService, repositorySize, path, targetQueue, targetProcessor);
+        return new ReprocessingAllMailsTask(reprocessingService, repositorySize, path, extractConfiguration(request));
+    }
+
+    private ReprocessingService.Configuration extractConfiguration(Request request) {
+        return new ReprocessingService.Configuration(parseTargetQueue(request),
+            parseTargetProcessor(request),
+            parseConsume(request).orElse(true));
     }
 
     public void defineReprocessOne() {
@@ -340,10 +344,7 @@ public class MailRepositoriesRoutes implements Routes {
         MailRepositoryPath path = decodedRepositoryPath(request);
         MailKey key = new MailKey(request.params("key"));
 
-        Optional<String> targetProcessor = parseTargetProcessor(request);
-        MailQueueName targetQueue = parseTargetQueue(request);
-
-        return new ReprocessingOneMailTask(reprocessingService, path, targetQueue, key, targetProcessor, Clock.systemUTC());
+        return new ReprocessingOneMailTask(reprocessingService, path, extractConfiguration(request), key, Clock.systemUTC());
     }
 
     private Set<AdditionalField> extractAdditionalFields(String additionalFieldsParam) throws IllegalArgumentException {
@@ -361,6 +362,11 @@ public class MailRepositoriesRoutes implements Routes {
         return Optional.ofNullable(request.queryParams("processor"));
     }
 
+    private Optional<Boolean> parseConsume(Request request) {
+        return Optional.ofNullable(request.queryParams("consume"))
+            .map(Boolean::parseBoolean);
+    }
+
     private MailQueueName parseTargetQueue(Request request) {
         return Optional.ofNullable(request.queryParams("queue"))
             .map(MailQueueName::of)
diff --git a/server/protocols/webadmin/webadmin-mailrepository/src/main/java/org/apache/james/webadmin/service/ReprocessingAllMailsTask.java b/server/protocols/webadmin/webadmin-mailrepository/src/main/java/org/apache/james/webadmin/service/ReprocessingAllMailsTask.java
index 5d8ea39..ef930f9 100644
--- a/server/protocols/webadmin/webadmin-mailrepository/src/main/java/org/apache/james/webadmin/service/ReprocessingAllMailsTask.java
+++ b/server/protocols/webadmin/webadmin-mailrepository/src/main/java/org/apache/james/webadmin/service/ReprocessingAllMailsTask.java
@@ -29,7 +29,6 @@ import javax.mail.MessagingException;
 import org.apache.james.mailrepository.api.MailKey;
 import org.apache.james.mailrepository.api.MailRepositoryPath;
 import org.apache.james.mailrepository.api.MailRepositoryStore;
-import org.apache.james.queue.api.MailQueueName;
 import org.apache.james.task.Task;
 import org.apache.james.task.TaskExecutionDetails;
 import org.apache.james.task.TaskType;
@@ -40,27 +39,21 @@ public class ReprocessingAllMailsTask implements Task {
 
     public static class AdditionalInformation implements TaskExecutionDetails.AdditionalInformation {
         private final MailRepositoryPath repositoryPath;
-        private final String targetQueue;
-        private final Optional<String> targetProcessor;
+        private final ReprocessingService.Configuration configuration;
         private final long initialCount;
         private final long remainingCount;
         private final Instant timestamp;
 
-        public AdditionalInformation(MailRepositoryPath repositoryPath, MailQueueName targetQueue, Optional<String> targetProcessor, long initialCount, long remainingCount, Instant timestamp) {
+        public AdditionalInformation(MailRepositoryPath repositoryPath, ReprocessingService.Configuration configuration, long initialCount, long remainingCount, Instant timestamp) {
             this.repositoryPath = repositoryPath;
-            this.targetQueue = targetQueue.asString();
-            this.targetProcessor = targetProcessor;
+            this.configuration = configuration;
             this.initialCount = initialCount;
             this.remainingCount = remainingCount;
             this.timestamp = timestamp;
         }
 
-        public String getTargetQueue() {
-            return targetQueue;
-        }
-
-        public Optional<String> getTargetProcessor() {
-            return targetProcessor;
+        public ReprocessingService.Configuration getConfiguration() {
+            return configuration;
         }
 
         public String getRepositoryPath() {
@@ -97,17 +90,15 @@ public class ReprocessingAllMailsTask implements Task {
 
     private final ReprocessingService reprocessingService;
     private final MailRepositoryPath repositoryPath;
-    private final MailQueueName targetQueue;
-    private final Optional<String> targetProcessor;
+    private final ReprocessingService.Configuration configuration;
     private final long repositorySize;
     private final AtomicLong processedCount;
 
     public ReprocessingAllMailsTask(ReprocessingService reprocessingService, long repositorySize,
-                                    MailRepositoryPath repositoryPath, MailQueueName targetQueue, Optional<String> targetProcessor) {
+                                    MailRepositoryPath repositoryPath, ReprocessingService.Configuration configuration) {
         this.reprocessingService = reprocessingService;
         this.repositoryPath = repositoryPath;
-        this.targetQueue = targetQueue;
-        this.targetProcessor = targetProcessor;
+        this.configuration = configuration;
         this.repositorySize = repositorySize;
         this.processedCount = new AtomicLong(0);
     }
@@ -119,7 +110,7 @@ public class ReprocessingAllMailsTask implements Task {
     @Override
     public Result run() {
         try {
-            reprocessingService.reprocessAll(repositoryPath, targetProcessor, targetQueue, this::notifyProgress);
+            reprocessingService.reprocessAll(repositoryPath, configuration, this::notifyProgress);
             return Result.COMPLETED;
         } catch (MessagingException | MailRepositoryStore.MailRepositoryStoreException e) {
             LOGGER.error("Encountered error while reprocessing repository", e);
@@ -135,12 +126,8 @@ public class ReprocessingAllMailsTask implements Task {
         return repositorySize;
     }
 
-    Optional<String> getTargetProcessor() {
-        return targetProcessor;
-    }
-
-    MailQueueName getTargetQueue() {
-        return targetQueue;
+    ReprocessingService.Configuration getConfiguration() {
+        return configuration;
     }
 
     @Override
@@ -151,7 +138,7 @@ public class ReprocessingAllMailsTask implements Task {
     @Override
     public Optional<TaskExecutionDetails.AdditionalInformation> details() {
         return Optional.of(new AdditionalInformation(
-            repositoryPath, targetQueue, targetProcessor, repositorySize, repositorySize - processedCount.get(),
+            repositoryPath, configuration, repositorySize, repositorySize - processedCount.get(),
             Clock.systemUTC().instant()));
     }
 
diff --git a/server/protocols/webadmin/webadmin-mailrepository/src/main/java/org/apache/james/webadmin/service/ReprocessingAllMailsTaskAdditionalInformationDTO.java b/server/protocols/webadmin/webadmin-mailrepository/src/main/java/org/apache/james/webadmin/service/ReprocessingAllMailsTaskAdditionalInformationDTO.java
index adacac9..55dcdb7 100644
--- a/server/protocols/webadmin/webadmin-mailrepository/src/main/java/org/apache/james/webadmin/service/ReprocessingAllMailsTaskAdditionalInformationDTO.java
+++ b/server/protocols/webadmin/webadmin-mailrepository/src/main/java/org/apache/james/webadmin/service/ReprocessingAllMailsTaskAdditionalInformationDTO.java
@@ -35,16 +35,19 @@ public class ReprocessingAllMailsTaskAdditionalInformationDTO implements Additio
             .convertToDTO(ReprocessingAllMailsTaskAdditionalInformationDTO.class)
             .toDomainObjectConverter(dto -> new ReprocessingAllMailsTask.AdditionalInformation(
                 MailRepositoryPath.from(dto.repositoryPath),
-                MailQueueName.of(dto.targetQueue),
-                dto.targetProcessor,
+                new ReprocessingService.Configuration(
+                    MailQueueName.of(dto.getTargetQueue()),
+                    dto.getTargetProcessor(),
+                    dto.isConsume()),
                 dto.initialCount,
                 dto.remainingCount,
                 dto.timestamp))
             .toDTOConverter((details, type) -> new ReprocessingAllMailsTaskAdditionalInformationDTO(
                 type,
                 details.getRepositoryPath(),
-                details.getTargetQueue(),
-                details.getTargetProcessor(),
+                details.getConfiguration().getMailQueueName().asString(),
+                details.getConfiguration().getTargetProcessor(),
+                Optional.of(details.getConfiguration().isConsume()),
                 details.getInitialCount(),
                 details.getRemainingCount(),
                 details.timestamp()))
@@ -56,6 +59,7 @@ public class ReprocessingAllMailsTaskAdditionalInformationDTO implements Additio
     private final String repositoryPath;
     private final String targetQueue;
     private final Optional<String> targetProcessor;
+    private final boolean consume;
     private final long initialCount;
     private final long remainingCount;
     private final Instant timestamp;
@@ -65,6 +69,7 @@ public class ReprocessingAllMailsTaskAdditionalInformationDTO implements Additio
         @JsonProperty("repositoryPath") String repositoryPath,
         @JsonProperty("targetQueue") String targetQueue,
         @JsonProperty("targetProcessor") Optional<String> targetProcessor,
+        @JsonProperty("consume") Optional<Boolean> consume,
         @JsonProperty("initialCount") long initialCount,
         @JsonProperty("remainingCount") long remainingCount,
         @JsonProperty("timestamp") Instant timestamp) {
@@ -75,6 +80,11 @@ public class ReprocessingAllMailsTaskAdditionalInformationDTO implements Additio
         this.initialCount = initialCount;
         this.remainingCount = remainingCount;
         this.timestamp = timestamp;
+        this.consume = consume.orElse(true);
+    }
+
+    public boolean isConsume() {
+        return consume;
     }
 
     @Override
diff --git a/server/protocols/webadmin/webadmin-mailrepository/src/main/java/org/apache/james/webadmin/service/ReprocessingAllMailsTaskDTO.java b/server/protocols/webadmin/webadmin-mailrepository/src/main/java/org/apache/james/webadmin/service/ReprocessingAllMailsTaskDTO.java
index d81f2a8..7a7b722 100644
--- a/server/protocols/webadmin/webadmin-mailrepository/src/main/java/org/apache/james/webadmin/service/ReprocessingAllMailsTaskDTO.java
+++ b/server/protocols/webadmin/webadmin-mailrepository/src/main/java/org/apache/james/webadmin/service/ReprocessingAllMailsTaskDTO.java
@@ -46,9 +46,9 @@ public class ReprocessingAllMailsTaskDTO implements TaskDTO {
                 typeName,
                 domainObject.getRepositorySize(),
                 domainObject.getRepositoryPath().urlEncoded(),
-                domainObject.getTargetQueue().asString(),
-                domainObject.getTargetProcessor()
-            );
+                domainObject.getConfiguration().getMailQueueName().asString(),
+                Optional.of(domainObject.getConfiguration().isConsume()),
+                domainObject.getConfiguration().getTargetProcessor());
         } catch (Exception e) {
             throw new ReprocessingAllMailsTask.UrlEncodingFailureSerializationException(domainObject.getRepositoryPath());
         }
@@ -58,17 +58,20 @@ public class ReprocessingAllMailsTaskDTO implements TaskDTO {
     private final long repositorySize;
     private final String repositoryPath;
     private final String targetQueue;
+    private final boolean consume;
     private final Optional<String> targetProcessor;
 
     public ReprocessingAllMailsTaskDTO(@JsonProperty("type") String type,
                                        @JsonProperty("repositorySize") long repositorySize,
                                        @JsonProperty("repositoryPath") String repositoryPath,
                                        @JsonProperty("targetQueue") String targetQueue,
+                                       @JsonProperty("consume") Optional<Boolean> consume,
                                        @JsonProperty("targetProcessor") Optional<String> targetProcessor) {
         this.type = type;
         this.repositorySize = repositorySize;
         this.repositoryPath = repositoryPath;
         this.targetQueue = targetQueue;
+        this.consume = consume.orElse(true);
         this.targetProcessor = targetProcessor;
     }
 
@@ -78,9 +81,10 @@ public class ReprocessingAllMailsTaskDTO implements TaskDTO {
                 reprocessingService,
                 repositorySize,
                 MailRepositoryPath.fromEncoded(repositoryPath),
-                MailQueueName.of(targetQueue),
-                targetProcessor
-            );
+                new ReprocessingService.Configuration(
+                    MailQueueName.of(targetQueue),
+                    targetProcessor,
+                    consume));
         } catch (Exception e) {
             throw new ReprocessingAllMailsTask.InvalidMailRepositoryPathDeserializationException(repositoryPath);
         }
@@ -103,6 +107,10 @@ public class ReprocessingAllMailsTaskDTO implements TaskDTO {
         return targetQueue;
     }
 
+    public boolean isConsume() {
+        return consume;
+    }
+
     public Optional<String> getTargetProcessor() {
         return targetProcessor;
     }
diff --git a/server/protocols/webadmin/webadmin-mailrepository/src/main/java/org/apache/james/webadmin/service/ReprocessingOneMailTask.java b/server/protocols/webadmin/webadmin-mailrepository/src/main/java/org/apache/james/webadmin/service/ReprocessingOneMailTask.java
index 2777ce2..bb81055 100644
--- a/server/protocols/webadmin/webadmin-mailrepository/src/main/java/org/apache/james/webadmin/service/ReprocessingOneMailTask.java
+++ b/server/protocols/webadmin/webadmin-mailrepository/src/main/java/org/apache/james/webadmin/service/ReprocessingOneMailTask.java
@@ -28,7 +28,6 @@ import javax.mail.MessagingException;
 import org.apache.james.mailrepository.api.MailKey;
 import org.apache.james.mailrepository.api.MailRepositoryPath;
 import org.apache.james.mailrepository.api.MailRepositoryStore;
-import org.apache.james.queue.api.MailQueueName;
 import org.apache.james.task.Task;
 import org.apache.james.task.TaskExecutionDetails;
 import org.apache.james.task.TaskType;
@@ -39,16 +38,14 @@ public class ReprocessingOneMailTask implements Task {
 
     public static class AdditionalInformation implements TaskExecutionDetails.AdditionalInformation {
         private final MailRepositoryPath repositoryPath;
-        private final String targetQueue;
+        private final ReprocessingService.Configuration configuration;
         private final MailKey mailKey;
-        private final Optional<String> targetProcessor;
         private final Instant timestamp;
 
-        public AdditionalInformation(MailRepositoryPath repositoryPath, MailQueueName targetQueue, MailKey mailKey, Optional<String> targetProcessor, Instant timestamp) {
+        public AdditionalInformation(MailRepositoryPath repositoryPath, ReprocessingService.Configuration configuration, MailKey mailKey, Instant timestamp) {
             this.repositoryPath = repositoryPath;
-            this.targetQueue = targetQueue.asString();
+            this.configuration = configuration;
             this.mailKey = mailKey;
-            this.targetProcessor = targetProcessor;
             this.timestamp = timestamp;
         }
 
@@ -56,12 +53,8 @@ public class ReprocessingOneMailTask implements Task {
             return mailKey.asString();
         }
 
-        public String getTargetQueue() {
-            return targetQueue;
-        }
-
-        public Optional<String> getTargetProcessor() {
-            return targetProcessor;
+        public ReprocessingService.Configuration getConfiguration() {
+            return configuration;
         }
 
         public String getRepositoryPath() {
@@ -90,29 +83,26 @@ public class ReprocessingOneMailTask implements Task {
 
     private final ReprocessingService reprocessingService;
     private final MailRepositoryPath repositoryPath;
-    private final MailQueueName targetQueue;
+    private final ReprocessingService.Configuration configuration;
     private final MailKey mailKey;
-    private final Optional<String> targetProcessor;
     private final AdditionalInformation additionalInformation;
 
     public ReprocessingOneMailTask(ReprocessingService reprocessingService,
                                    MailRepositoryPath repositoryPath,
-                                   MailQueueName targetQueue,
+                                   ReprocessingService.Configuration configuration,
                                    MailKey mailKey,
-                                   Optional<String> targetProcessor,
                                    Clock clock) {
         this.reprocessingService = reprocessingService;
         this.repositoryPath = repositoryPath;
-        this.targetQueue = targetQueue;
+        this.configuration = configuration;
         this.mailKey = mailKey;
-        this.targetProcessor = targetProcessor;
-        this.additionalInformation = new AdditionalInformation(repositoryPath, targetQueue, mailKey, targetProcessor, clock.instant());
+        this.additionalInformation = new AdditionalInformation(repositoryPath, configuration, mailKey, clock.instant());
     }
 
     @Override
     public Result run() {
         try {
-            reprocessingService.reprocess(repositoryPath, mailKey, targetProcessor, targetQueue);
+            reprocessingService.reprocess(repositoryPath, mailKey, configuration);
             return Result.COMPLETED;
         } catch (MessagingException | MailRepositoryStore.MailRepositoryStoreException e) {
             LOGGER.error("Encountered error while reprocessing repository", e);
@@ -129,16 +119,12 @@ public class ReprocessingOneMailTask implements Task {
         return repositoryPath;
     }
 
-    MailQueueName getTargetQueue() {
-        return targetQueue;
-    }
-
     MailKey getMailKey() {
         return mailKey;
     }
 
-    Optional<String> getTargetProcessor() {
-        return targetProcessor;
+    public ReprocessingService.Configuration getConfiguration() {
+        return configuration;
     }
 
     @Override
diff --git a/server/protocols/webadmin/webadmin-mailrepository/src/main/java/org/apache/james/webadmin/service/ReprocessingOneMailTaskAdditionalInformationDTO.java b/server/protocols/webadmin/webadmin-mailrepository/src/main/java/org/apache/james/webadmin/service/ReprocessingOneMailTaskAdditionalInformationDTO.java
index f84ae9d..40802d8 100644
--- a/server/protocols/webadmin/webadmin-mailrepository/src/main/java/org/apache/james/webadmin/service/ReprocessingOneMailTaskAdditionalInformationDTO.java
+++ b/server/protocols/webadmin/webadmin-mailrepository/src/main/java/org/apache/james/webadmin/service/ReprocessingOneMailTaskAdditionalInformationDTO.java
@@ -36,16 +36,19 @@ public class ReprocessingOneMailTaskAdditionalInformationDTO implements Addition
             .convertToDTO(ReprocessingOneMailTaskAdditionalInformationDTO.class)
             .toDomainObjectConverter(dto -> new ReprocessingOneMailTask.AdditionalInformation(
                 MailRepositoryPath.from(dto.repositoryPath),
-                MailQueueName.of(dto.targetQueue),
+                new ReprocessingService.Configuration(
+                    MailQueueName.of(dto.targetQueue),
+                    dto.targetProcessor,
+                    dto.isConsume()),
                 new MailKey(dto.mailKey),
-                dto.targetProcessor,
                 dto.timestamp))
             .toDTOConverter((details, type) -> new ReprocessingOneMailTaskAdditionalInformationDTO(
                 type,
                 details.getRepositoryPath(),
-                details.getTargetQueue(),
+                details.getConfiguration().getMailQueueName().asString(),
                 details.getMailKey(),
-                details.getTargetProcessor(),
+                Optional.of(details.getConfiguration().isConsume()),
+                details.getConfiguration().getTargetProcessor(),
                 details.timestamp()))
             .typeName(ReprocessingOneMailTask.TYPE.asString())
             .withFactory(AdditionalInformationDTOModule::new);
@@ -56,15 +59,18 @@ public class ReprocessingOneMailTaskAdditionalInformationDTO implements Addition
     private final String targetQueue;
     private final String mailKey;
     private final Optional<String> targetProcessor;
+    private final boolean consume;
     private final Instant timestamp;
 
     public ReprocessingOneMailTaskAdditionalInformationDTO(@JsonProperty("type") String type,
                                                            @JsonProperty("repositoryPath") String repositoryPath,
                                                            @JsonProperty("targetQueue") String targetQueue,
                                                            @JsonProperty("mailKey") String mailKey,
+                                                           @JsonProperty("consume") Optional<Boolean> consume,
                                                            @JsonProperty("targetProcessor") Optional<String> targetProcessor,
                                                            @JsonProperty("timestamp") Instant timestamp) {
         this.type = type;
+        this.consume = consume.orElse(true);
         this.repositoryPath = repositoryPath;
         this.targetQueue = targetQueue;
         this.mailKey = mailKey;
@@ -72,6 +78,10 @@ public class ReprocessingOneMailTaskAdditionalInformationDTO implements Addition
         this.timestamp = timestamp;
     }
 
+    public boolean isConsume() {
+        return consume;
+    }
+
     @Override
     public String getType() {
         return type;
diff --git a/server/protocols/webadmin/webadmin-mailrepository/src/main/java/org/apache/james/webadmin/service/ReprocessingOneMailTaskDTO.java b/server/protocols/webadmin/webadmin-mailrepository/src/main/java/org/apache/james/webadmin/service/ReprocessingOneMailTaskDTO.java
index ea09c18..9ced355 100644
--- a/server/protocols/webadmin/webadmin-mailrepository/src/main/java/org/apache/james/webadmin/service/ReprocessingOneMailTaskDTO.java
+++ b/server/protocols/webadmin/webadmin-mailrepository/src/main/java/org/apache/james/webadmin/service/ReprocessingOneMailTaskDTO.java
@@ -47,10 +47,10 @@ public class ReprocessingOneMailTaskDTO implements TaskDTO {
             return new ReprocessingOneMailTaskDTO(
                 typeName,
                 domainObject.getRepositoryPath().urlEncoded(),
-                domainObject.getTargetQueue().asString(),
+                domainObject.getConfiguration().getMailQueueName().asString(),
                 domainObject.getMailKey().asString(),
-                domainObject.getTargetProcessor()
-            );
+                domainObject.getConfiguration().getTargetProcessor(),
+                Optional.of(domainObject.getConfiguration().isConsume()));
         } catch (Exception e) {
             throw new ReprocessingOneMailTask.UrlEncodingFailureSerializationException(domainObject.getRepositoryPath());
         }
@@ -61,28 +61,32 @@ public class ReprocessingOneMailTaskDTO implements TaskDTO {
     private final String targetQueue;
     private final String mailKey;
     private final Optional<String> targetProcessor;
+    private final boolean consume;
 
     public ReprocessingOneMailTaskDTO(@JsonProperty("type") String type,
                                       @JsonProperty("repositoryPath") String repositoryPath,
                                       @JsonProperty("targetQueue") String targetQueue,
                                       @JsonProperty("mailKey") String mailKey,
-                                      @JsonProperty("targetProcessor") Optional<String> targetProcessor) {
+                                      @JsonProperty("targetProcessor") Optional<String> targetProcessor,
+                                      @JsonProperty("boolean") Optional<Boolean> consume) {
         this.type = type;
         this.repositoryPath = repositoryPath;
         this.mailKey = mailKey;
         this.targetQueue = targetQueue;
         this.targetProcessor = targetProcessor;
+        this.consume = consume.orElse(true);
     }
 
     public ReprocessingOneMailTask fromDTO(ReprocessingService reprocessingService, Clock clock) {
         return new ReprocessingOneMailTask(
             reprocessingService,
             getMailRepositoryPath(),
-            MailQueueName.of(targetQueue),
+            new ReprocessingService.Configuration(
+                MailQueueName.of(targetQueue),
+                targetProcessor,
+                consume),
             new MailKey(mailKey),
-            targetProcessor,
-            clock
-        );
+            clock);
     }
 
     private MailRepositoryPath getMailRepositoryPath() {
@@ -110,6 +114,10 @@ public class ReprocessingOneMailTaskDTO implements TaskDTO {
         return targetQueue;
     }
 
+    public boolean isConsume() {
+        return consume;
+    }
+
     public Optional<String> getTargetProcessor() {
         return targetProcessor;
     }
diff --git a/server/protocols/webadmin/webadmin-mailrepository/src/main/java/org/apache/james/webadmin/service/ReprocessingService.java b/server/protocols/webadmin/webadmin-mailrepository/src/main/java/org/apache/james/webadmin/service/ReprocessingService.java
index 5b7ed6b..9c443d2 100644
--- a/server/protocols/webadmin/webadmin-mailrepository/src/main/java/org/apache/james/webadmin/service/ReprocessingService.java
+++ b/server/protocols/webadmin/webadmin-mailrepository/src/main/java/org/apache/james/webadmin/service/ReprocessingService.java
@@ -53,20 +53,46 @@ public class ReprocessingService {
         }
     }
 
+    public static class Configuration {
+        private final MailQueueName mailQueueName;
+        private final Optional<String> targetProcessor;
+        private final boolean consume;
+
+        public Configuration(MailQueueName mailQueueName, Optional<String> targetProcessor, boolean consume) {
+            this.mailQueueName = mailQueueName;
+            this.targetProcessor = targetProcessor;
+            this.consume = consume;
+        }
+
+        public MailQueueName getMailQueueName() {
+            return mailQueueName;
+        }
+
+        public Optional<String> getTargetProcessor() {
+            return targetProcessor;
+        }
+
+        public boolean isConsume() {
+            return consume;
+        }
+    }
+
     static class Reprocessor implements Closeable {
         private final MailQueue mailQueue;
-        private final Optional<String> targetProcessor;
+        private final Configuration configuration;
 
-        Reprocessor(MailQueue mailQueue, Optional<String> targetProcessor) {
+        Reprocessor(MailQueue mailQueue, Configuration configuration) {
             this.mailQueue = mailQueue;
-            this.targetProcessor = targetProcessor;
+            this.configuration = configuration;
         }
 
         private void reprocess(MailRepository repository, Mail mail) {
             try {
-                targetProcessor.ifPresent(mail::setState);
+                configuration.getTargetProcessor().ifPresent(mail::setState);
                 mailQueue.enQueue(mail);
-                repository.remove(mail);
+                if (configuration.isConsume()) {
+                    repository.remove(mail);
+                }
             } catch (Exception e) {
                 throw new RuntimeException("Error encountered while reprocessing mail " + mail.getName(), e);
             } finally {
@@ -94,8 +120,8 @@ public class ReprocessingService {
         this.mailRepositoryStoreService = mailRepositoryStoreService;
     }
 
-    public void reprocessAll(MailRepositoryPath path, Optional<String> targetProcessor, MailQueueName targetQueue, Consumer<MailKey> keyListener) throws MailRepositoryStore.MailRepositoryStoreException, MessagingException {
-        try (Reprocessor reprocessor = new Reprocessor(getMailQueue(targetQueue), targetProcessor)) {
+    public void reprocessAll(MailRepositoryPath path, Configuration configuration, Consumer<MailKey> keyListener) throws MailRepositoryStore.MailRepositoryStoreException, MessagingException {
+        try (Reprocessor reprocessor = new Reprocessor(getMailQueue(configuration.getMailQueueName()), configuration)) {
             mailRepositoryStoreService
                 .getRepositories(path)
                 .forEach(Throwing.consumer((MailRepository repository) ->
@@ -107,8 +133,8 @@ public class ReprocessingService {
         }
     }
 
-    public void reprocess(MailRepositoryPath path, MailKey key, Optional<String> targetProcessor, MailQueueName targetQueue) throws MailRepositoryStore.MailRepositoryStoreException, MessagingException {
-        try (Reprocessor reprocessor = new Reprocessor(getMailQueue(targetQueue), targetProcessor)) {
+    public void reprocess(MailRepositoryPath path, MailKey key, Configuration configuration) throws MailRepositoryStore.MailRepositoryStoreException, MessagingException {
+        try (Reprocessor reprocessor = new Reprocessor(getMailQueue(configuration.getMailQueueName()), configuration)) {
             Pair<MailRepository, Mail> mailPair = mailRepositoryStoreService
                 .getRepositories(path)
                 .map(Throwing.function(repository -> Pair.of(repository, Optional.ofNullable(repository.retrieve(key)))))
diff --git a/server/protocols/webadmin/webadmin-mailrepository/src/test/java/org/apache/james/webadmin/routes/MailRepositoriesRoutesTest.java b/server/protocols/webadmin/webadmin-mailrepository/src/test/java/org/apache/james/webadmin/routes/MailRepositoriesRoutesTest.java
index 95e8860..16bd869 100644
--- a/server/protocols/webadmin/webadmin-mailrepository/src/test/java/org/apache/james/webadmin/routes/MailRepositoriesRoutesTest.java
+++ b/server/protocols/webadmin/webadmin-mailrepository/src/test/java/org/apache/james/webadmin/routes/MailRepositoriesRoutesTest.java
@@ -1133,6 +1133,7 @@ class MailRepositoriesRoutesTest {
             .body("additionalInformation.remainingCount", is(0))
             .body("additionalInformation.targetProcessor", is(emptyOrNullString()))
             .body("additionalInformation.targetQueue", is(MailQueueFactory.SPOOL.asString()))
+            .body("additionalInformation.consume", is(true))
             .body("startedDate", is(notNullValue()))
             .body("submitDate", is(notNullValue()))
             .body("completedDate", is(notNullValue()));
@@ -1157,6 +1158,7 @@ class MailRepositoriesRoutesTest {
             .param("action", "reprocess")
             .param("queue", CUSTOM_QUEUE.asString())
             .param("processor", transport)
+            .param("consume", false)
             .patch(PATH_ESCAPED_MY_REPO + "/mails")
             .jsonPath()
             .get("taskId");
@@ -1174,6 +1176,7 @@ class MailRepositoriesRoutesTest {
             .body("additionalInformation.remainingCount", is(0))
             .body("additionalInformation.targetProcessor", is(transport))
             .body("additionalInformation.targetQueue", is(CUSTOM_QUEUE.asString()))
+            .body("additionalInformation.consume", is(false))
             .body("startedDate", is(notNullValue()))
             .body("submitDate", is(notNullValue()))
             .body("completedDate", is(notNullValue()));
@@ -1244,6 +1247,39 @@ class MailRepositoriesRoutesTest {
     }
 
     @Test
+    void reprocessingAllTaskShouldNotClearMailRepositoryWhenNotConsume() throws Exception {
+        MailRepository mailRepository = mailRepositoryStore.create(URL_MY_REPO);
+        String name1 = "name1";
+        String name2 = "name2";
+        mailRepository.store(FakeMail.builder()
+            .name(name1)
+            .mimeMessage(MimeMessageUtil.mimeMessageFromBytes(MESSAGE_BYTES))
+            .build());
+        mailRepository.store(FakeMail.builder()
+            .name(name2)
+            .mimeMessage(MimeMessageUtil.mimeMessageFromBytes(MESSAGE_BYTES))
+            .build());
+
+        String transport = "transport";
+        String taskId = with()
+            .param("action", "reprocess")
+            .param("queue", CUSTOM_QUEUE.asString())
+            .param("processor", transport)
+            .param("consume", false)
+            .patch(PATH_ESCAPED_MY_REPO + "/mails")
+            .jsonPath()
+            .get("taskId");
+
+        with()
+            .basePath(TasksRoutes.BASE)
+            .get(taskId + "/await");
+
+        assertThat(mailRepository.list())
+            .toIterable()
+            .hasSize(2);
+    }
+
+    @Test
     void reprocessingAllTaskShouldClearBothMailRepositoriesWhenSamePath() throws Exception {
         MailRepository mailRepository1 = mailRepositoryStore.create(URL_MY_REPO);
         MailRepository mailRepository2 = mailRepositoryStore.create(URL_MY_REPO_OTHER);
@@ -1519,6 +1555,7 @@ class MailRepositoriesRoutesTest {
             .body("additionalInformation.mailKey", is(NAME_1))
             .body("additionalInformation.targetProcessor", is(emptyOrNullString()))
             .body("additionalInformation.targetQueue", is(MailQueueFactory.SPOOL.asString()))
+            .body("additionalInformation.consume", is(true))
             .body("startedDate", is(notNullValue()))
             .body("submitDate", is(notNullValue()))
             .body("completedDate", is(notNullValue()));
@@ -1543,6 +1580,7 @@ class MailRepositoriesRoutesTest {
             .param("action", "reprocess")
             .param("queue", CUSTOM_QUEUE.asString())
             .param("processor", transport)
+            .param("consume", false)
             .patch(PATH_ESCAPED_MY_REPO + "/mails/" + NAME_1)
             .jsonPath()
             .get("taskId");
@@ -1559,6 +1597,7 @@ class MailRepositoriesRoutesTest {
             .body("additionalInformation.mailKey", is(NAME_1))
             .body("additionalInformation.targetProcessor", is(transport))
             .body("additionalInformation.targetQueue", is(CUSTOM_QUEUE.asString()))
+            .body("additionalInformation.consume", is(false))
             .body("startedDate", is(notNullValue()))
             .body("submitDate", is(notNullValue()))
             .body("completedDate", is(notNullValue()));
@@ -1782,6 +1821,58 @@ class MailRepositoriesRoutesTest {
     }
 
     @Test
+    void reprocessingOneTaskShouldNotRemoveEmailWhenNotConsume() throws Exception {
+        MailRepository mailRepository = mailRepositoryStore.create(URL_MY_REPO);
+        mailRepository.store(FakeMail.builder()
+            .name(NAME_1)
+            .build());
+        mailRepository.store(FakeMail.builder()
+            .name(NAME_2)
+            .build());
+
+        String taskId = with()
+            .param("action", "reprocess")
+            .param("queue", CUSTOM_QUEUE.asString())
+            .param("consume", false)
+            .patch(PATH_ESCAPED_MY_REPO + "/mails/" + NAME_1)
+            .jsonPath()
+            .get("taskId");
+
+        with()
+            .basePath(TasksRoutes.BASE)
+            .get(taskId + "/await");
+
+        assertThat(mailRepository.size())
+            .isEqualTo(2);
+    }
+
+    @Test
+    void reprocessingOneTaskShouldRemoveEmailWhenConsume() throws Exception {
+        MailRepository mailRepository = mailRepositoryStore.create(URL_MY_REPO);
+        mailRepository.store(FakeMail.builder()
+            .name(NAME_1)
+            .build());
+        mailRepository.store(FakeMail.builder()
+            .name(NAME_2)
+            .build());
+
+        String taskId = with()
+            .param("action", "reprocess")
+            .param("queue", CUSTOM_QUEUE.asString())
+            .param("consume", true)
+            .patch(PATH_ESCAPED_MY_REPO + "/mails/" + NAME_1)
+            .jsonPath()
+            .get("taskId");
+
+        with()
+            .basePath(TasksRoutes.BASE)
+            .get(taskId + "/await");
+
+        assertThat(mailRepository.size())
+            .isEqualTo(1);
+    }
+
+    @Test
     void reprocessingOneTaskShouldNotRemoveMailFromRepositoryWhenUnknownMailKey() throws Exception {
         MailRepository mailRepository = mailRepositoryStore.create(URL_MY_REPO);
         mailRepository.store(FakeMail.builder()
diff --git a/server/protocols/webadmin/webadmin-mailrepository/src/test/java/org/apache/james/webadmin/service/ReprocessingAllMailsTaskTest.java b/server/protocols/webadmin/webadmin-mailrepository/src/test/java/org/apache/james/webadmin/service/ReprocessingAllMailsTaskTest.java
index d9eb9ca..64b5fe3 100644
--- a/server/protocols/webadmin/webadmin-mailrepository/src/test/java/org/apache/james/webadmin/service/ReprocessingAllMailsTaskTest.java
+++ b/server/protocols/webadmin/webadmin-mailrepository/src/test/java/org/apache/james/webadmin/service/ReprocessingAllMailsTaskTest.java
@@ -19,6 +19,7 @@
 
 package org.apache.james.webadmin.service;
 
+import static org.assertj.core.api.Assertions.assertThat;
 import static org.assertj.core.api.Assertions.assertThatThrownBy;
 import static org.mockito.Mockito.mock;
 
@@ -28,6 +29,7 @@ import java.util.Optional;
 import org.apache.james.JsonSerializationVerifier;
 import org.apache.james.mailrepository.api.MailRepositoryPath;
 import org.apache.james.queue.api.MailQueueName;
+import org.apache.james.server.task.json.JsonTaskAdditionalInformationSerializer;
 import org.apache.james.server.task.json.JsonTaskSerializer;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.params.ParameterizedTest;
@@ -41,15 +43,20 @@ class ReprocessingAllMailsTaskTest {
     private static final MailQueueName TARGET_QUEUE = MailQueueName.of("queue");
     private static final Optional<String> SOME_TARGET_PROCESSOR = Optional.of("targetProcessor");
     private static final long REMAINING_COUNT = 3L;
-    private static final String SERIALIZED_TASK_WITH_TARGET_PROCESSOR = "{\"type\":\"reprocessing-all\",\"repositorySize\":5,\"repositoryPath\":\"a\",\"targetQueue\":\"queue\",\"targetProcessor\":\"targetProcessor\"}";
-    private static final String SERIALIZED_TASK_WITHOUT_TARGET_PROCESSOR = "{\"type\":\"reprocessing-all\",\"repositorySize\":5,\"repositoryPath\":\"a\",\"targetQueue\":\"queue\"}";
-    private static final String SERIALIZED_TASK_ADDITIONAL_INFORMATION_WITH_TARGET_PROCESSOR = "{\"type\":\"reprocessing-all\", \"repositoryPath\":\"a\",\"targetQueue\":\"queue\",\"targetProcessor\":\"targetProcessor\",\"initialCount\":5,\"remainingCount\":3, \"timestamp\":\"2018-11-13T12:00:55Z\"}";
-    private static final String SERIALIZED_TASK_ADDITIONAL_INFORMATION_WITHOUT_TARGET_PROCESSOR = "{\"type\":\"reprocessing-all\", \"repositoryPath\":\"a\",\"targetQueue\":\"queue\", \"initialCount\":5,\"remainingCount\":3, \"timestamp\":\"2018-11-13T12:00:55Z\"}";
+    private static final boolean CONSUME = true;
+
+    private static final String SERIALIZED_TASK_WITH_TARGET_PROCESSOR = "{\"type\":\"reprocessing-all\",\"repositorySize\":5,\"repositoryPath\":\"a\",\"targetQueue\":\"queue\",\"targetProcessor\":\"targetProcessor\",\"consume\":true}";
+    private static final String SERIALIZED_TASK_WITHOUT_TARGET_PROCESSOR = "{\"type\":\"reprocessing-all\",\"repositorySize\":5,\"repositoryPath\":\"a\",\"targetQueue\":\"queue\",\"consume\":false}";
+    private static final String SERIALIZED_TASK_ADDITIONAL_INFORMATION_WITH_TARGET_PROCESSOR = "{\"type\":\"reprocessing-all\", \"repositoryPath\":\"a\",\"targetQueue\":\"queue\",\"targetProcessor\":\"targetProcessor\",\"initialCount\":5,\"remainingCount\":3, \"timestamp\":\"2018-11-13T12:00:55Z\",\"consume\":true}";
+    private static final String SERIALIZED_TASK_ADDITIONAL_INFORMATION_WITHOUT_TARGET_PROCESSOR = "{\"type\":\"reprocessing-all\", \"repositoryPath\":\"a\",\"targetQueue\":\"queue\", \"initialCount\":5,\"remainingCount\":3, \"timestamp\":\"2018-11-13T12:00:55Z\",\"consume\":false}";
+
+    private static final String OLD_SERIALIZED_TASK = "{\"type\":\"reprocessing-all\",\"repositorySize\":5,\"repositoryPath\":\"a\",\"targetQueue\":\"queue\",\"targetProcessor\":\"targetProcessor\"}";
+    private static final String OLD_SERIALIZED_TASK_ADDITIONAL_INFORMATION = "{\"type\":\"reprocessing-all\", \"repositoryPath\":\"a\",\"targetQueue\":\"queue\",\"targetProcessor\":\"targetProcessor\",\"initialCount\":5,\"remainingCount\":3, \"timestamp\":\"2018-11-13T12:00:55Z\"}";
 
     @Test
     void taskShouldBeSerializable() throws Exception {
-        ReprocessingAllMailsTask taskWithTargetProcessor = new ReprocessingAllMailsTask(REPROCESSING_SERVICE, REPOSITORY_SIZE, REPOSITORY_PATH, TARGET_QUEUE, SOME_TARGET_PROCESSOR);
-        ReprocessingAllMailsTask taskWithoutTargetProcessor = new ReprocessingAllMailsTask(REPROCESSING_SERVICE, REPOSITORY_SIZE, REPOSITORY_PATH, TARGET_QUEUE, Optional.empty());
+        ReprocessingAllMailsTask taskWithTargetProcessor = new ReprocessingAllMailsTask(REPROCESSING_SERVICE, REPOSITORY_SIZE, REPOSITORY_PATH, new ReprocessingService.Configuration(TARGET_QUEUE, SOME_TARGET_PROCESSOR, CONSUME));
+        ReprocessingAllMailsTask taskWithoutTargetProcessor = new ReprocessingAllMailsTask(REPROCESSING_SERVICE, REPOSITORY_SIZE, REPOSITORY_PATH, new ReprocessingService.Configuration(TARGET_QUEUE, Optional.empty(), !CONSUME));
 
         JsonSerializationVerifier.dtoModule(ReprocessingAllMailsTaskDTO.module(REPROCESSING_SERVICE))
             .testCase(taskWithTargetProcessor, SERIALIZED_TASK_WITH_TARGET_PROCESSOR)
@@ -58,7 +65,9 @@ class ReprocessingAllMailsTaskTest {
     }
 
     @ParameterizedTest
-    @ValueSource(strings = {"{\"type\":\"reprocessing-all\",\"repositorySize\":5,\"repositoryPath\":\"%\",\"targetQueue\":\"queue\",\"targetProcessor\":\"targetProcessor\"}", "{\"type\":\"reprocessing-all\",\"repositorySize\":5,\"repositoryPath\":\"%\",\"targetQueue\":\"queue\"}"})
+    @ValueSource(strings = {
+        "{\"type\":\"reprocessing-all\",\"repositorySize\":5,\"repositoryPath\":\"%\",\"targetQueue\":\"queue\",\"targetProcessor\":\"targetProcessor\"}",
+        "{\"type\":\"reprocessing-all\",\"repositorySize\":5,\"repositoryPath\":\"%\",\"targetQueue\":\"queue\"}"})
     void taskShouldThrowOnDeserializationUrlDecodingError(String serialized) {
         JsonTaskSerializer testee = JsonTaskSerializer.of(ReprocessingAllMailsTaskDTO.module(REPROCESSING_SERVICE));
 
@@ -68,9 +77,11 @@ class ReprocessingAllMailsTaskTest {
 
     @Test
     void additionalInformationShouldBeSerializable() throws Exception {
-        ReprocessingAllMailsTask.AdditionalInformation details = new ReprocessingAllMailsTask.AdditionalInformation(REPOSITORY_PATH, TARGET_QUEUE, SOME_TARGET_PROCESSOR,
+        ReprocessingAllMailsTask.AdditionalInformation details = new ReprocessingAllMailsTask.AdditionalInformation(REPOSITORY_PATH,
+            new ReprocessingService.Configuration(TARGET_QUEUE, SOME_TARGET_PROCESSOR, CONSUME),
             REPOSITORY_SIZE, REMAINING_COUNT, TIMESTAMP);
-        ReprocessingAllMailsTask.AdditionalInformation detailsWithoutProcessor = new ReprocessingAllMailsTask.AdditionalInformation(REPOSITORY_PATH, TARGET_QUEUE, Optional.empty(),
+        ReprocessingAllMailsTask.AdditionalInformation detailsWithoutProcessor = new ReprocessingAllMailsTask.AdditionalInformation(REPOSITORY_PATH,
+            new ReprocessingService.Configuration(TARGET_QUEUE, Optional.empty(), !CONSUME),
             REPOSITORY_SIZE, REMAINING_COUNT, TIMESTAMP);
 
         JsonSerializationVerifier.dtoModule(ReprocessingAllMailsTaskAdditionalInformationDTO.module())
@@ -78,4 +89,24 @@ class ReprocessingAllMailsTaskTest {
             .testCase(detailsWithoutProcessor, SERIALIZED_TASK_ADDITIONAL_INFORMATION_WITHOUT_TARGET_PROCESSOR)
             .verify();
     }
+
+    @Test
+    void shouldDeserializePreviousTaskFormat() throws Exception {
+        ReprocessingAllMailsTask taskWithTargetProcessor = new ReprocessingAllMailsTask(REPROCESSING_SERVICE, REPOSITORY_SIZE, REPOSITORY_PATH, new ReprocessingService.Configuration(TARGET_QUEUE, SOME_TARGET_PROCESSOR, CONSUME));
+        JsonTaskSerializer testee = JsonTaskSerializer.of(ReprocessingAllMailsTaskDTO.module(REPROCESSING_SERVICE));
+
+        assertThat(testee.deserialize(OLD_SERIALIZED_TASK))
+            .isEqualToComparingFieldByFieldRecursively(taskWithTargetProcessor);
+    }
+
+    @Test
+    void shouldDeserializePreviousAdditionalInformationFormat() throws Exception {
+        ReprocessingAllMailsTask.AdditionalInformation details = new ReprocessingAllMailsTask.AdditionalInformation(REPOSITORY_PATH,
+            new ReprocessingService.Configuration(TARGET_QUEUE, SOME_TARGET_PROCESSOR, CONSUME),
+            REPOSITORY_SIZE, REMAINING_COUNT, TIMESTAMP);
+        JsonTaskAdditionalInformationSerializer testee = JsonTaskAdditionalInformationSerializer.of(ReprocessingAllMailsTaskAdditionalInformationDTO.module());
+
+        assertThat(testee.deserialize(OLD_SERIALIZED_TASK_ADDITIONAL_INFORMATION))
+            .isEqualToComparingFieldByFieldRecursively(details);
+    }
 }
\ No newline at end of file
diff --git a/server/protocols/webadmin/webadmin-mailrepository/src/test/java/org/apache/james/webadmin/service/ReprocessingOneMailTaskTest.java b/server/protocols/webadmin/webadmin-mailrepository/src/test/java/org/apache/james/webadmin/service/ReprocessingOneMailTaskTest.java
index 1d89553..cf0746b 100644
--- a/server/protocols/webadmin/webadmin-mailrepository/src/test/java/org/apache/james/webadmin/service/ReprocessingOneMailTaskTest.java
+++ b/server/protocols/webadmin/webadmin-mailrepository/src/test/java/org/apache/james/webadmin/service/ReprocessingOneMailTaskTest.java
@@ -19,6 +19,7 @@
 
 package org.apache.james.webadmin.service;
 
+import static org.assertj.core.api.Assertions.assertThat;
 import static org.assertj.core.api.Assertions.assertThatThrownBy;
 import static org.mockito.Mockito.mock;
 
@@ -32,6 +33,7 @@ import org.apache.james.JsonSerializationVerifier;
 import org.apache.james.mailrepository.api.MailKey;
 import org.apache.james.mailrepository.api.MailRepositoryPath;
 import org.apache.james.queue.api.MailQueueName;
+import org.apache.james.server.task.json.JsonTaskAdditionalInformationSerializer;
 import org.apache.james.server.task.json.JsonTaskSerializer;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.params.ParameterizedTest;
@@ -41,27 +43,32 @@ class ReprocessingOneMailTaskTest {
     private static final Instant TIMESTAMP = Instant.parse("2018-11-13T12:00:55Z");
     private static final Clock CLOCK = Clock.fixed(TIMESTAMP, ZoneId.of("UTC"));
     private static final ReprocessingService REPROCESSING_SERVICE = mock(ReprocessingService.class);
-    private static final String SERIALIZED_TASK_1 = "{\"type\":\"reprocessing-one\",\"repositoryPath\":\"a\",\"targetQueue\":\"queue\",\"mailKey\": \"myMail\",\"targetProcessor\":\"targetProcessor\"}";
-    private static final String SERIALIZED_TASK_1_ADDITIONAL_INFORMATION = "{\"type\":\"reprocessing-one\", \"repositoryPath\":\"a\",\"targetQueue\":\"queue\",\"mailKey\": \"myMail\",\"targetProcessor\":\"targetProcessor\", \"timestamp\":\"2018-11-13T12:00:55Z\"}";
+    private static final String SERIALIZED_TASK_1 = "{\"type\":\"reprocessing-one\",\"repositoryPath\":\"a\",\"targetQueue\":\"queue\",\"mailKey\": \"myMail\",\"targetProcessor\":\"targetProcessor\", \"consume\":true}";
+    private static final String SERIALIZED_TASK_1_ADDITIONAL_INFORMATION = "{\"type\":\"reprocessing-one\", \"repositoryPath\":\"a\",\"targetQueue\":\"queue\",\"mailKey\": \"myMail\",\"targetProcessor\":\"targetProcessor\", \"timestamp\":\"2018-11-13T12:00:55Z\", \"consume\":true}";
+    private static final String SERIALIZED_TASK_OLD = "{\"type\":\"reprocessing-one\",\"repositoryPath\":\"a\",\"targetQueue\":\"queue\",\"mailKey\": \"myMail\",\"targetProcessor\":\"targetProcessor\"}";
+    private static final String SERIALIZED_TASK_OLD_ADDITIONAL_INFORMATION = "{\"type\":\"reprocessing-one\", \"repositoryPath\":\"a\",\"targetQueue\":\"queue\",\"mailKey\": \"myMail\",\"targetProcessor\":\"targetProcessor\", \"timestamp\":\"2018-11-13T12:00:55Z\"}";
     private static final MailRepositoryPath REPOSITORY_PATH = MailRepositoryPath.from("a");
     private static final MailQueueName TARGET_QUEUE = MailQueueName.of("queue");
     private static final MailKey MAIL_KEY = new MailKey("myMail");
     private static final Optional<String> TARGET_PROCESSOR = Optional.of("targetProcessor");
+    public static final boolean CONSUME = true;
 
     @Test
     void taskShouldBeSerializable() throws Exception {
-        ReprocessingOneMailTask taskWithTargetProcessor = new ReprocessingOneMailTask(REPROCESSING_SERVICE, REPOSITORY_PATH, TARGET_QUEUE, MAIL_KEY, TARGET_PROCESSOR, CLOCK);
-        ReprocessingOneMailTask taskWithoutTargetProcessor = new ReprocessingOneMailTask(REPROCESSING_SERVICE, REPOSITORY_PATH, TARGET_QUEUE, MAIL_KEY, Optional.empty(), CLOCK);
+        ReprocessingOneMailTask taskWithTargetProcessor = new ReprocessingOneMailTask(REPROCESSING_SERVICE, REPOSITORY_PATH, new ReprocessingService.Configuration(TARGET_QUEUE, TARGET_PROCESSOR, CONSUME), MAIL_KEY, CLOCK);
+        ReprocessingOneMailTask taskWithoutTargetProcessor = new ReprocessingOneMailTask(REPROCESSING_SERVICE, REPOSITORY_PATH, new ReprocessingService.Configuration(TARGET_QUEUE, Optional.empty(), !CONSUME), MAIL_KEY, CLOCK);
 
         JsonSerializationVerifier.dtoModule(ReprocessingOneMailTaskDTO.module(CLOCK, REPROCESSING_SERVICE))
             .testCase(taskWithTargetProcessor, SERIALIZED_TASK_1)
             .testCase(taskWithoutTargetProcessor,
-                "{\"type\":\"reprocessing-one\",\"repositoryPath\":\"a\",\"targetQueue\":\"queue\",\"mailKey\": \"myMail\"}")
+                "{\"type\":\"reprocessing-one\",\"repositoryPath\":\"a\",\"targetQueue\":\"queue\",\"mailKey\": \"myMail\", \"consume\":false}")
             .verify();
     }
 
     @ParameterizedTest
-    @ValueSource(strings = {"{\"type\":\"reprocessing-one\",\"repositoryPath\":\"%\",\"targetQueue\":\"queue\",\"mailKey\": \"myMail\",\"targetProcessor\":\"targetProcessor\"}", "{\"type\":\"reprocessing-one\",\"repositoryPath\":\"%\",\"targetQueue\":\"queue\",\"mailKey\": \"myMail\"}"})
+    @ValueSource(strings = {
+        "{\"type\":\"reprocessing-one\",\"repositoryPath\":\"%\",\"targetQueue\":\"queue\",\"mailKey\": \"myMail\",\"targetProcessor\":\"targetProcessor\"}",
+        "{\"type\":\"reprocessing-one\",\"repositoryPath\":\"%\",\"targetQueue\":\"queue\",\"mailKey\": \"myMail\"}"})
     void taskShouldThrowOnDeserializationUrlDecodingError(String serialized) {
         JsonTaskSerializer testee = JsonTaskSerializer.of(ReprocessingOneMailTaskDTO.module(CLOCK, REPROCESSING_SERVICE));
 
@@ -71,10 +78,31 @@ class ReprocessingOneMailTaskTest {
 
     @Test
     void additionalInformationShouldBeSerializable() throws IOException {
-        ReprocessingOneMailTask.AdditionalInformation details = new ReprocessingOneMailTask.AdditionalInformation(REPOSITORY_PATH, TARGET_QUEUE, MAIL_KEY, TARGET_PROCESSOR, TIMESTAMP);
+        ReprocessingOneMailTask.AdditionalInformation details = new ReprocessingOneMailTask.AdditionalInformation(REPOSITORY_PATH,
+            new ReprocessingService.Configuration(TARGET_QUEUE, TARGET_PROCESSOR, true), MAIL_KEY, TIMESTAMP);
         JsonSerializationVerifier.dtoModule(ReprocessingOneMailTaskAdditionalInformationDTO.module())
             .bean(details)
             .json(SERIALIZED_TASK_1_ADDITIONAL_INFORMATION)
             .verify();
     }
+
+
+    @Test
+    void shouldDeserializePreviousTaskFormat() throws Exception {
+        ReprocessingOneMailTask taskWithTargetProcessor = new ReprocessingOneMailTask(REPROCESSING_SERVICE, REPOSITORY_PATH, new ReprocessingService.Configuration(TARGET_QUEUE, TARGET_PROCESSOR, CONSUME), MAIL_KEY, CLOCK);
+        JsonTaskSerializer testee = JsonTaskSerializer.of(ReprocessingOneMailTaskDTO.module(CLOCK, REPROCESSING_SERVICE));
+
+        assertThat(testee.deserialize(SERIALIZED_TASK_OLD))
+            .isEqualToComparingFieldByFieldRecursively(taskWithTargetProcessor);
+    }
+
+    @Test
+    void shouldDeserializePreviousAdditionalInformationFormat() throws Exception {
+        ReprocessingOneMailTask.AdditionalInformation details = new ReprocessingOneMailTask.AdditionalInformation(REPOSITORY_PATH,
+            new ReprocessingService.Configuration(TARGET_QUEUE, TARGET_PROCESSOR, true), MAIL_KEY, TIMESTAMP);
+        JsonTaskAdditionalInformationSerializer testee = JsonTaskAdditionalInformationSerializer.of(ReprocessingOneMailTaskAdditionalInformationDTO.module());
+
+        assertThat(testee.deserialize(SERIALIZED_TASK_OLD_ADDITIONAL_INFORMATION))
+            .isEqualToComparingFieldByFieldRecursively(details);
+    }
 }
diff --git a/server/protocols/webadmin/webadmin-mailrepository/src/test/java/org/apache/james/webadmin/service/ReprocessingServiceTest.java b/server/protocols/webadmin/webadmin-mailrepository/src/test/java/org/apache/james/webadmin/service/ReprocessingServiceTest.java
index d2ad1c5..1ad1e9f 100644
--- a/server/protocols/webadmin/webadmin-mailrepository/src/test/java/org/apache/james/webadmin/service/ReprocessingServiceTest.java
+++ b/server/protocols/webadmin/webadmin-mailrepository/src/test/java/org/apache/james/webadmin/service/ReprocessingServiceTest.java
@@ -43,6 +43,7 @@ import org.apache.james.queue.api.ManageableMailQueue;
 import org.apache.james.queue.api.RawMailQueueItemDecoratorFactory;
 import org.apache.james.queue.memory.MemoryMailQueueFactory;
 import org.apache.james.util.MimeMessageUtil;
+import org.apache.james.webadmin.service.ReprocessingService.Configuration;
 import org.apache.mailet.base.test.FakeMail;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
@@ -64,6 +65,7 @@ class ReprocessingServiceTest {
     private static final Consumer<MailKey> NOOP_CONSUMER = key -> { };
     private static final Optional<String> NO_TARGET_PROCESSOR = Optional.empty();
     private static final byte[] MESSAGE_BYTES = "header: value \r\n".getBytes(UTF_8);
+    public static final boolean CONSUME = true;
 
     private ReprocessingService reprocessingService;
     private MemoryMailRepositoryStore mailRepositoryStore;
@@ -106,7 +108,7 @@ class ReprocessingServiceTest {
         repository.store(mail2);
         repository.store(mail3);
 
-        reprocessingService.reprocess(PATH, KEY_2, NO_TARGET_PROCESSOR, SPOOL);
+        reprocessingService.reprocess(PATH, KEY_2, new ReprocessingService.Configuration(SPOOL, NO_TARGET_PROCESSOR, CONSUME));
 
         assertThat(queueFactory.getQueue(SPOOL).get().browse())
             .toIterable()
@@ -121,7 +123,7 @@ class ReprocessingServiceTest {
         repository.store(mail2);
         repository.store(mail3);
 
-        reprocessingService.reprocess(PATH, KEY_2, NO_TARGET_PROCESSOR, SPOOL);
+        reprocessingService.reprocess(PATH, KEY_2, new ReprocessingService.Configuration(SPOOL, NO_TARGET_PROCESSOR, CONSUME));
 
         assertThat(repository.list()).toIterable()
             .containsOnly(KEY_1, KEY_3);
@@ -134,7 +136,7 @@ class ReprocessingServiceTest {
         repository.store(mail2);
         repository.store(mail3);
 
-        reprocessingService.reprocessAll(PATH, NO_TARGET_PROCESSOR, SPOOL, NOOP_CONSUMER);
+        reprocessingService.reprocessAll(PATH, new Configuration(SPOOL, NO_TARGET_PROCESSOR, CONSUME), NOOP_CONSUMER);
 
         assertThat(repository.list()).toIterable()
             .isEmpty();
@@ -147,7 +149,7 @@ class ReprocessingServiceTest {
         repository.store(mail2);
         repository.store(mail3);
 
-        reprocessingService.reprocessAll(PATH, NO_TARGET_PROCESSOR, SPOOL, NOOP_CONSUMER);
+        reprocessingService.reprocessAll(PATH, new Configuration(SPOOL, NO_TARGET_PROCESSOR, CONSUME), NOOP_CONSUMER);
 
         assertThat(queueFactory.getQueue(SPOOL).get().browse())
             .toIterable()
@@ -178,7 +180,7 @@ class ReprocessingServiceTest {
             }
         });
 
-        reprocessingService.reprocessAll(PATH, NO_TARGET_PROCESSOR, SPOOL, concurrentRemoveConsumer);
+        reprocessingService.reprocessAll(PATH, new ReprocessingService.Configuration(SPOOL, NO_TARGET_PROCESSOR, CONSUME), concurrentRemoveConsumer);
 
         assertThat(queueFactory.getQueue(SPOOL).get().browse())
             .toIterable()

---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@james.apache.org
For additional commands, e-mail: notifications-help@james.apache.org


[james-project] 03/03: JAMES-3723 Document reprocessing with consume = false

Posted by bt...@apache.org.
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

commit fa12f5ebbec875b7231b29b2a9b9f5343cd0e9da
Author: Benoit Tellier <bt...@linagora.com>
AuthorDate: Thu Mar 10 16:50:09 2022 +0700

    JAMES-3723 Document reprocessing with consume = false
---
 .../docs/modules/ROOT/pages/operate/webadmin.adoc    | 20 ++++++++++++++++----
 src/site/markdown/server/manage-webadmin.md          |  6 ++++++
 2 files changed, 22 insertions(+), 4 deletions(-)

diff --git a/server/apps/distributed-app/docs/modules/ROOT/pages/operate/webadmin.adoc b/server/apps/distributed-app/docs/modules/ROOT/pages/operate/webadmin.adoc
index 4ea5dd8..47ec81b 100644
--- a/server/apps/distributed-app/docs/modules/ROOT/pages/operate/webadmin.adoc
+++ b/server/apps/distributed-app/docs/modules/ROOT/pages/operate/webadmin.adoc
@@ -3299,11 +3299,17 @@ For instance:
 curl -XPATCH http://ip:port/mailRepositories/var%2Fmail%2Ferror%2F/mails?action=reprocess
 ....
 
-Additional query parameters are supported: - `queue` allows you to
+Additional query parameters are supported:
+
+- `queue` allows you to
 target the mail queue you want to enqueue the mails in. Defaults to
-`spool`. - `processor` allows you to overwrite the state of the
+`spool`.
+- `processor` allows you to overwrite the state of the
 reprocessing mails, and thus select the processors they will start their
 processing in. Defaults to the `state` field of each processed email.
+- `consume` (boolean defaulting to `true`) whether the reprocessing should consume the mail in its originating mail repository. Passing
+this value to `false` allows non destructive reprocessing as you keep a copy of the email in the mail repository and can be valuable
+when debugging.
 
 For instance:
 
@@ -3353,11 +3359,17 @@ For instance:
 curl -XPATCH http://ip:port/mailRepositories/var%2Fmail%2Ferror%2F/mails/name1?action=reprocess
 ....
 
-Additional query parameters are supported: - `queue` allows you to
+Additional query parameters are supported:
+
+- `queue` allows you to
 target the mail queue you want to enqueue the mails in. Defaults to
-`spool`. - `processor` allows you to overwrite the state of the
+`spool`.
+- `processor` allows you to overwrite the state of the
 reprocessing mails, and thus select the processors they will start their
 processing in. Defaults to the `state` field of each processed email.
+- `consume` (boolean defaulting to `true`) whether the reprocessing should consume the mail in its originating mail repository. Passing
+this value to `false` allows non destructive reprocessing as you keep a copy of the email in the mail repository and can be valuable
+when debugging.
 
 While `processor` being an optional parameter, not specifying it will
 result reprocessing the mails in their current state
diff --git a/src/site/markdown/server/manage-webadmin.md b/src/site/markdown/server/manage-webadmin.md
index 2f0f6f0..c7b2496 100644
--- a/src/site/markdown/server/manage-webadmin.md
+++ b/src/site/markdown/server/manage-webadmin.md
@@ -2985,6 +2985,9 @@ Additional query parameters are supported:
  - `queue` allows you to target the mail queue you want to enqueue the mails in. Defaults to `spool`.
  - `processor` allows you to overwrite the state of the reprocessing mails, and thus select the processors they will start their processing in.
  Defaults to the `state` field of each processed email.
+ - `consume` (boolean defaulting to `true`) whether the reprocessing should consume the mail in its originating mail repository. Passing
+ this value to `false` allows non destructive reprocessing as you keep a copy of the email in the mail repository and can be valuable
+ when debugging.
 
 
 For instance:
@@ -3034,6 +3037,9 @@ Additional query parameters are supported:
  - `queue` allows you to target the mail queue you want to enqueue the mails in. Defaults to `spool`.
  - `processor` allows you to overwrite the state of the reprocessing mails, and thus select the processors they will start their processing in.
  Defaults to the `state` field of each processed email.
+ - `consume` (boolean defaulting to `true`) whether the reprocessing should consume the mail in its originating mail repository. Passing
+ this value to `false` allows non destructive reprocessing as you keep a copy of the email in the mail repository and can be valuable
+ when debugging.
 
 While `processor` being an optional parameter, not specifying it will result reprocessing the mails in their current state ([see documentation about processors and state](https://james.apache.org/server/feature-mailetcontainer.html#Processors)).
 Consequently, only few cases will give a different result, definitively storing them out of the mail repository.

---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@james.apache.org
For additional commands, e-mail: notifications-help@james.apache.org