You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by bt...@apache.org on 2019/09/24 09:23:23 UTC
[james-project] 08/10: JAMES-2897 use SERIAL when reading table
where we use LWT
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 ae218e593bf7c615b6774f60ba91af3a7b7356d0
Author: Matthieu Baechler <ma...@apache.org>
AuthorDate: Tue Sep 10 16:49:44 2019 +0200
JAMES-2897 use SERIAL when reading table where we use LWT
---
.../org/apache/james/mailbox/cassandra/mail/CassandraACLMapper.java | 4 +++-
.../james/mailbox/cassandra/mail/CassandraMessageIdToImapUidDAO.java | 3 ++-
.../apache/james/mailbox/cassandra/mail/CassandraModSeqProvider.java | 4 +++-
.../org/apache/james/mailbox/cassandra/mail/CassandraUidProvider.java | 4 +++-
4 files changed, 11 insertions(+), 4 deletions(-)
diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraACLMapper.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraACLMapper.java
index 2698c4c..a81d3d2 100644
--- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraACLMapper.java
+++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraACLMapper.java
@@ -45,6 +45,7 @@ import org.apache.james.util.FunctionalUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import com.datastax.driver.core.ConsistencyLevel;
import com.datastax.driver.core.PreparedStatement;
import com.datastax.driver.core.Row;
import com.datastax.driver.core.Session;
@@ -153,7 +154,8 @@ public class CassandraACLMapper {
private Mono<Row> getStoredACLRow(CassandraId cassandraId) {
return executor.executeSingleRow(
readStatement.bind()
- .setUUID(CassandraACLTable.ID, cassandraId.asUuid()));
+ .setUUID(CassandraACLTable.ID, cassandraId.asUuid())
+ .setConsistencyLevel(ConsistencyLevel.SERIAL));
}
private Mono<MailboxACL> updateStoredACL(CassandraId cassandraId, ACLWithVersion aclWithVersion) {
diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageIdToImapUidDAO.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageIdToImapUidDAO.java
index aaae23b..8c31e8d 100644
--- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageIdToImapUidDAO.java
+++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageIdToImapUidDAO.java
@@ -194,7 +194,8 @@ public class CassandraMessageIdToImapUidDAO {
public Flux<ComposedMessageIdWithMetaData> retrieve(CassandraMessageId messageId, Optional<CassandraId> mailboxId) {
return cassandraAsyncExecutor.executeRows(
- selectStatement(messageId, mailboxId).setConsistencyLevel(ConsistencyLevel.SERIAL))
+ selectStatement(messageId, mailboxId)
+ .setConsistencyLevel(ConsistencyLevel.SERIAL))
.map(this::toComposedMessageIdWithMetadata);
}
diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraModSeqProvider.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraModSeqProvider.java
index 02a7adc..efaf09f 100644
--- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraModSeqProvider.java
+++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraModSeqProvider.java
@@ -46,6 +46,7 @@ import org.apache.james.mailbox.model.MailboxId;
import org.apache.james.mailbox.store.mail.ModSeqProvider;
import org.apache.james.util.FunctionalUtils;
+import com.datastax.driver.core.ConsistencyLevel;
import com.datastax.driver.core.PreparedStatement;
import com.datastax.driver.core.Session;
import com.google.common.base.MoreObjects;
@@ -148,7 +149,8 @@ public class CassandraModSeqProvider implements ModSeqProvider {
private Mono<Optional<ModSeq>> findHighestModSeq(CassandraId mailboxId) {
return cassandraAsyncExecutor.executeSingleRowOptional(
select.bind()
- .setUUID(MAILBOX_ID, mailboxId.asUuid()))
+ .setUUID(MAILBOX_ID, mailboxId.asUuid())
+ .setConsistencyLevel(ConsistencyLevel.SERIAL))
.map(maybeRow -> maybeRow.map(row -> new ModSeq(row.getLong(NEXT_MODSEQ))));
}
diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraUidProvider.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraUidProvider.java
index 5755ee5..73f628f 100644
--- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraUidProvider.java
+++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraUidProvider.java
@@ -43,6 +43,7 @@ import org.apache.james.mailbox.model.Mailbox;
import org.apache.james.mailbox.model.MailboxId;
import org.apache.james.mailbox.store.mail.UidProvider;
+import com.datastax.driver.core.ConsistencyLevel;
import com.datastax.driver.core.PreparedStatement;
import com.datastax.driver.core.Session;
import reactor.core.publisher.Mono;
@@ -118,7 +119,8 @@ public class CassandraUidProvider implements UidProvider {
private Mono<MessageUid> findHighestUid(CassandraId mailboxId) {
return Mono.defer(() -> executor.executeSingleRow(
selectStatement.bind()
- .setUUID(MAILBOX_ID, mailboxId.asUuid()))
+ .setUUID(MAILBOX_ID, mailboxId.asUuid())
+ .setConsistencyLevel(ConsistencyLevel.SERIAL))
.map(row -> MessageUid.of(row.getLong(NEXT_UID))));
}
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org