MAILBOX-267 Don't fail on single index update failure for message update
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/09c9d34c Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/09c9d34c Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/09c9d34c Branch: refs/heads/master Commit: 09c9d34c65172d6e5ceefd34d59f37d3785b1167 Parents: 75cdccc Author: benwa <[email protected]> Authored: Wed May 24 16:05:58 2017 +0700 Committer: benwa <[email protected]> Committed: Mon May 29 17:02:50 2017 +0700 ---------------------------------------------------------------------- .../james/mailbox/cassandra/mail/CassandraMessageMapper.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/james-project/blob/09c9d34c/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageMapper.java ---------------------------------------------------------------------- diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageMapper.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageMapper.java index 68133eb..8d00e77 100644 --- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageMapper.java +++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageMapper.java @@ -57,6 +57,7 @@ import org.apache.james.util.streams.JamesCollectors; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import com.github.fge.lambdas.Throwing; import com.github.steveash.guavate.Guavate; import com.google.common.collect.ImmutableList; @@ -329,7 +330,12 @@ public class CassandraMessageMapper implements MessageMapper { private CompletableFuture<FlagsUpdateStageResult> updateIndexesForUpdatesResult(CassandraId mailboxId, FlagsUpdateStageResult result) { return FluentFutureStream.of( result.getSucceeded().stream() - .map((UpdatedFlags updatedFlags) -> indexTableHandler.updateIndexOnFlagsUpdate(mailboxId, updatedFlags))) + .map(Throwing + .function((UpdatedFlags updatedFlags) -> indexTableHandler.updateIndexOnFlagsUpdate(mailboxId, updatedFlags)) + .fallbackTo(failedindex -> { + LOGGER.error("Could not update flag indexes for mailboxId {} UID {}. This will lead to inconsistencies across Cassandra tables"); + return CompletableFuture.completedFuture(null); + }))) .completableFuture() .thenApply(any -> result); } --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
