This is an automated email from the ASF dual-hosted git repository. rcordier pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/james-project.git
commit 4a189fa84b126c7c57019d1f7a3a3b1a1b1d1a2c Author: LanKhuat <khuatdang...@gmail.com> AuthorDate: Wed Jun 3 17:42:06 2020 +0700 JAMES-3201 Update tasks serialization --- .../tools/indexer/ErrorRecoveryIndexationTask.java | 4 +- .../indexer/ErrorRecoveryIndexationTaskDTO.java | 25 ++++++--- .../indexer/ReprocessingContextInformationDTO.java | 61 ++++++++++++++++------ ...lboxReindexingTaskAdditionalInformationDTO.java | 25 ++++++--- ...UserReindexingTaskAdditionalInformationDTO.java | 26 ++++++--- ...rorRecoveryIndexationTaskSerializationTest.java | 13 ++--- .../FullReindexingTaskSerializationTest.java | 16 +++--- ...erializableReIndexingExecutionFailuresTest.java | 4 +- ...ngleMailboxReindexingTaskSerializationTest.java | 11 ++-- .../UserReindexingTaskSerializationTest.java | 13 +++-- 10 files changed, 140 insertions(+), 58 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 91dfbe4..4b77b4e 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 @@ -34,6 +34,7 @@ import org.apache.james.task.TaskExecutionDetails; import org.apache.james.task.TaskType; import com.github.steveash.guavate.Guavate; +import com.google.common.collect.ImmutableList; public class ErrorRecoveryIndexationTask implements Task { public static final TaskType PREVIOUS_FAILURES_INDEXING = TaskType.of("error-recovery-indexation"); @@ -68,7 +69,8 @@ public class ErrorRecoveryIndexationTask implements Task { public ErrorRecoveryIndexationTask create(ErrorRecoveryIndexationTaskDTO dto) { return new ErrorRecoveryIndexationTask(reIndexerPerformer, - new ReIndexingExecutionFailures(messageFailuresFromDTO(dto.getPreviousFailures())), + new ReIndexingExecutionFailures(messageFailuresFromDTO(dto.getPreviousMessageFailures()), + mailboxFailuresFromDTO(dto.getPreviousMailboxFailures())), dto.getRunningOptions() .map(RunningOptionsDTO::toDomainObject) .orElse(RunningOptions.DEFAULT)); diff --git a/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/ErrorRecoveryIndexationTaskDTO.java b/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/ErrorRecoveryIndexationTaskDTO.java index 2ce86ba..7dcc1c0 100644 --- a/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/ErrorRecoveryIndexationTaskDTO.java +++ b/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/ErrorRecoveryIndexationTaskDTO.java @@ -58,7 +58,13 @@ public class ErrorRecoveryIndexationTaskDTO implements TaskDTO { .stream() .map(ErrorRecoveryIndexationTaskDTO::failuresByMailboxToReindexingFailureDTO) .collect(Guavate.toImmutableList()); - return new ErrorRecoveryIndexationTaskDTO(type, failureDTOs, Optional.of(RunningOptionsDTO.toDTO(task.getRunningOptions()))); + + List<String> failureMailboxDTOs = task.getPreviousFailures() + .mailboxFailures() + .stream() + .map(MailboxId::serialize) + .collect(Guavate.toImmutableList()); + return new ErrorRecoveryIndexationTaskDTO(type, failureDTOs, Optional.of(failureMailboxDTOs), Optional.of(RunningOptionsDTO.toDTO(task.getRunningOptions()))); } private static ReindexingFailureDTO failuresByMailboxToReindexingFailureDTO(Map.Entry<MailboxId, @@ -92,14 +98,17 @@ public class ErrorRecoveryIndexationTaskDTO implements TaskDTO { } private final String type; - private final List<ReindexingFailureDTO> previousFailures; + private final List<ReindexingFailureDTO> previousMessageFailures; + private final Optional<List<String>> previousMailboxFailures; private final Optional<RunningOptionsDTO> runningOptions; private ErrorRecoveryIndexationTaskDTO(@JsonProperty("type") String type, - @JsonProperty("previousFailures") List<ReindexingFailureDTO> previousFailures, + @JsonProperty("previousFailures") List<ReindexingFailureDTO> previousMessageFailures, + @JsonProperty("previousMailboxFailures") Optional<List<String>> previousMailboxFailures, @JsonProperty("runningOptions") Optional<RunningOptionsDTO> runningOptions) { this.type = type; - this.previousFailures = previousFailures; + this.previousMessageFailures = previousMessageFailures; + this.previousMailboxFailures = previousMailboxFailures; this.runningOptions = runningOptions; } @@ -108,8 +117,12 @@ public class ErrorRecoveryIndexationTaskDTO implements TaskDTO { return type; } - public List<ReindexingFailureDTO> getPreviousFailures() { - return previousFailures; + public List<ReindexingFailureDTO> getPreviousMessageFailures() { + return previousMessageFailures; + } + + public Optional<List<String>> getPreviousMailboxFailures() { + return previousMailboxFailures; } public Optional<RunningOptionsDTO> getRunningOptions() { 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/ReprocessingContextInformationDTO.java index 5bf65dc..714599d 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/ReprocessingContextInformationDTO.java @@ -35,6 +35,7 @@ import org.apache.james.server.task.json.dto.AdditionalInformationDTOModule; import com.fasterxml.jackson.annotation.JsonProperty; import com.github.steveash.guavate.Guavate; +import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableListMultimap; @@ -66,10 +67,12 @@ public class ReprocessingContextInformationDTO implements AdditionalInformationD DTO(@JsonProperty("type") String type, @JsonProperty("successfullyReprocessedMailCount") int successfullyReprocessedMailCount, @JsonProperty("failedReprocessedMailCount") int failedReprocessedMailCount, - @JsonProperty("failures") List<ReindexingFailureDTO> failures, + @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) { - super(type, successfullyReprocessedMailCount, failedReprocessedMailCount, failures, timestamp, runningOptions); + super(type, successfullyReprocessedMailCount, failedReprocessedMailCount, failures, messageFailures, mailboxFailures, timestamp, runningOptions); } } @@ -79,7 +82,7 @@ public class ReprocessingContextInformationDTO implements AdditionalInformationD .toDomainObjectConverter(dto -> new ReprocessingContextInformationForErrorRecoveryIndexationTask( dto.successfullyReprocessedMailCount, dto.failedReprocessedMailCount, - deserializeFailures(mailboxIdFactory, dto.failures), + deserializeFailures(mailboxIdFactory, dto.messageFailures, dto.mailboxFailures.orElse(ImmutableList.of())), dto.getTimestamp(), dto.getRunningOptions() .map(RunningOptionsDTO::toDomainObject) @@ -89,7 +92,9 @@ public class ReprocessingContextInformationDTO implements AdditionalInformationD type, details.getSuccessfullyReprocessedMailCount(), details.getFailedReprocessedMailCount(), - serializeFailures(details.failures()), + Optional.empty(), + Optional.of(serializeFailures(details.failures())), + Optional.of(details.failures().mailboxFailures().stream().map(MailboxId::serialize).collect(Guavate.toImmutableList())), details.timestamp(), Optional.of(RunningOptionsDTO.toDTO(details.getRunningOptions())))) .typeName(ErrorRecoveryIndexationTask.PREVIOUS_FAILURES_INDEXING.asString()) @@ -112,10 +117,12 @@ public class ReprocessingContextInformationDTO implements AdditionalInformationD DTO(@JsonProperty("type") String type, @JsonProperty("successfullyReprocessedMailCount") int successfullyReprocessedMailCount, @JsonProperty("failedReprocessedMailCount") int failedReprocessedMailCount, - @JsonProperty("failures") List<ReindexingFailureDTO> failures, + @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) { - super(type, successfullyReprocessedMailCount, failedReprocessedMailCount, failures, timestamp, runningOptions); + super(type, successfullyReprocessedMailCount, failedReprocessedMailCount, failures, messageFailures, mailboxFailures, timestamp, runningOptions); } } @@ -125,7 +132,7 @@ public class ReprocessingContextInformationDTO implements AdditionalInformationD .toDomainObjectConverter(dto -> new ReprocessingContextInformationForFullReindexingTask( dto.successfullyReprocessedMailCount, dto.failedReprocessedMailCount, - deserializeFailures(mailboxIdFactory, dto.failures), + deserializeFailures(mailboxIdFactory, dto.messageFailures, dto.mailboxFailures.orElse(ImmutableList.of())), dto.getTimestamp(), dto.getRunningOptions() .map(RunningOptionsDTO::toDomainObject) @@ -134,7 +141,9 @@ public class ReprocessingContextInformationDTO implements AdditionalInformationD type, details.getSuccessfullyReprocessedMailCount(), details.getFailedReprocessedMailCount(), - serializeFailures(details.failures()), + Optional.empty(), + Optional.of(serializeFailures(details.failures())), + Optional.of(details.failures().mailboxFailures().stream().map(MailboxId::serialize).collect(Guavate.toImmutableList())), details.timestamp(), Optional.of(RunningOptionsDTO.toDTO(details.getRunningOptions())))) .typeName(FullReindexingTask.FULL_RE_INDEXING.asString()) @@ -151,14 +160,18 @@ public class ReprocessingContextInformationDTO implements AdditionalInformationD } static ReIndexingExecutionFailures deserializeFailures(MailboxId.Factory mailboxIdFactory, - List<ReindexingFailureDTO> failures) { + List<ReindexingFailureDTO> failures, + List<String> mailboxFailures) { List<ReIndexingExecutionFailures.ReIndexingFailure> reIndexingFailures = failures .stream() .flatMap(failuresForMailbox -> getReIndexingFailureStream(mailboxIdFactory, failuresForMailbox)) .collect(Guavate.toImmutableList()); - return new ReIndexingExecutionFailures(reIndexingFailures); + return new ReIndexingExecutionFailures(reIndexingFailures, + mailboxFailures.stream() + .map(mailboxIdFactory::fromString) + .collect(Guavate.toImmutableList())); } private static Stream<ReIndexingExecutionFailures.ReIndexingFailure> getReIndexingFailureStream(MailboxId.Factory mailboxIdFactory, ReindexingFailureDTO failuresForMailbox) { @@ -192,24 +205,34 @@ public class ReprocessingContextInformationDTO implements AdditionalInformationD .collect(Guavate.toImmutableList()); } + static List<ReindexingFailureDTO> resolveFailure(Optional<List<ReindexingFailureDTO>> failures, Optional<List<ReindexingFailureDTO>> messageFailures) { + Preconditions.checkState(failures.isPresent() ^ messageFailures.isPresent(), + "Exactly one field 'failures' or 'messageFailures' need to be specified"); + + return failures.orElseGet(messageFailures::get); + } + protected final String type; protected final int successfullyReprocessedMailCount; protected final int failedReprocessedMailCount; - protected final List<ReindexingFailureDTO> failures; + protected final List<ReindexingFailureDTO> messageFailures; + protected final Optional<List<String>> mailboxFailures; protected final Instant timestamp; protected final Optional<RunningOptionsDTO> runningOptions; ReprocessingContextInformationDTO(@JsonProperty("type") String type, @JsonProperty("successfullyReprocessedMailCount") int successfullyReprocessedMailCount, @JsonProperty("failedReprocessedMailCount") int failedReprocessedMailCount, - @JsonProperty("failures") List<ReindexingFailureDTO> failures, + @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 - ) { + @JsonProperty("runningOptions") Optional<RunningOptionsDTO> runningOptions) { this.type = type; this.successfullyReprocessedMailCount = successfullyReprocessedMailCount; this.failedReprocessedMailCount = failedReprocessedMailCount; - this.failures = failures; + this.messageFailures = resolveFailure(failures, messageFailures); + this.mailboxFailures = mailboxFailures; this.timestamp = timestamp; this.runningOptions = runningOptions; } @@ -222,8 +245,12 @@ public class ReprocessingContextInformationDTO implements AdditionalInformationD return failedReprocessedMailCount; } - public List<ReindexingFailureDTO> getFailures() { - return failures; + public List<ReindexingFailureDTO> getMessageFailures() { + return messageFailures; + } + + public Optional<List<String>> getMailboxFailures() { + return mailboxFailures; } public Instant getTimestamp() { 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 ab2bfc8..21950e7 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 @@ -30,6 +30,8 @@ import org.apache.james.server.task.json.dto.AdditionalInformationDTOModule; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonProperty; +import com.github.steveash.guavate.Guavate; +import com.google.common.collect.ImmutableList; public class SingleMailboxReindexingTaskAdditionalInformationDTO implements AdditionalInformationDTO { @@ -39,7 +41,7 @@ public class SingleMailboxReindexingTaskAdditionalInformationDTO implements Addi .toDomainObjectConverter(dto -> new SingleMailboxReindexingTask.AdditionalInformation(factory.fromString(dto.getMailboxId()), dto.getSuccessfullyReprocessedMailCount(), dto.getFailedReprocessedMailCount(), - ReprocessingContextInformationDTO.deserializeFailures(factory, dto.getFailures()), + ReprocessingContextInformationDTO.deserializeFailures(factory, dto.getMessageFailures(), dto.getMailboxFailures().orElse(ImmutableList.of())), dto.getTimestamp(), dto.getRunningOptions() .map(RunningOptionsDTO::toDomainObject) @@ -50,7 +52,9 @@ public class SingleMailboxReindexingTaskAdditionalInformationDTO implements Addi details.getMailboxId(), details.getSuccessfullyReprocessedMailCount(), details.getFailedReprocessedMailCount(), - ReprocessingContextInformationDTO.serializeFailures(details.failures()), + Optional.empty(), + Optional.of(ReprocessingContextInformationDTO.serializeFailures(details.failures())), + Optional.of(details.failures().mailboxFailures().stream().map(MailboxId::serialize).collect(Guavate.toImmutableList())), details.timestamp(), Optional.of(RunningOptionsDTO.toDTO(details.getRunningOptions())) )) @@ -66,14 +70,19 @@ public class SingleMailboxReindexingTaskAdditionalInformationDTO implements Addi @JsonProperty("mailboxId") String mailboxId, @JsonProperty("successfullyReprocessedMailCount") int successfullyReprocessedMailCount, @JsonProperty("failedReprocessedMailCount") int failedReprocessedMailCount, - @JsonProperty("failures") List<ReprocessingContextInformationDTO.ReindexingFailureDTO> failures, + @JsonProperty("failures") Optional<List<ReprocessingContextInformationDTO.ReindexingFailureDTO>> failures, + @JsonProperty("messageFailures") Optional<List<ReprocessingContextInformationDTO.ReindexingFailureDTO>> messageFailures, + @JsonProperty("mailboxFailures") Optional<List<String>> mailboxFailures, @JsonProperty("timestamp") Instant timestamp, @JsonProperty("runningOptions") Optional<RunningOptionsDTO> runningOptions) { this.mailboxId = mailboxId; this.reprocessingContextInformationDTO = new ReprocessingContextInformationDTO( type, successfullyReprocessedMailCount, - failedReprocessedMailCount, failures, + failedReprocessedMailCount, + failures, + messageFailures, + mailboxFailures, timestamp, runningOptions); } @@ -99,8 +108,12 @@ public class SingleMailboxReindexingTaskAdditionalInformationDTO implements Addi return reprocessingContextInformationDTO.getFailedReprocessedMailCount(); } - public List<ReprocessingContextInformationDTO.ReindexingFailureDTO> getFailures() { - return reprocessingContextInformationDTO.getFailures(); + public List<ReprocessingContextInformationDTO.ReindexingFailureDTO> getMessageFailures() { + return reprocessingContextInformationDTO.getMessageFailures(); + } + + public Optional<List<String>> getMailboxFailures() { + return reprocessingContextInformationDTO.getMailboxFailures(); } public Optional<RunningOptionsDTO> getRunningOptions() { 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 b76efe9..220a7f0 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,9 +28,12 @@ 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 com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonProperty; +import com.github.steveash.guavate.Guavate; +import com.google.common.collect.ImmutableList; public class UserReindexingTaskAdditionalInformationDTO implements AdditionalInformationDTO { @@ -40,7 +43,7 @@ public class UserReindexingTaskAdditionalInformationDTO implements AdditionalInf .toDomainObjectConverter(dto -> new UserReindexingTask.AdditionalInformation(Username.of(dto.getUser()), dto.getSuccessfullyReprocessedMailCount(), dto.getFailedReprocessedMailCount(), - ReprocessingContextInformationDTO.deserializeFailures(factory, dto.getFailures()), + ReprocessingContextInformationDTO.deserializeFailures(factory, dto.getMessageFailures(), dto.getMailboxFailures().orElse(ImmutableList.of())), dto.getTimestamp(), dto.getRunningOptions() .map(RunningOptionsDTO::toDomainObject) @@ -51,10 +54,11 @@ public class UserReindexingTaskAdditionalInformationDTO implements AdditionalInf details.getUsername(), details.getSuccessfullyReprocessedMailCount(), details.getFailedReprocessedMailCount(), - ReprocessingContextInformationDTO.serializeFailures(details.failures()), + Optional.empty(), + Optional.of(ReprocessingContextInformationDTO.serializeFailures(details.failures())), + Optional.of(details.failures().mailboxFailures().stream().map(MailboxId::serialize).collect(Guavate.toImmutableList())), details.timestamp(), - Optional.of(RunningOptionsDTO.toDTO(details.getRunningOptions())) - )) + Optional.of(RunningOptionsDTO.toDTO(details.getRunningOptions())))) .typeName(UserReindexingTask.USER_RE_INDEXING.asString()) .withFactory(AdditionalInformationDTOModule::new); } @@ -67,7 +71,9 @@ public class UserReindexingTaskAdditionalInformationDTO implements AdditionalInf @JsonProperty("user") String user, @JsonProperty("successfullyReprocessedMailCount") int successfullyReprocessedMailCount, @JsonProperty("failedReprocessedMailCount") int failedReprocessedMailCount, - @JsonProperty("failures") List<ReprocessingContextInformationDTO.ReindexingFailureDTO> failures, + @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 ) { @@ -76,6 +82,8 @@ public class UserReindexingTaskAdditionalInformationDTO implements AdditionalInf successfullyReprocessedMailCount, failedReprocessedMailCount, failures, + messageFailures, + mailboxFailures, timestamp, runningOptions); } @@ -101,8 +109,12 @@ public class UserReindexingTaskAdditionalInformationDTO implements AdditionalInf return reprocessingContextInformationDTO.getFailedReprocessedMailCount(); } - public List<ReprocessingContextInformationDTO.ReindexingFailureDTO> getFailures() { - return reprocessingContextInformationDTO.getFailures(); + public List<ReindexingFailureDTO> getMessageFailures() { + return reprocessingContextInformationDTO.getMessageFailures(); + } + + public Optional<List<String>> getMailboxFailures() { + return reprocessingContextInformationDTO.getMailboxFailures(); } public Optional<RunningOptionsDTO> getRunningOptions() { 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 929d34c..05ba84d 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 @@ -43,19 +43,20 @@ class ErrorRecoveryIndexationTaskSerializationTest { private final int successfullyReprocessedMailCount = 42; private final int failedReprocessedMailCount = 2; private final String serializedErrorRecoveryReindexingTask = "{\"type\": \"error-recovery-indexation\"," + - " \"previousFailures\" : [{\"mailboxId\":\"1\",\"uids\":[10]},{\"mailboxId\":\"2\",\"uids\":[20]}], \"runningOptions\":{\"messagesPerSecond\":50}}"; + " \"previousMessageFailures\" : [{\"mailboxId\":\"1\",\"uids\":[10]},{\"mailboxId\":\"2\",\"uids\":[20]}], \"previousMailboxFailures\": [\"3\"], \"runningOptions\":{\"messagesPerSecond\":50}}"; private final String legacySerializedErrorRecoveryReindexingTask = "{\"type\": \"error-recovery-indexation\"," + " \"previousFailures\" : [{\"mailboxId\":\"1\",\"uids\":[10]},{\"mailboxId\":\"2\",\"uids\":[20]}]}"; - private final String serializedAdditionalInformation = "{\"type\": \"error-recovery-indexation\", \"successfullyReprocessedMailCount\":42,\"failedReprocessedMailCount\":2,\"failures\":[{\"mailboxId\":\"1\",\"uids\":[10]},{\"mailboxId\":\"2\",\"uids\":[20]}], \"timestamp\":\"2018-11-13T12:00:55Z\", \"runningOptions\":{\"messagesPerSecond\":50}}"; + private final String serializedAdditionalInformation = "{\"type\": \"error-recovery-indexation\", \"successfullyReprocessedMailCount\":42,\"failedReprocessedMailCount\":2,\"messageFailures\":[{\"mailboxId\":\"1\",\"uids\":[10]},{\"mailboxId\":\"2\",\"uids\":[20]}], \"mailboxFailures\":[\"3\"], \"timestamp\":\"2018-11-13T12:00:55Z\", \"runningOptions\":{\"messagesPerSecond\":50}}"; private final String legacySerializedAdditionalInformation = "{\"type\": \"error-recovery-indexation\", \"successfullyReprocessedMailCount\":42,\"failedReprocessedMailCount\":2,\"failures\":[{\"mailboxId\":\"1\",\"uids\":[10]},{\"mailboxId\":\"2\",\"uids\":[20]}], \"timestamp\":\"2018-11-13T12:00:55Z\"}"; private final TestId mailboxId = TestId.of(1L); private final MessageUid messageUid = MessageUid.of(10L); private final ReIndexingExecutionFailures.ReIndexingFailure indexingFailure = new ReIndexingExecutionFailures.ReIndexingFailure(mailboxId, messageUid); private final TestId mailboxId2 = TestId.of(2L); private final MessageUid messageUid2 = MessageUid.of(20L); + private final TestId mailboxId3 = TestId.of(3L); private final ReIndexingExecutionFailures.ReIndexingFailure indexingFailure2 = new ReIndexingExecutionFailures.ReIndexingFailure(mailboxId2, messageUid2); private final List<ReIndexingExecutionFailures.ReIndexingFailure> failures = ImmutableList.of(indexingFailure, indexingFailure2); - private final ReIndexingExecutionFailures executionFailures = new ReIndexingExecutionFailures(failures); + private final ReIndexingExecutionFailures executionFailures = new ReIndexingExecutionFailures(failures, ImmutableList.of(mailboxId3)); private ErrorRecoveryIndexationTask.Factory factory; private ReIndexerPerformer reIndexerPerformer; @@ -75,12 +76,12 @@ class ErrorRecoveryIndexationTaskSerializationTest { } @Test - void legacyTaskshouldBeDeserializable() throws Exception { + void legacyTaskShouldBeDeserializable() throws Exception { ErrorRecoveryIndexationTask legacyTask = JsonGenericSerializer.forModules(ErrorRecoveryIndexationTaskDTO.module(factory)) .withoutNestedType() .deserialize(legacySerializedErrorRecoveryReindexingTask); - ErrorRecoveryIndexationTask expected = new ErrorRecoveryIndexationTask(reIndexerPerformer, executionFailures, RunningOptions.DEFAULT); + ErrorRecoveryIndexationTask expected = new ErrorRecoveryIndexationTask(reIndexerPerformer, new ReIndexingExecutionFailures(failures, ImmutableList.of()), RunningOptions.DEFAULT); assertThat(legacyTask) .isEqualToComparingFieldByFieldRecursively(expected); @@ -104,7 +105,7 @@ class ErrorRecoveryIndexationTaskSerializationTest { ReprocessingContextInformationDTO.ReprocessingContextInformationForFullReindexingTask expected = new ReprocessingContextInformationDTO.ReprocessingContextInformationForFullReindexingTask( 42, 2, - executionFailures, + new ReIndexingExecutionFailures(failures, ImmutableList.of()), TIMESTAMP, RunningOptions.DEFAULT ); 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 5842e3e..49b3511 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 @@ -38,10 +38,11 @@ import com.google.common.collect.ImmutableList; class FullReindexingTaskSerializationTest { private static final Instant TIMESTAMP = Instant.parse("2018-11-13T12:00:55Z"); - private final TestId mailboxId2 = TestId.of(2L); - private final MessageUid messageUid2 = MessageUid.of(20L); private final TestId mailboxId = TestId.of(1L); private final MessageUid messageUid = MessageUid.of(10L); + private final TestId mailboxId2 = TestId.of(2L); + private final MessageUid messageUid2 = MessageUid.of(20L); + private final TestId mailboxId3 = TestId.of(3L); private final int successfullyReprocessedMailCount = 42; private final int failedReprocessedMailCount = 2; @@ -49,7 +50,7 @@ class FullReindexingTaskSerializationTest { private final String serializedFullReindexingTask = "{\"type\":\"full-reindexing\", \"runningOptions\":{\"messagesPerSecond\":50}}"; private final String legacySerializedFullReindexingTask = "{\"type\":\"full-reindexing\"}"; - private final String serializedAdditionalInformation = "{\"type\": \"full-reindexing\", \"runningOptions\":{\"messagesPerSecond\":50}, \"successfullyReprocessedMailCount\":42,\"failedReprocessedMailCount\":2,\"failures\":[{\"mailboxId\":\"1\",\"uids\":[10]},{\"mailboxId\":\"2\",\"uids\":[20]}], \"timestamp\":\"2018-11-13T12:00:55Z\"}"; + private final String serializedAdditionalInformation = "{\"type\": \"full-reindexing\", \"runningOptions\":{\"messagesPerSecond\":50}, \"successfullyReprocessedMailCount\":42,\"failedReprocessedMailCount\":2,\"messageFailures\":[{\"mailboxId\":\"1\",\"uids\":[10]},{\"mailboxId\":\"2\",\"uids\":[20]}], \"mailboxFailures\": [\"3\"],\"timestamp\":\"2018-11-13T12:00:55Z\"}"; private final String legacySerializedAdditionalInformation = "{\"type\": \"full-reindexing\", \"successfullyReprocessedMailCount\":42,\"failedReprocessedMailCount\":2,\"failures\":[{\"mailboxId\":\"1\",\"uids\":[10]},{\"mailboxId\":\"2\",\"uids\":[20]}], \"timestamp\":\"2018-11-13T12:00:55Z\"}"; private ReIndexingExecutionFailures reIndexingExecutionFailures; @@ -60,8 +61,9 @@ class FullReindexingTaskSerializationTest { reIndexerPerformer = mock(ReIndexerPerformer.class); reIndexingExecutionFailures = new ReIndexingExecutionFailures(ImmutableList.of( - new ReIndexingExecutionFailures.ReIndexingFailure(mailboxId, messageUid), - new ReIndexingExecutionFailures.ReIndexingFailure(mailboxId2, messageUid2))); + new ReIndexingExecutionFailures.ReIndexingFailure(mailboxId, messageUid), + new ReIndexingExecutionFailures.ReIndexingFailure(mailboxId2, messageUid2)), + ImmutableList.of(mailboxId3)); } @Test @@ -103,7 +105,9 @@ class FullReindexingTaskSerializationTest { ReprocessingContextInformationForFullReindexingTask expected = new ReprocessingContextInformationForFullReindexingTask( 42, 2, - reIndexingExecutionFailures, + new ReIndexingExecutionFailures(ImmutableList.of( + new ReIndexingExecutionFailures.ReIndexingFailure(mailboxId, messageUid), + new ReIndexingExecutionFailures.ReIndexingFailure(mailboxId2, messageUid2)), ImmutableList.of()), TIMESTAMP, RunningOptions.DEFAULT ); diff --git a/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/SerializableReIndexingExecutionFailuresTest.java b/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/SerializableReIndexingExecutionFailuresTest.java index 147032f..5ef546a 100644 --- a/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/SerializableReIndexingExecutionFailuresTest.java +++ b/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/SerializableReIndexingExecutionFailuresTest.java @@ -44,7 +44,7 @@ class SerializableReIndexingExecutionFailuresTest { @Test void failuresShouldBeSerializedAsEmptyArrayWhenNone() throws Exception { - ReIndexingExecutionFailures failures = new ReIndexingExecutionFailures(ImmutableList.of()); + ReIndexingExecutionFailures failures = new ReIndexingExecutionFailures(ImmutableList.of(), ImmutableList.of()); assertThatJson(objectMapper.writeValueAsString(SerializableReIndexingExecutionFailures.from(failures))) .when(Option.IGNORING_ARRAY_ORDER) @@ -59,7 +59,7 @@ class SerializableReIndexingExecutionFailuresTest { new ReIndexingExecutionFailures.ReIndexingFailure(InMemoryId.of(44), MessageUid.of(31)), new ReIndexingExecutionFailures.ReIndexingFailure(InMemoryId.of(44), MessageUid.of(34)), new ReIndexingExecutionFailures.ReIndexingFailure(InMemoryId.of(41), MessageUid.of(18)), - new ReIndexingExecutionFailures.ReIndexingFailure(InMemoryId.of(16), MessageUid.of(24)))); + new ReIndexingExecutionFailures.ReIndexingFailure(InMemoryId.of(16), MessageUid.of(24))), ImmutableList.of()); assertThatJson(objectMapper.writeValueAsString(SerializableReIndexingExecutionFailures.from(failures))) .when(Option.IGNORING_ARRAY_ORDER) diff --git a/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/SingleMailboxReindexingTaskSerializationTest.java b/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/SingleMailboxReindexingTaskSerializationTest.java index f0462d0..3e1028a 100644 --- a/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/SingleMailboxReindexingTaskSerializationTest.java +++ b/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/SingleMailboxReindexingTaskSerializationTest.java @@ -42,10 +42,11 @@ class SingleMailboxReindexingTaskSerializationTest { private final String serializedMailboxReindexingTask = "{\"type\": \"mailbox-reindexing\", \"mailboxId\": \"1\", \"runningOptions\":{\"messagesPerSecond\":50}}"; private final String legacySerializedMailboxReindexingTask = "{\"type\": \"mailbox-reindexing\", \"mailboxId\": \"1\"}"; - private final String serializedAdditionalInformation = "{\"type\": \"mailbox-reindexing\", \"mailboxId\": \"1\", \"successfullyReprocessedMailCount\":42,\"failedReprocessedMailCount\":2,\"failures\":[{\"mailboxId\":\"1\",\"uids\":[10, 20]}], \"timestamp\":\"2018-11-13T12:00:55Z\", \"runningOptions\":{\"messagesPerSecond\":50}}"; + private final String serializedAdditionalInformation = "{\"type\": \"mailbox-reindexing\", \"mailboxId\": \"1\", \"successfullyReprocessedMailCount\":42,\"failedReprocessedMailCount\":2,\"messageFailures\":[{\"mailboxId\":\"1\",\"uids\":[10, 20]}], \"mailboxFailures\": [\"2\"],\"timestamp\":\"2018-11-13T12:00:55Z\", \"runningOptions\":{\"messagesPerSecond\":50}}"; private final String legacySerializedAdditionalInformation = "{\"type\": \"mailbox-reindexing\", \"mailboxId\": \"1\", \"successfullyReprocessedMailCount\":42,\"failedReprocessedMailCount\":2,\"failures\":[{\"mailboxId\":\"1\",\"uids\":[10, 20]}], \"timestamp\":\"2018-11-13T12:00:55Z\"}"; private final TestId mailboxId = TestId.of(1L); + private final TestId mailboxId2 = TestId.of(2L); private final MessageUid messageUid = MessageUid.of(10L); private final MessageUid messageUid2 = MessageUid.of(20L); @@ -59,7 +60,8 @@ class SingleMailboxReindexingTaskSerializationTest { factory = new SingleMailboxReindexingTask.Factory(reIndexerPerformer, new TestId.Factory()); reIndexingExecutionFailures = new ReIndexingExecutionFailures(ImmutableList.of( new ReIndexingExecutionFailures.ReIndexingFailure(mailboxId, messageUid), - new ReIndexingExecutionFailures.ReIndexingFailure(mailboxId, messageUid2))); + new ReIndexingExecutionFailures.ReIndexingFailure(mailboxId, messageUid2)), + ImmutableList.of(mailboxId2)); } @Test @@ -102,7 +104,10 @@ class SingleMailboxReindexingTaskSerializationTest { mailboxId, 42, 2, - reIndexingExecutionFailures, + new ReIndexingExecutionFailures(ImmutableList.of( + new ReIndexingExecutionFailures.ReIndexingFailure(mailboxId, messageUid), + new ReIndexingExecutionFailures.ReIndexingFailure(mailboxId, messageUid2)), + ImmutableList.of()), TIMESTAMP, RunningOptions.DEFAULT ); diff --git a/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/UserReindexingTaskSerializationTest.java b/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/UserReindexingTaskSerializationTest.java index bcdcc3b..84c9efd 100644 --- a/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/UserReindexingTaskSerializationTest.java +++ b/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/UserReindexingTaskSerializationTest.java @@ -43,12 +43,13 @@ class UserReindexingTaskSerializationTest { private final int failedReprocessedMailCount = 2; private final String serializedUserReindexingTask = "{\"type\": \"user-reindexing\", \"username\": \"f...@apache.org\", \"runningOptions\":{\"messagesPerSecond\":50}}"; private final String legacySerializedUserReindexingTask = "{\"type\": \"user-reindexing\", \"username\": \"f...@apache.org\"}"; - private final String serializedAdditionalInformation = "{\"type\": \"user-reindexing\", \"user\": \"f...@apache.org\", \"successfullyReprocessedMailCount\":42,\"failedReprocessedMailCount\":2,\"failures\":[{\"mailboxId\":\"1\",\"uids\":[10]},{\"mailboxId\":\"2\",\"uids\":[20]}], \"timestamp\":\"2018-11-13T12:00:55Z\", \"runningOptions\":{\"messagesPerSecond\":50}}"; + private final String serializedAdditionalInformation = "{\"type\": \"user-reindexing\", \"user\": \"f...@apache.org\", \"successfullyReprocessedMailCount\":42,\"failedReprocessedMailCount\":2,\"messageFailures\":[{\"mailboxId\":\"1\",\"uids\":[10]},{\"mailboxId\":\"2\",\"uids\":[20]}],\"mailboxFailures\":[\"3\"], \"timestamp\":\"2018-11-13T12:00:55Z\", \"runningOptions\":{\"messagesPerSecond\":50}}"; private final String legacySerializedAdditionalInformation = "{\"type\": \"user-reindexing\", \"user\": \"f...@apache.org\", \"successfullyReprocessedMailCount\":42,\"failedReprocessedMailCount\":2,\"failures\":[{\"mailboxId\":\"1\",\"uids\":[10]},{\"mailboxId\":\"2\",\"uids\":[20]}], \"timestamp\":\"2018-11-13T12:00:55Z\"}"; private final TestId mailboxId = TestId.of(1L); private final MessageUid messageUid = MessageUid.of(10L); private final TestId mailboxId2 = TestId.of(2L); private final MessageUid messageUid2 = MessageUid.of(20L); + private final TestId mailboxId3 = TestId.of(3L); private ReIndexerPerformer reIndexerPerformer; private UserReindexingTask.Factory factory; @@ -60,8 +61,9 @@ class UserReindexingTaskSerializationTest { factory = new UserReindexingTask.Factory(reIndexerPerformer); reIndexingExecutionFailures = new ReIndexingExecutionFailures(ImmutableList.of( - new ReIndexingExecutionFailures.ReIndexingFailure(mailboxId, messageUid), - new ReIndexingExecutionFailures.ReIndexingFailure(mailboxId2, messageUid2))); + new ReIndexingExecutionFailures.ReIndexingFailure(mailboxId, messageUid), + new ReIndexingExecutionFailures.ReIndexingFailure(mailboxId2, messageUid2)), + ImmutableList.of(mailboxId3)); } @Test @@ -103,7 +105,10 @@ class UserReindexingTaskSerializationTest { USERNAME, 42, 2, - reIndexingExecutionFailures, + new ReIndexingExecutionFailures(ImmutableList.of( + new ReIndexingExecutionFailures.ReIndexingFailure(mailboxId, messageUid), + new ReIndexingExecutionFailures.ReIndexingFailure(mailboxId2, messageUid2)), + ImmutableList.of()), TIMESTAMP, RunningOptions.DEFAULT ); --------------------------------------------------------------------- To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org