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 27fda4a92a151f8b7d4255dcd659d43217cac79a Author: Benoit Tellier <btell...@linagora.com> AuthorDate: Thu Mar 5 18:10:01 2020 +0700 JAMES-2897 Set ConsistencyLevel to QUORUM at the request level where needed Finding a mailbox and a message defaulted to ALL consistency level instead of the expected QUORUM value. This commit enforce QUORUM to be used for all cassandra reads of both of these operations not being set at consistency level SERIAL. --- .../apache/james/mailbox/cassandra/mail/CassandraAttachmentDAOV2.java | 4 +++- .../org/apache/james/mailbox/cassandra/mail/CassandraMailboxDAO.java | 4 +++- .../james/mailbox/cassandra/mail/CassandraMailboxPathDAOImpl.java | 4 +++- .../org/apache/james/mailbox/cassandra/mail/CassandraMessageDAO.java | 4 +++- 4 files changed, 12 insertions(+), 4 deletions(-) diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraAttachmentDAOV2.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraAttachmentDAOV2.java index a044e1f..5a1ee5f 100644 --- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraAttachmentDAOV2.java +++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraAttachmentDAOV2.java @@ -19,6 +19,7 @@ package org.apache.james.mailbox.cassandra.mail; +import static com.datastax.driver.core.ConsistencyLevel.QUORUM; import static com.datastax.driver.core.querybuilder.QueryBuilder.bindMarker; import static com.datastax.driver.core.querybuilder.QueryBuilder.eq; import static com.datastax.driver.core.querybuilder.QueryBuilder.insertInto; @@ -154,7 +155,8 @@ public class CassandraAttachmentDAOV2 { Preconditions.checkArgument(attachmentId != null); return cassandraAsyncExecutor.executeSingleRow( selectStatement.bind() - .setUUID(ID_AS_UUID, attachmentId.asUUID())) + .setUUID(ID_AS_UUID, attachmentId.asUUID()) + .setConsistencyLevel(QUORUM)) .map(row -> CassandraAttachmentDAOV2.fromRow(row, blobIdFactory)); } diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxDAO.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxDAO.java index e5c097c..02a7b13 100644 --- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxDAO.java +++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxDAO.java @@ -19,6 +19,7 @@ package org.apache.james.mailbox.cassandra.mail; +import static com.datastax.driver.core.ConsistencyLevel.QUORUM; import static com.datastax.driver.core.querybuilder.QueryBuilder.bindMarker; import static com.datastax.driver.core.querybuilder.QueryBuilder.eq; import static com.datastax.driver.core.querybuilder.QueryBuilder.insertInto; @@ -135,7 +136,8 @@ public class CassandraMailboxDAO { public Mono<Mailbox> retrieveMailbox(CassandraId mailboxId) { return executor.executeSingleRow(readStatement.bind() - .setUUID(ID, mailboxId.asUuid())) + .setUUID(ID, mailboxId.asUuid()) + .setConsistencyLevel(QUORUM)) .map(row -> mailboxFromRow(row, mailboxId)); } diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxPathDAOImpl.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxPathDAOImpl.java index 50093ff..df210a0 100644 --- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxPathDAOImpl.java +++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxPathDAOImpl.java @@ -19,6 +19,7 @@ package org.apache.james.mailbox.cassandra.mail; +import static com.datastax.driver.core.ConsistencyLevel.QUORUM; import static com.datastax.driver.core.querybuilder.QueryBuilder.bindMarker; import static com.datastax.driver.core.querybuilder.QueryBuilder.count; import static com.datastax.driver.core.querybuilder.QueryBuilder.eq; @@ -127,7 +128,8 @@ public class CassandraMailboxPathDAOImpl { return cassandraAsyncExecutor.executeSingleRow( select.bind() .setUDTValue(NAMESPACE_AND_USER, mailboxBaseTupleUtil.createMailboxBaseUDT(mailboxPath.getNamespace(), mailboxPath.getUser())) - .setString(MAILBOX_NAME, mailboxPath.getName())) + .setString(MAILBOX_NAME, mailboxPath.getName()) + .setConsistencyLevel(QUORUM)) .map(this::fromRowToCassandraIdAndPath) .map(FunctionalUtils.toFunction(this::logGhostMailboxSuccess)) .switchIfEmpty(ReactorUtils.executeAndEmpty(() -> logGhostMailboxFailure(mailboxPath))); diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageDAO.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageDAO.java index 0bfce81..621a685 100644 --- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageDAO.java +++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageDAO.java @@ -19,6 +19,7 @@ package org.apache.james.mailbox.cassandra.mail; +import static com.datastax.driver.core.ConsistencyLevel.QUORUM; import static com.datastax.driver.core.querybuilder.QueryBuilder.bindMarker; import static com.datastax.driver.core.querybuilder.QueryBuilder.eq; import static com.datastax.driver.core.querybuilder.QueryBuilder.insertInto; @@ -248,7 +249,8 @@ public class CassandraMessageDAO { return cassandraAsyncExecutor.execute(retrieveSelect(fetchType) .bind() - .setUUID(MESSAGE_ID, cassandraMessageId.get())); + .setUUID(MESSAGE_ID, cassandraMessageId.get()) + .setConsistencyLevel(QUORUM)); } private Mono<MessageResult> --------------------------------------------------------------------- To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org