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 f98fb0b26391e3a9b3229546c521e6dbefeb28db Author: Benoit Tellier <[email protected]> AuthorDate: Fri May 24 11:36:02 2019 +0700 MAILBOX-351 WebAdmin documentation for fixing a reIndexing --- .../james/webadmin/routes/ReindexingRoutes.java | 6 +-- .../service/PreviousReIndexingService.java | 8 +-- src/site/markdown/server/manage-webadmin.md | 60 ++++++++++++++++++++-- 3 files changed, 64 insertions(+), 10 deletions(-) diff --git a/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/routes/ReindexingRoutes.java b/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/routes/ReindexingRoutes.java index 083579e..c2f09d8 100644 --- a/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/routes/ReindexingRoutes.java +++ b/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/routes/ReindexingRoutes.java @@ -141,8 +141,8 @@ public class ReindexingRoutes implements Routes { return wrap(request, response, () -> reIndexer.reIndex(extractUser(request))); } if (indexingCorrection) { - IndexingDetailInformation indexingDetailInformation = retrieveIndexingExecutionDetails(request); - return wrap(request, response, () -> reIndexer.reIndex(indexingDetailInformation.failures())); + IndexingDetailInformation indexingDetailInformation = retrieveIndexingExecutionDetails(request); + return wrap(request, response, () -> reIndexer.reIndex(indexingDetailInformation.failures())); } return wrap(request, response, reIndexer::reIndex); } @@ -151,7 +151,7 @@ public class ReindexingRoutes implements Routes { TaskId taskId = getTaskId(request); try { return previousReIndexingService.retrieveIndexingExecutionDetails(taskId); - } catch (PreviousReIndexingService.NotAnIndexingRetryiableTask | PreviousReIndexingService.TaskNotYetFinishedException e) { + } catch (PreviousReIndexingService.NotAnIndexingRetriableTask | PreviousReIndexingService.TaskNotYetFinishedException e) { throw ErrorResponder.builder() .statusCode(HttpStatus.BAD_REQUEST_400) .type(ErrorResponder.ErrorType.INVALID_ARGUMENT) diff --git a/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/service/PreviousReIndexingService.java b/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/service/PreviousReIndexingService.java index 2df5879..9c00dea 100644 --- a/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/service/PreviousReIndexingService.java +++ b/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/service/PreviousReIndexingService.java @@ -34,8 +34,8 @@ public class PreviousReIndexingService { } } - public static class NotAnIndexingRetryiableTask extends RuntimeException { - NotAnIndexingRetryiableTask(String type) { + public static class NotAnIndexingRetriableTask extends RuntimeException { + NotAnIndexingRetriableTask(String type) { super("'" + type + "' is not a valid type of task for retrying a failed indexing"); } } @@ -47,7 +47,7 @@ public class PreviousReIndexingService { this.taskManager = taskManager; } - public IndexingDetailInformation retrieveIndexingExecutionDetails(TaskId taskId) throws NotAnIndexingRetryiableTask, TaskNotFoundException, TaskNotYetFinishedException { + public IndexingDetailInformation retrieveIndexingExecutionDetails(TaskId taskId) throws NotAnIndexingRetriableTask, TaskNotFoundException, TaskNotYetFinishedException { TaskExecutionDetails executionDetails = taskManager.getExecutionDetails(taskId); if (!executionDetails.getStatus().isFinished()) { throw new TaskNotYetFinishedException(executionDetails.getStatus()); @@ -55,6 +55,6 @@ public class PreviousReIndexingService { return executionDetails.getAdditionalInformation() .filter(additionalInformation -> additionalInformation instanceof IndexingDetailInformation) .map(additionalInformation -> (IndexingDetailInformation) additionalInformation) - .orElseThrow(() -> new NotAnIndexingRetryiableTask(executionDetails.getType())); + .orElseThrow(() -> new NotAnIndexingRetriableTask(executionDetails.getType())); } } diff --git a/src/site/markdown/server/manage-webadmin.md b/src/site/markdown/server/manage-webadmin.md index efe53b7..ea99c41 100644 --- a/src/site/markdown/server/manage-webadmin.md +++ b/src/site/markdown/server/manage-webadmin.md @@ -2392,7 +2392,11 @@ The scheduled task will have the following type `FullReIndexing` and the followi ``` { "successfullyReprocessMailCount":18, - "failedReprocessedMailCount": 1 + "failedReprocessedMailCount": 3, + "failures": { + "mbx1": [{"uid": 35}, {"uid": 45}], + "mbx2": [{"uid": 38}] + } } ``` @@ -2436,7 +2440,11 @@ The scheduled task will have the following type `userReIndexing` and the followi { "user":"[email protected]", "successfullyReprocessMailCount":18, - "failedReprocessedMailCount": 1 + "failedReprocessedMailCount": 3, + "failures": { + "mbx1": [{"uid": 35}, {"uid": 45}], + "mbx2": [{"uid": 38}] + } } ``` @@ -2482,7 +2490,11 @@ The scheduled task will have the following type `mailboxReIndexing` and the foll { "mailboxId":"{mailboxId}", "successfullyReprocessMailCount":18, - "failedReprocessedMailCount": 1 + "failedReprocessedMailCount": 3, + "failures": { + "mbx1": [{"uid": 35}, {"uid": 45}], + "mbx2": [{"uid": 38}] + } } ``` @@ -2493,6 +2505,48 @@ Warning: Canceling this task should be considered unsafe as it will leave the cu Warning: While we have been trying to reduce the inconsistency window to a maximum (by keeping track of ongoing events), concurrent changes done during the reIndexing might be ignored. +### Fixing previously failed ReIndexing + +Given `bbdb69c9-082a-44b0-a85a-6e33e74287a5` being a taskId generated for a reIndexing tasks + +``` +curl -XPOST http://ip:port/mailboxes?task=reIndex&reIndexFailedMessagesOf=bbdb69c9-082a-44b0-a85a-6e33e74287a5 +``` + +Will schedule a task for reIndexing all the mails that this task failed to reIndex. + +The response to that request will be the scheduled `taskId` : + +``` +{"taskId":"5641376-02ed-47bd-bcc7-76ff6262d92a"} +``` + +Positioned headers: + + - Location header indicates the location of the resource associated with the scheduled task. Example: + +``` +Location: /tasks/3294a976-ce63-491e-bd52-1b6f465ed7a2 +``` + +Response codes: + + - 201: Success. Corresponding task id is returned. + - 400: Error in the request. Details can be found in the reported error. + +The scheduled task will have the following type `ReIndexPreviousFailures` and the following `additionalInformation`: + +``` +{ + "successfullyReprocessMailCount":18, + "failedReprocessedMailCount": 3, + "failures": { + "mbx1": [{"uid": 35}, {"uid": 45}], + "mbx2": [{"uid": 38}] + } +} +``` + ### ReIndexing a single mail ``` --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
