Skip to content

Commit

Permalink
MAILBOX-297 add containsFailedResults to FlagsUpdateStageResult
Browse files Browse the repository at this point in the history
  • Loading branch information
chibenwa committed May 29, 2017
1 parent 32fa054 commit 75cdccc
Show file tree
Hide file tree
Showing 3 changed files with 19 additions and 2 deletions.
Expand Up @@ -282,7 +282,7 @@ public Iterator<UpdatedFlags> updateFlags(Mailbox mailbox, FlagsUpdateCalculator

FlagsUpdateStageResult firstResult = runUpdateStage(mailboxId, toBeUpdated, flagUpdateCalculator);
FlagsUpdateStageResult finalResult = handleUpdatesStagedRetry(mailboxId, flagUpdateCalculator, firstResult);
if (!finalResult.getFailed().isEmpty()) {
if (finalResult.containsFailedResults()) {
LOGGER.error("Can not update following UIDs {} for mailbox {}", finalResult.getFailed(), mailboxId.asUuid());
}
return finalResult.getSucceeded().iterator();
Expand All @@ -291,7 +291,7 @@ public Iterator<UpdatedFlags> updateFlags(Mailbox mailbox, FlagsUpdateCalculator
private FlagsUpdateStageResult handleUpdatesStagedRetry(CassandraId mailboxId, FlagsUpdateCalculator flagUpdateCalculator, FlagsUpdateStageResult firstResult) {
FlagsUpdateStageResult globalResult = firstResult;
int retryCount = 0;
while (retryCount < maxRetries && !globalResult.getFailed().isEmpty()) {
while (retryCount < maxRetries && globalResult.containsFailedResults()) {
retryCount++;
FlagsUpdateStageResult stageResult = retryUpdatesStage(mailboxId, flagUpdateCalculator, globalResult.getFailed());
globalResult = globalResult.keepSucceded().merge(stageResult);
Expand Down
Expand Up @@ -70,6 +70,10 @@ public FlagsUpdateStageResult merge(FlagsUpdateStageResult other) {
.build());
}

public boolean containsFailedResults() {
return !failed.isEmpty();
}

public FlagsUpdateStageResult keepSucceded() {
return new FlagsUpdateStageResult(ImmutableList.of(), succeeded);
}
Expand Down
Expand Up @@ -131,4 +131,17 @@ public void keepSuccessShouldDiscardFailedUids() {
.isEqualTo(FlagsUpdateStageResult.success(UPDATED_FLAGS));
}

@Test
public void containsFailedResultsShouldReturnTrueWhenFailed() {
assertThat(FlagsUpdateStageResult.fail(UID).containsFailedResults())
.isTrue();
}


@Test
public void containsFailedResultsShouldReturnFalseWhenSucceeded() {
assertThat(FlagsUpdateStageResult.success(UPDATED_FLAGS).containsFailedResults())
.isFalse();
}

}

0 comments on commit 75cdccc

Please sign in to comment.