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 2020/06/29 04:38:37 UTC
[james-project] 07/09: JAMES-3224 Parameterize
ConsistencyLevel.{QUORUM, SERIAL}
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 b3e77c68dd43321cbe60b100abedd9967ec0628b
Author: Gautier DI FOLCO <gd...@linagora.com>
AuthorDate: Tue Jun 16 18:37:27 2020 +0200
JAMES-3224 Parameterize ConsistencyLevel.{QUORUM, SERIAL}
---
.../cassandra/CassandraClusterExtension.java | 11 +++++++++
.../eventstore/cassandra/EventStoreDao.scala | 11 ++++++---
.../cassandra/CassandraEventStoreExtension.scala | 2 +-
.../mailbox/cassandra/mail/CassandraACLMapper.java | 8 +++++--
.../cassandra/mail/CassandraAttachmentDAOV2.java | 10 +++++---
.../cassandra/mail/CassandraMailboxDAO.java | 16 +++++++++----
.../mail/CassandraMailboxPathDAOImpl.java | 16 +++++++++----
.../cassandra/mail/CassandraMailboxPathV2DAO.java | 12 ++++++----
.../cassandra/mail/CassandraMessageDAO.java | 18 ++++++++++-----
.../mail/CassandraMessageIdToImapUidDAO.java | 8 +++++--
.../cassandra/mail/CassandraModSeqProvider.java | 8 +++++--
.../cassandra/mail/CassandraUidProvider.java | 8 +++++--
.../cassandra/CassandraMailboxManagerTest.java | 25 ++++++++++++++++----
.../cassandra/mail/CassandraACLMapperTest.java | 3 ++-
.../mail/CassandraAttachmentDAOV2Test.java | 5 +++-
.../cassandra/mail/CassandraMailboxDAOTest.java | 5 +++-
.../cassandra/mail/CassandraMailboxMapperTest.java | 9 ++++----
.../mail/CassandraMailboxPathDAOImplTest.java | 5 +++-
.../mail/CassandraMailboxPathV2DAOTest.java | 5 +++-
.../cassandra/mail/CassandraMapperProvider.java | 9 ++++++--
.../cassandra/mail/CassandraMessageDAOTest.java | 9 ++++++--
.../mail/CassandraMessageIdMapperTest.java | 9 ++++++--
.../mail/CassandraMessageIdToImapUidDAOTest.java | 5 +++-
.../cassandra/mail/CassandraMessageMapperTest.java | 9 ++++++--
.../cassandra/mail/CassandraMessageMoveTest.java | 4 +++-
.../CassandraMessageWithAttachmentMapperTest.java | 4 +++-
.../mail/CassandraModSeqProviderTest.java | 5 +++-
.../cassandra/mail/CassandraUidProviderTest.java | 5 +++-
.../mail/migration/MailboxPathV2MigrationTest.java | 17 ++++++++++----
.../task/RecomputeMailboxCountersServiceTest.java | 10 ++++++--
.../SolveMailboxInconsistenciesServiceTest.java | 10 ++++++--
.../SolveMessageInconsistenciesServiceTest.java | 5 +++-
.../mailbox/cassandra/mail/utils/GuiceUtils.java | 11 +++++----
...ventSourcingDLPConfigurationStoreExtension.java | 3 ++-
.../RabbitMQMailQueueConfigurationChangeTest.java | 1 +
.../queue/rabbitmq/RabbitMQMailQueueTest.java | 27 +++++++++++++---------
.../CassandraMailQueueViewTestFactory.java | 12 ++++++++--
37 files changed, 251 insertions(+), 89 deletions(-)
diff --git a/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/CassandraClusterExtension.java b/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/CassandraClusterExtension.java
index 68b5478..f28d09d 100644
--- a/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/CassandraClusterExtension.java
+++ b/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/CassandraClusterExtension.java
@@ -20,6 +20,8 @@
package org.apache.james.backends.cassandra;
import org.apache.james.backends.cassandra.components.CassandraModule;
+import org.apache.james.backends.cassandra.init.configuration.CassandraConfiguration;
+import org.apache.james.backends.cassandra.init.configuration.CassandraConsistenciesConfiguration;
import org.apache.james.backends.cassandra.init.configuration.ClusterConfiguration;
import org.junit.jupiter.api.extension.AfterAllCallback;
import org.junit.jupiter.api.extension.AfterEachCallback;
@@ -33,11 +35,16 @@ import org.junit.jupiter.api.extension.ParameterResolver;
public class CassandraClusterExtension implements BeforeAllCallback, BeforeEachCallback, AfterAllCallback, AfterEachCallback, ParameterResolver {
private final DockerCassandraExtension cassandraExtension;
private final CassandraModule cassandraModule;
+ private final CassandraConfiguration cassandraConfiguration;
+ private final CassandraConsistenciesConfiguration consistencyLevelsConfiguration;
private CassandraCluster cassandraCluster;
public CassandraClusterExtension(CassandraModule cassandraModule) {
this.cassandraModule = cassandraModule;
this.cassandraExtension = new DockerCassandraExtension();
+ this.cassandraConfiguration = CassandraConfiguration.builder().build();
+ this.consistencyLevelsConfiguration = CassandraConsistenciesConfiguration
+ .fromConfiguration(this.cassandraConfiguration);
}
@Override
@@ -109,4 +116,8 @@ public class CassandraClusterExtension implements BeforeAllCallback, BeforeEachC
public CassandraCluster getCassandraCluster() {
return cassandraCluster;
}
+
+ public CassandraConsistenciesConfiguration getCassandraConsistenciesConfiguration() {
+ return consistencyLevelsConfiguration;
+ }
}
diff --git a/event-sourcing/event-store-cassandra/src/main/scala/org/apache/james/eventsourcing/eventstore/cassandra/EventStoreDao.scala b/event-sourcing/event-store-cassandra/src/main/scala/org/apache/james/eventsourcing/eventstore/cassandra/EventStoreDao.scala
index 5921733..60ded33 100644
--- a/event-sourcing/event-store-cassandra/src/main/scala/org/apache/james/eventsourcing/eventstore/cassandra/EventStoreDao.scala
+++ b/event-sourcing/event-store-cassandra/src/main/scala/org/apache/james/eventsourcing/eventstore/cassandra/EventStoreDao.scala
@@ -18,19 +18,24 @@
****************************************************************/
package org.apache.james.eventsourcing.eventstore.cassandra
-import com.datastax.driver.core.ConsistencyLevel.SERIAL
import com.datastax.driver.core._
import com.datastax.driver.core.querybuilder.QueryBuilder
import com.datastax.driver.core.querybuilder.QueryBuilder.{bindMarker, insertInto}
import javax.inject.Inject
+
+import org.apache.james.backends.cassandra.init.configuration.CassandraConsistenciesConfiguration
import org.apache.james.backends.cassandra.utils.CassandraAsyncExecutor
import org.apache.james.eventsourcing.eventstore.History
import org.apache.james.eventsourcing.eventstore.cassandra.CassandraEventStoreTable.{AGGREGATE_ID, EVENT, EVENTS_TABLE, EVENT_ID}
import org.apache.james.eventsourcing.{AggregateId, Event}
+
import reactor.core.scala.publisher.{SFlux, SMono}
-class EventStoreDao @Inject() (val session: Session, val jsonEventSerializer: JsonEventSerializer) {
+class EventStoreDao @Inject() (val session: Session,
+ val jsonEventSerializer: JsonEventSerializer,
+ val consistenciesConfiguration: CassandraConsistenciesConfiguration) {
private val cassandraAsyncExecutor = new CassandraAsyncExecutor(session)
+ private val consistencyLevel: ConsistencyLevel = consistenciesConfiguration.getLightweightTransaction
private val insert = prepareInsert(session)
private val select = prepareSelect(session)
@@ -75,7 +80,7 @@ class EventStoreDao @Inject() (val session: Session, val jsonEventSerializer: Js
private[cassandra] def getEventsOfAggregate(aggregateId: AggregateId): SMono[History] = {
val preparedStatement = select.bind.setString(AGGREGATE_ID, aggregateId.asAggregateKey)
- .setConsistencyLevel(SERIAL)
+ .setConsistencyLevel(consistencyLevel)
val rows: SFlux[Row] = SFlux[Row](cassandraAsyncExecutor.executeRows(preparedStatement))
val events: SFlux[Event] = rows.map(toEvent)
diff --git a/event-sourcing/event-store-cassandra/src/test/scala/org/apache/james/eventsourcing/eventstore/cassandra/CassandraEventStoreExtension.scala b/event-sourcing/event-store-cassandra/src/test/scala/org/apache/james/eventsourcing/eventstore/cassandra/CassandraEventStoreExtension.scala
index dd8f7d8..f480cc0 100644
--- a/event-sourcing/event-store-cassandra/src/test/scala/org/apache/james/eventsourcing/eventstore/cassandra/CassandraEventStoreExtension.scala
+++ b/event-sourcing/event-store-cassandra/src/test/scala/org/apache/james/eventsourcing/eventstore/cassandra/CassandraEventStoreExtension.scala
@@ -43,7 +43,7 @@ class CassandraEventStoreExtension(var cassandra: CassandraClusterExtension, val
override def afterAll(context: ExtensionContext): Unit = cassandra.afterAll(context)
override def beforeEach(context: ExtensionContext): Unit = eventStoreDao =
- Some(new EventStoreDao(cassandra.getCassandraCluster.getConf, eventSerializer))
+ Some(new EventStoreDao(cassandra.getCassandraCluster.getConf, eventSerializer, cassandra.getCassandraConsistenciesConfiguration))
override def afterEach(context: ExtensionContext): Unit = cassandra.afterEach(context)
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 0ff9efa..cda7f9f 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
@@ -32,6 +32,7 @@ import java.util.function.Function;
import javax.inject.Inject;
import org.apache.james.backends.cassandra.init.configuration.CassandraConfiguration;
+import org.apache.james.backends.cassandra.init.configuration.CassandraConsistenciesConfiguration;
import org.apache.james.backends.cassandra.utils.CassandraAsyncExecutor;
import org.apache.james.mailbox.acl.ACLDiff;
import org.apache.james.mailbox.cassandra.ids.CassandraId;
@@ -66,11 +67,14 @@ public class CassandraACLMapper {
private final PreparedStatement conditionalUpdateStatement;
private final PreparedStatement readStatement;
private final PreparedStatement deleteStatement;
+ private final ConsistencyLevel consistencyLevel;
@Inject
- public CassandraACLMapper(Session session, CassandraUserMailboxRightsDAO userMailboxRightsDAO, CassandraConfiguration cassandraConfiguration) {
+ public CassandraACLMapper(Session session, CassandraUserMailboxRightsDAO userMailboxRightsDAO,
+ CassandraConfiguration cassandraConfiguration, CassandraConsistenciesConfiguration consistenciesConfiguration) {
this.executor = new CassandraAsyncExecutor(session);
this.maxAclRetry = cassandraConfiguration.getAclMaxRetry();
+ this.consistencyLevel = consistenciesConfiguration.getLightweightTransaction();
this.conditionalInsertStatement = prepareConditionalInsert(session);
this.conditionalUpdateStatement = prepareConditionalUpdate(session);
this.readStatement = prepareReadStatement(session);
@@ -150,7 +154,7 @@ public class CassandraACLMapper {
return executor.executeSingleRow(
readStatement.bind()
.setUUID(CassandraACLTable.ID, cassandraId.asUuid())
- .setConsistencyLevel(ConsistencyLevel.SERIAL));
+ .setConsistencyLevel(consistencyLevel));
}
private Mono<MailboxACL> updateStoredACL(CassandraId cassandraId, ACLWithVersion aclWithVersion) {
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 6659868..5eae589 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,7 +19,6 @@
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;
@@ -36,12 +35,14 @@ import java.util.Objects;
import javax.inject.Inject;
+import org.apache.james.backends.cassandra.init.configuration.CassandraConsistenciesConfiguration;
import org.apache.james.backends.cassandra.utils.CassandraAsyncExecutor;
import org.apache.james.blob.api.BlobId;
import org.apache.james.mailbox.model.AttachmentId;
import org.apache.james.mailbox.model.AttachmentMetadata;
import org.apache.james.mailbox.model.ContentType;
+import com.datastax.driver.core.ConsistencyLevel;
import com.datastax.driver.core.PreparedStatement;
import com.datastax.driver.core.Row;
import com.datastax.driver.core.Session;
@@ -128,11 +129,14 @@ public class CassandraAttachmentDAOV2 {
private final PreparedStatement insertStatement;
private final PreparedStatement deleteStatement;
private final PreparedStatement selectStatement;
+ private final ConsistencyLevel consistencyLevel;
@Inject
- public CassandraAttachmentDAOV2(BlobId.Factory blobIdFactory, Session session) {
+ public CassandraAttachmentDAOV2(BlobId.Factory blobIdFactory, Session session,
+ CassandraConsistenciesConfiguration consistenciesConfiguration) {
this.blobIdFactory = blobIdFactory;
this.cassandraAsyncExecutor = new CassandraAsyncExecutor(session);
+ this.consistencyLevel = consistenciesConfiguration.getRegular();
this.selectStatement = prepareSelect(session);
this.insertStatement = prepareInsert(session);
@@ -166,7 +170,7 @@ public class CassandraAttachmentDAOV2 {
return cassandraAsyncExecutor.executeSingleRow(
selectStatement.bind()
.setUUID(ID_AS_UUID, attachmentId.asUUID())
- .setConsistencyLevel(QUORUM))
+ .setConsistencyLevel(consistencyLevel))
.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 6daf88e..92b0142 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,7 +19,6 @@
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;
@@ -36,6 +35,7 @@ import static org.apache.james.mailbox.cassandra.table.CassandraMailboxTable.UID
import javax.inject.Inject;
import org.apache.james.backends.cassandra.init.CassandraTypesProvider;
+import org.apache.james.backends.cassandra.init.configuration.CassandraConsistenciesConfiguration;
import org.apache.james.backends.cassandra.utils.CassandraAsyncExecutor;
import org.apache.james.backends.cassandra.utils.CassandraUtils;
import org.apache.james.core.Username;
@@ -46,6 +46,7 @@ import org.apache.james.mailbox.model.Mailbox;
import org.apache.james.mailbox.model.MailboxPath;
import org.apache.james.mailbox.model.UidValidity;
+import com.datastax.driver.core.ConsistencyLevel;
import com.datastax.driver.core.PreparedStatement;
import com.datastax.driver.core.Row;
import com.datastax.driver.core.Session;
@@ -66,10 +67,14 @@ public class CassandraMailboxDAO {
private final PreparedStatement insertStatement;
private final PreparedStatement updateStatement;
private final PreparedStatement updateUidValidityStatement;
+ private final ConsistencyLevel consistencyLevel;
@Inject
- public CassandraMailboxDAO(Session session, CassandraTypesProvider typesProvider, CassandraUtils cassandraUtils) {
+ public CassandraMailboxDAO(Session session, CassandraTypesProvider typesProvider,
+ CassandraConsistenciesConfiguration consistenciesConfiguration,
+ CassandraUtils cassandraUtils) {
this.executor = new CassandraAsyncExecutor(session);
+ this.consistencyLevel = consistenciesConfiguration.getRegular();
this.mailboxBaseTupleUtil = new MailboxBaseTupleUtil(typesProvider);
this.insertStatement = prepareInsert(session);
this.updateStatement = prepareUpdate(session);
@@ -81,8 +86,9 @@ public class CassandraMailboxDAO {
}
@VisibleForTesting
- public CassandraMailboxDAO(Session session, CassandraTypesProvider typesProvider) {
- this(session, typesProvider, CassandraUtils.WITH_DEFAULT_CONFIGURATION);
+ public CassandraMailboxDAO(Session session, CassandraTypesProvider typesProvider,
+ CassandraConsistenciesConfiguration consistenciesConfiguration) {
+ this(session, typesProvider, consistenciesConfiguration, CassandraUtils.WITH_DEFAULT_CONFIGURATION);
}
private PreparedStatement prepareInsert(Session session) {
@@ -145,7 +151,7 @@ public class CassandraMailboxDAO {
public Mono<Mailbox> retrieveMailbox(CassandraId mailboxId) {
return executor.executeSingleRow(readStatement.bind()
.setUUID(ID, mailboxId.asUuid())
- .setConsistencyLevel(QUORUM))
+ .setConsistencyLevel(consistencyLevel))
.flatMap(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 291f02a..e33a567 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,7 +19,6 @@
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;
@@ -35,6 +34,7 @@ import static org.apache.james.mailbox.cassandra.table.CassandraMailboxPathTable
import javax.inject.Inject;
import org.apache.james.backends.cassandra.init.CassandraTypesProvider;
+import org.apache.james.backends.cassandra.init.configuration.CassandraConsistenciesConfiguration;
import org.apache.james.backends.cassandra.utils.CassandraAsyncExecutor;
import org.apache.james.backends.cassandra.utils.CassandraUtils;
import org.apache.james.core.Username;
@@ -46,6 +46,7 @@ import org.apache.james.mailbox.model.MailboxPath;
import org.apache.james.util.FunctionalUtils;
import org.apache.james.util.ReactorUtils;
+import com.datastax.driver.core.ConsistencyLevel;
import com.datastax.driver.core.PreparedStatement;
import com.datastax.driver.core.Row;
import com.datastax.driver.core.Session;
@@ -68,12 +69,16 @@ public class CassandraMailboxPathDAOImpl {
private final PreparedStatement selectAllForUser;
private final PreparedStatement selectAll;
private final PreparedStatement countAll;
+ private final ConsistencyLevel consistencyLevel;
@Inject
- public CassandraMailboxPathDAOImpl(Session session, CassandraTypesProvider typesProvider, CassandraUtils cassandraUtils) {
+ public CassandraMailboxPathDAOImpl(Session session, CassandraTypesProvider typesProvider,
+ CassandraUtils cassandraUtils,
+ CassandraConsistenciesConfiguration consistenciesConfiguration) {
this.cassandraAsyncExecutor = new CassandraAsyncExecutor(session);
this.mailboxBaseTupleUtil = new MailboxBaseTupleUtil(typesProvider);
this.cassandraUtils = cassandraUtils;
+ this.consistencyLevel = consistenciesConfiguration.getRegular();
this.insert = prepareInsert(session);
this.delete = prepareDelete(session);
this.select = prepareSelect(session);
@@ -83,8 +88,9 @@ public class CassandraMailboxPathDAOImpl {
}
@VisibleForTesting
- public CassandraMailboxPathDAOImpl(Session session, CassandraTypesProvider typesProvider) {
- this(session, typesProvider, CassandraUtils.WITH_DEFAULT_CONFIGURATION);
+ public CassandraMailboxPathDAOImpl(Session session, CassandraTypesProvider typesProvider,
+ CassandraConsistenciesConfiguration consistenciesConfiguration) {
+ this(session, typesProvider, CassandraUtils.WITH_DEFAULT_CONFIGURATION, consistenciesConfiguration);
}
private PreparedStatement prepareDelete(Session session) {
@@ -129,7 +135,7 @@ public class CassandraMailboxPathDAOImpl {
select.bind()
.setUDTValue(NAMESPACE_AND_USER, mailboxBaseTupleUtil.createMailboxBaseUDT(mailboxPath.getNamespace(), mailboxPath.getUser()))
.setString(MAILBOX_NAME, mailboxPath.getName())
- .setConsistencyLevel(QUORUM))
+ .setConsistencyLevel(consistencyLevel))
.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/CassandraMailboxPathV2DAO.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxPathV2DAO.java
index b89a755..c0202f0 100644
--- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxPathV2DAO.java
+++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxPathV2DAO.java
@@ -19,7 +19,6 @@
package org.apache.james.mailbox.cassandra.mail;
-import static com.datastax.driver.core.ConsistencyLevel.SERIAL;
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;
@@ -34,6 +33,7 @@ import static org.apache.james.mailbox.cassandra.table.CassandraMailboxPathV2Tab
import javax.inject.Inject;
+import org.apache.james.backends.cassandra.init.configuration.CassandraConsistenciesConfiguration;
import org.apache.james.backends.cassandra.utils.CassandraAsyncExecutor;
import org.apache.james.backends.cassandra.utils.CassandraUtils;
import org.apache.james.core.Username;
@@ -43,6 +43,7 @@ import org.apache.james.mailbox.model.MailboxPath;
import org.apache.james.util.FunctionalUtils;
import org.apache.james.util.ReactorUtils;
+import com.datastax.driver.core.ConsistencyLevel;
import com.datastax.driver.core.PreparedStatement;
import com.datastax.driver.core.Row;
import com.datastax.driver.core.Session;
@@ -59,10 +60,13 @@ public class CassandraMailboxPathV2DAO {
private final PreparedStatement select;
private final PreparedStatement selectUser;
private final PreparedStatement selectAll;
+ private final ConsistencyLevel consistencyLevel;
@Inject
- public CassandraMailboxPathV2DAO(Session session, CassandraUtils cassandraUtils) {
+ public CassandraMailboxPathV2DAO(Session session, CassandraUtils cassandraUtils,
+ CassandraConsistenciesConfiguration consistenciesConfiguration) {
this.cassandraAsyncExecutor = new CassandraAsyncExecutor(session);
+ this.consistencyLevel = consistenciesConfiguration.getLightweightTransaction();
this.cassandraUtils = cassandraUtils;
this.insert = prepareInsert(session);
this.delete = prepareDelete(session);
@@ -115,7 +119,7 @@ public class CassandraMailboxPathV2DAO {
.setString(NAMESPACE, mailboxPath.getNamespace())
.setString(USER, sanitizeUser(mailboxPath.getUser()))
.setString(MAILBOX_NAME, mailboxPath.getName())
- .setConsistencyLevel(SERIAL))
+ .setConsistencyLevel(consistencyLevel))
.map(this::fromRowToCassandraIdAndPath)
.map(FunctionalUtils.toFunction(this::logGhostMailboxSuccess))
.switchIfEmpty(ReactorUtils.executeAndEmpty(() -> logGhostMailboxFailure(mailboxPath)));
@@ -126,7 +130,7 @@ public class CassandraMailboxPathV2DAO {
selectUser.bind()
.setString(NAMESPACE, namespace)
.setString(USER, sanitizeUser(user))
- .setConsistencyLevel(SERIAL))
+ .setConsistencyLevel(consistencyLevel))
.flatMapMany(cassandraUtils::convertToFlux)
.map(this::fromRowToCassandraIdAndPath)
.map(FunctionalUtils.toFunction(this::logReadSuccess));
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 800b296..8c447d7 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,7 +19,6 @@
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;
@@ -54,6 +53,7 @@ import javax.mail.util.SharedByteArrayInputStream;
import org.apache.commons.io.IOUtils;
import org.apache.james.backends.cassandra.init.CassandraTypesProvider;
import org.apache.james.backends.cassandra.init.configuration.CassandraConfiguration;
+import org.apache.james.backends.cassandra.init.configuration.CassandraConsistenciesConfiguration;
import org.apache.james.backends.cassandra.utils.CassandraAsyncExecutor;
import org.apache.james.blob.api.BlobId;
import org.apache.james.blob.api.BlobStore;
@@ -72,6 +72,7 @@ import org.apache.james.mailbox.store.mail.model.Property;
import org.apache.james.mailbox.store.mail.model.impl.PropertyBuilder;
import com.datastax.driver.core.BoundStatement;
+import com.datastax.driver.core.ConsistencyLevel;
import com.datastax.driver.core.PreparedStatement;
import com.datastax.driver.core.ResultSet;
import com.datastax.driver.core.Row;
@@ -104,12 +105,15 @@ public class CassandraMessageDAO {
private final PreparedStatement selectBody;
private final PreparedStatement selectAllMessagesWithAttachment;
private final Cid.CidParser cidParser;
+ private final ConsistencyLevel consistencyLevel;
@Inject
public CassandraMessageDAO(Session session, CassandraTypesProvider typesProvider, BlobStore blobStore,
- BlobId.Factory blobIdFactory, CassandraConfiguration cassandraConfiguration,
- CassandraMessageId.Factory messageIdFactory) {
+ BlobId.Factory blobIdFactory, CassandraConfiguration cassandraConfiguration,
+ CassandraConsistenciesConfiguration consistenciesConfiguration,
+ CassandraMessageId.Factory messageIdFactory) {
this.cassandraAsyncExecutor = new CassandraAsyncExecutor(session);
+ this.consistencyLevel = consistenciesConfiguration.getRegular();
this.typesProvider = typesProvider;
this.blobStore = blobStore;
this.blobIdFactory = blobIdFactory;
@@ -128,8 +132,10 @@ public class CassandraMessageDAO {
@VisibleForTesting
public CassandraMessageDAO(Session session, CassandraTypesProvider typesProvider, BlobStore blobStore,
- BlobId.Factory blobIdFactory, CassandraMessageId.Factory messageIdFactory) {
- this(session, typesProvider, blobStore, blobIdFactory, CassandraConfiguration.DEFAULT_CONFIGURATION, messageIdFactory);
+ BlobId.Factory blobIdFactory, CassandraMessageId.Factory messageIdFactory,
+ CassandraConsistenciesConfiguration consistenciesConfiguration) {
+ this(session, typesProvider, blobStore, blobIdFactory, CassandraConfiguration.DEFAULT_CONFIGURATION,
+ consistenciesConfiguration, messageIdFactory);
}
private PreparedStatement prepareSelect(Session session, String[] fields) {
@@ -239,7 +245,7 @@ public class CassandraMessageDAO {
return cassandraAsyncExecutor.execute(retrieveSelect(fetchType)
.bind()
.setUUID(MESSAGE_ID, messageId.get())
- .setConsistencyLevel(QUORUM));
+ .setConsistencyLevel(consistencyLevel));
}
private Mono<MessageRepresentation>
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 91cf3e3..e12e2de 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
@@ -46,6 +46,7 @@ import javax.inject.Inject;
import javax.mail.Flags;
import javax.mail.Flags.Flag;
+import org.apache.james.backends.cassandra.init.configuration.CassandraConsistenciesConfiguration;
import org.apache.james.backends.cassandra.utils.CassandraAsyncExecutor;
import org.apache.james.mailbox.MessageUid;
import org.apache.james.mailbox.ModSeq;
@@ -78,10 +79,13 @@ public class CassandraMessageIdToImapUidDAO {
private final PreparedStatement selectAll;
private final PreparedStatement select;
private final PreparedStatement listStatement;
+ private final ConsistencyLevel consistencyLevel;
@Inject
- public CassandraMessageIdToImapUidDAO(Session session, CassandraMessageId.Factory messageIdFactory) {
+ public CassandraMessageIdToImapUidDAO(Session session, CassandraConsistenciesConfiguration consistenciesConfiguration,
+ CassandraMessageId.Factory messageIdFactory) {
this.cassandraAsyncExecutor = new CassandraAsyncExecutor(session);
+ this.consistencyLevel = consistenciesConfiguration.getLightweightTransaction();
this.messageIdFactory = messageIdFactory;
this.delete = prepareDelete(session);
this.insert = prepareInsert(session);
@@ -195,7 +199,7 @@ public class CassandraMessageIdToImapUidDAO {
public Flux<ComposedMessageIdWithMetaData> retrieve(CassandraMessageId messageId, Optional<CassandraId> mailboxId) {
return cassandraAsyncExecutor.executeRows(
selectStatement(messageId, mailboxId)
- .setConsistencyLevel(ConsistencyLevel.SERIAL))
+ .setConsistencyLevel(consistencyLevel))
.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 fc1647c..e41df05 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
@@ -38,6 +38,7 @@ import java.util.function.Supplier;
import javax.inject.Inject;
import org.apache.james.backends.cassandra.init.configuration.CassandraConfiguration;
+import org.apache.james.backends.cassandra.init.configuration.CassandraConsistenciesConfiguration;
import org.apache.james.backends.cassandra.utils.CassandraAsyncExecutor;
import org.apache.james.mailbox.ModSeq;
import org.apache.james.mailbox.cassandra.ids.CassandraId;
@@ -87,10 +88,13 @@ public class CassandraModSeqProvider implements ModSeqProvider {
private final PreparedStatement select;
private final PreparedStatement update;
private final PreparedStatement insert;
+ private final ConsistencyLevel consistencyLevel;
@Inject
- public CassandraModSeqProvider(Session session, CassandraConfiguration cassandraConfiguration) {
+ public CassandraModSeqProvider(Session session, CassandraConfiguration cassandraConfiguration,
+ CassandraConsistenciesConfiguration consistenciesConfiguration) {
this.cassandraAsyncExecutor = new CassandraAsyncExecutor(session);
+ this.consistencyLevel = consistenciesConfiguration.getLightweightTransaction();
this.maxModSeqRetries = cassandraConfiguration.getModSeqMaxRetry();
this.insert = prepareInsert(session);
this.update = prepareUpdate(session);
@@ -148,7 +152,7 @@ public class CassandraModSeqProvider implements ModSeqProvider {
return cassandraAsyncExecutor.executeSingleRowOptional(
select.bind()
.setUUID(MAILBOX_ID, mailboxId.asUuid())
- .setConsistencyLevel(ConsistencyLevel.SERIAL))
+ .setConsistencyLevel(consistencyLevel))
.map(maybeRow -> maybeRow.map(row -> ModSeq.of(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 86fa061..da048f0 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
@@ -36,6 +36,7 @@ import java.util.Optional;
import javax.inject.Inject;
import org.apache.james.backends.cassandra.init.configuration.CassandraConfiguration;
+import org.apache.james.backends.cassandra.init.configuration.CassandraConsistenciesConfiguration;
import org.apache.james.backends.cassandra.utils.CassandraAsyncExecutor;
import org.apache.james.mailbox.MessageUid;
import org.apache.james.mailbox.cassandra.ids.CassandraId;
@@ -60,10 +61,13 @@ public class CassandraUidProvider implements UidProvider {
private final PreparedStatement insertStatement;
private final PreparedStatement updateStatement;
private final PreparedStatement selectStatement;
+ private final ConsistencyLevel consistencyLevel;
@Inject
- public CassandraUidProvider(Session session, CassandraConfiguration cassandraConfiguration) {
+ public CassandraUidProvider(Session session, CassandraConfiguration cassandraConfiguration,
+ CassandraConsistenciesConfiguration consistenciesConfiguration) {
this.executor = new CassandraAsyncExecutor(session);
+ this.consistencyLevel = consistenciesConfiguration.getLightweightTransaction();
this.maxUidRetries = cassandraConfiguration.getUidMaxRetry();
this.selectStatement = prepareSelect(session);
this.updateStatement = prepareUpdate(session);
@@ -125,7 +129,7 @@ public class CassandraUidProvider implements UidProvider {
return executor.executeSingleRow(
selectStatement.bind()
.setUUID(MAILBOX_ID, mailboxId.asUuid())
- .setConsistencyLevel(ConsistencyLevel.SERIAL))
+ .setConsistencyLevel(consistencyLevel))
.map(row -> MessageUid.of(row.getLong(NEXT_UID)));
}
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMailboxManagerTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMailboxManagerTest.java
index cc1a026..9b14082 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMailboxManagerTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMailboxManagerTest.java
@@ -756,7 +756,11 @@ public class CassandraMailboxManagerTest extends MailboxManagerTest<CassandraMai
}
private CassandraACLMapper aclMapper(CassandraCluster cassandraCluster) {
- return new CassandraACLMapper(cassandraCluster.getConf(), rightsDAO(cassandraCluster), CassandraConfiguration.DEFAULT_CONFIGURATION);
+ return new CassandraACLMapper(
+ cassandraCluster.getConf(),
+ rightsDAO(cassandraCluster),
+ CassandraConfiguration.DEFAULT_CONFIGURATION,
+ cassandra.getCassandraConsistenciesConfiguration());
}
private CassandraUserMailboxRightsDAO rightsDAO(CassandraCluster cassandraCluster) {
@@ -768,7 +772,10 @@ public class CassandraMailboxManagerTest extends MailboxManagerTest<CassandraMai
}
private CassandraAttachmentDAOV2 attachmentDAO(CassandraCluster cassandraCluster) {
- return new CassandraAttachmentDAOV2(new HashBlobId.Factory(), cassandraCluster.getConf());
+ return new CassandraAttachmentDAOV2(
+ new HashBlobId.Factory(),
+ cassandraCluster.getConf(),
+ cassandra.getCassandraConsistenciesConfiguration());
}
private CassandraMessageIdDAO messageIdDAO(CassandraCluster cassandraCluster) {
@@ -776,12 +783,20 @@ public class CassandraMailboxManagerTest extends MailboxManagerTest<CassandraMai
}
private CassandraMessageIdToImapUidDAO imapUidDAO(CassandraCluster cassandraCluster) {
- return new CassandraMessageIdToImapUidDAO(cassandraCluster.getConf(), new CassandraMessageId.Factory());
+ return new CassandraMessageIdToImapUidDAO(
+ cassandraCluster.getConf(),
+ cassandra.getCassandraConsistenciesConfiguration(),
+ new CassandraMessageId.Factory());
}
private CassandraMessageDAO messageDAO(CassandraCluster cassandraCluster) {
- return new CassandraMessageDAO(cassandraCluster.getConf(), cassandraCluster.getTypesProvider(),
- mock(BlobStore.class), new HashBlobId.Factory(), new CassandraMessageId.Factory());
+ return new CassandraMessageDAO(
+ cassandraCluster.getConf(),
+ cassandraCluster.getTypesProvider(),
+ mock(BlobStore.class),
+ new HashBlobId.Factory(),
+ new CassandraMessageId.Factory(),
+ cassandra.getCassandraConsistenciesConfiguration());
}
}
}
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraACLMapperTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraACLMapperTest.java
index f5b3eb7..8f2486b 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraACLMapperTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraACLMapperTest.java
@@ -242,7 +242,8 @@ class CassandraACLMapperTest {
CassandraACLMapper aclMapper = new CassandraACLMapper(
cassandra.getConf(),
new CassandraUserMailboxRightsDAO(cassandra.getConf(), CassandraUtils.WITH_DEFAULT_CONFIGURATION),
- CassandraConfiguration.DEFAULT_CONFIGURATION);
+ CassandraConfiguration.DEFAULT_CONFIGURATION,
+ cassandraCluster.getCassandraConsistenciesConfiguration());
aclMapper.updateACL(MAILBOX_ID, MailboxACL.command().key(key).rights(rights).asAddition()).block();
return true;
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraAttachmentDAOV2Test.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraAttachmentDAOV2Test.java
index 00e5e6f..0da5b98 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraAttachmentDAOV2Test.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraAttachmentDAOV2Test.java
@@ -47,7 +47,10 @@ class CassandraAttachmentDAOV2Test {
@BeforeEach
void setUp(CassandraCluster cassandra) {
- testee = new CassandraAttachmentDAOV2(BLOB_ID_FACTORY, cassandra.getConf());
+ testee = new CassandraAttachmentDAOV2(
+ BLOB_ID_FACTORY,
+ cassandra.getConf(),
+ cassandraCluster.getCassandraConsistenciesConfiguration());
}
@Test
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxDAOTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxDAOTest.java
index b7b570d..08bdcf5 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxDAOTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxDAOTest.java
@@ -69,7 +69,10 @@ class CassandraMailboxDAOTest {
@BeforeEach
void setUp(CassandraCluster cassandra) {
- testee = new CassandraMailboxDAO(cassandra.getConf(), cassandra.getTypesProvider());
+ testee = new CassandraMailboxDAO(
+ cassandra.getConf(),
+ cassandra.getTypesProvider(),
+ cassandraCluster.getCassandraConsistenciesConfiguration());
mailbox1 = new Mailbox(MailboxPath.forUser(USER, "abcd"),
UID_VALIDITY_1,
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapperTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapperTest.java
index 29f4158..ea6ce6b 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapperTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapperTest.java
@@ -89,14 +89,15 @@ class CassandraMailboxMapperTest {
@BeforeEach
void setUp() {
CassandraCluster cassandra = cassandraCluster.getCassandraCluster();
- mailboxDAO = new CassandraMailboxDAO(cassandra.getConf(), cassandra.getTypesProvider());
- mailboxPathDAO = new CassandraMailboxPathDAOImpl(cassandra.getConf(), cassandra.getTypesProvider());
- mailboxPathV2DAO = new CassandraMailboxPathV2DAO(cassandra.getConf(), CassandraUtils.WITH_DEFAULT_CONFIGURATION);
+ mailboxDAO = new CassandraMailboxDAO(cassandra.getConf(), cassandra.getTypesProvider(), cassandraCluster.getCassandraConsistenciesConfiguration());
+ mailboxPathDAO = new CassandraMailboxPathDAOImpl(cassandra.getConf(), cassandra.getTypesProvider(), cassandraCluster.getCassandraConsistenciesConfiguration());
+ mailboxPathV2DAO = new CassandraMailboxPathV2DAO(cassandra.getConf(), CassandraUtils.WITH_DEFAULT_CONFIGURATION, cassandraCluster.getCassandraConsistenciesConfiguration());
CassandraUserMailboxRightsDAO userMailboxRightsDAO = new CassandraUserMailboxRightsDAO(cassandra.getConf(), CassandraUtils.WITH_DEFAULT_CONFIGURATION);
CassandraACLMapper aclMapper = new CassandraACLMapper(
cassandra.getConf(),
new CassandraUserMailboxRightsDAO(cassandra.getConf(), CassandraUtils.WITH_DEFAULT_CONFIGURATION),
- CassandraConfiguration.DEFAULT_CONFIGURATION);
+ CassandraConfiguration.DEFAULT_CONFIGURATION,
+ cassandraCluster.getCassandraConsistenciesConfiguration());
testee = new CassandraMailboxMapper(
mailboxDAO,
mailboxPathDAO,
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxPathDAOImplTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxPathDAOImplTest.java
index 9b88ebd..15b8eb0 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxPathDAOImplTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxPathDAOImplTest.java
@@ -50,7 +50,10 @@ class CassandraMailboxPathDAOImplTest {
@BeforeEach
void setUp(CassandraCluster cassandra) {
- testee = new CassandraMailboxPathDAOImpl(cassandra.getConf(), cassandra.getTypesProvider());
+ testee = new CassandraMailboxPathDAOImpl(
+ cassandra.getConf(),
+ cassandra.getTypesProvider(),
+ cassandraCluster.getCassandraConsistenciesConfiguration());
}
@Test
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxPathV2DAOTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxPathV2DAOTest.java
index 2cb04d3..742988b 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxPathV2DAOTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxPathV2DAOTest.java
@@ -51,7 +51,10 @@ class CassandraMailboxPathV2DAOTest {
@BeforeEach
void setUp(CassandraCluster cassandra) {
- testee = new CassandraMailboxPathV2DAO(cassandra.getConf(), CassandraUtils.WITH_DEFAULT_CONFIGURATION);
+ testee = new CassandraMailboxPathV2DAO(
+ cassandra.getConf(),
+ CassandraUtils.WITH_DEFAULT_CONFIGURATION,
+ cassandraCluster.getCassandraConsistenciesConfiguration());
}
@Test
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMapperProvider.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMapperProvider.java
index befae86..ca5a756 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMapperProvider.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMapperProvider.java
@@ -22,6 +22,7 @@ import java.util.List;
import org.apache.james.backends.cassandra.CassandraCluster;
import org.apache.james.backends.cassandra.init.configuration.CassandraConfiguration;
+import org.apache.james.backends.cassandra.init.configuration.CassandraConsistenciesConfiguration;
import org.apache.james.core.Username;
import org.apache.james.mailbox.MailboxSession;
import org.apache.james.mailbox.MailboxSessionUtil;
@@ -54,10 +55,14 @@ public class CassandraMapperProvider implements MapperProvider {
private final MailboxSession mailboxSession = MailboxSessionUtil.create(Username.of("benwa"));
private CassandraMailboxSessionMapperFactory mapperFactory;
- public CassandraMapperProvider(CassandraCluster cassandra) {
+ public CassandraMapperProvider(CassandraCluster cassandra,
+ CassandraConsistenciesConfiguration cassandraConsistenciesConfiguration) {
this.cassandra = cassandra;
messageUidProvider = new MessageUidProvider();
- cassandraModSeqProvider = new CassandraModSeqProvider(this.cassandra.getConf(), CassandraConfiguration.DEFAULT_CONFIGURATION);
+ cassandraModSeqProvider = new CassandraModSeqProvider(
+ this.cassandra.getConf(),
+ CassandraConfiguration.DEFAULT_CONFIGURATION,
+ cassandraConsistenciesConfiguration);
mapperFactory = createMapperFactory();
}
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageDAOTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageDAOTest.java
index 7ee6030..7ac448b 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageDAOTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageDAOTest.java
@@ -89,8 +89,13 @@ class CassandraMessageDAOTest {
messageId = messageIdFactory.generate();
CassandraBlobStore blobStore = CassandraBlobStore.forTesting(cassandra.getConf());
HashBlobId.Factory blobIdFactory = new HashBlobId.Factory();
- testee = new CassandraMessageDAO(cassandra.getConf(), cassandra.getTypesProvider(), blobStore, blobIdFactory,
- new CassandraMessageId.Factory());
+ testee = new CassandraMessageDAO(
+ cassandra.getConf(),
+ cassandra.getTypesProvider(),
+ blobStore,
+ blobIdFactory,
+ new CassandraMessageId.Factory(),
+ cassandraCluster.getCassandraConsistenciesConfiguration());
messageIdWithMetadata = ComposedMessageIdWithMetaData.builder()
.composedMessageId(new ComposedMessageId(MAILBOX_ID, messageId, messageUid))
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageIdMapperTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageIdMapperTest.java
index 104a72a..c196c71 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageIdMapperTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageIdMapperTest.java
@@ -56,7 +56,9 @@ class CassandraMessageIdMapperTest extends MessageIdMapperTest {
@Override
protected CassandraMapperProvider provideMapper() {
- return new CassandraMapperProvider(cassandraCluster.getCassandraCluster());
+ return new CassandraMapperProvider(
+ cassandraCluster.getCassandraCluster(),
+ cassandraCluster.getCassandraConsistenciesConfiguration());
}
@Test
@@ -196,7 +198,10 @@ class CassandraMessageIdMapperTest extends MessageIdMapperTest {
// ignoring expected error
}
- CassandraMessageIdToImapUidDAO imapUidDAO = new CassandraMessageIdToImapUidDAO(cassandra.getConf(), new CassandraMessageId.Factory());
+ CassandraMessageIdToImapUidDAO imapUidDAO = new CassandraMessageIdToImapUidDAO(
+ cassandra.getConf(),
+ cassandraCluster.getCassandraConsistenciesConfiguration(),
+ new CassandraMessageId.Factory());
SoftAssertions.assertSoftly(Throwing.consumer(softly -> {
softly.assertThat(sut.find(ImmutableList.of(message1.getMessageId()), MessageMapper.FetchType.Metadata))
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageIdToImapUidDAOTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageIdToImapUidDAOTest.java
index 5bb8d48..9ce6eb9 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageIdToImapUidDAOTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageIdToImapUidDAOTest.java
@@ -60,7 +60,10 @@ class CassandraMessageIdToImapUidDAOTest {
@BeforeEach
void setUp(CassandraCluster cassandra) {
messageIdFactory = new CassandraMessageId.Factory();
- testee = new CassandraMessageIdToImapUidDAO(cassandra.getConf(), messageIdFactory);
+ testee = new CassandraMessageIdToImapUidDAO(
+ cassandra.getConf(),
+ cassandraCluster.getCassandraConsistenciesConfiguration(),
+ messageIdFactory);
}
@Test
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageMapperTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageMapperTest.java
index 8581377..3ace7df 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageMapperTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageMapperTest.java
@@ -56,7 +56,9 @@ class CassandraMessageMapperTest extends MessageMapperTest {
@Override
protected MapperProvider createMapperProvider() {
- return new CassandraMapperProvider(cassandraCluster.getCassandraCluster());
+ return new CassandraMapperProvider(
+ cassandraCluster.getCassandraCluster(),
+ cassandraCluster.getCassandraConsistenciesConfiguration());
}
@Nested
@@ -298,7 +300,10 @@ class CassandraMessageMapperTest extends MessageMapperTest {
// ignoring expected error
}
- CassandraMessageIdToImapUidDAO imapUidDAO = new CassandraMessageIdToImapUidDAO(cassandra.getConf(), new CassandraMessageId.Factory());
+ CassandraMessageIdToImapUidDAO imapUidDAO = new CassandraMessageIdToImapUidDAO(
+ cassandra.getConf(),
+ cassandraCluster.getCassandraConsistenciesConfiguration(),
+ new CassandraMessageId.Factory());
SoftAssertions.assertSoftly(Throwing.consumer(softly -> {
softly.assertThat(messageMapper.findInMailbox(benwaInboxMailbox, MessageRange.all(), FetchType.Metadata, 1))
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageMoveTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageMoveTest.java
index a768098..f6fb9c1 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageMoveTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageMoveTest.java
@@ -30,6 +30,8 @@ class CassandraMessageMoveTest extends MessageMoveTest {
@Override
protected MapperProvider createMapperProvider() {
- return new CassandraMapperProvider(cassandraCluster.getCassandraCluster());
+ return new CassandraMapperProvider(
+ cassandraCluster.getCassandraCluster(),
+ cassandraCluster.getCassandraConsistenciesConfiguration());
}
}
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageWithAttachmentMapperTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageWithAttachmentMapperTest.java
index 04899ca..157e3ec 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageWithAttachmentMapperTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageWithAttachmentMapperTest.java
@@ -30,6 +30,8 @@ class CassandraMessageWithAttachmentMapperTest extends MessageWithAttachmentMapp
@Override
protected MapperProvider createMapperProvider() {
- return new CassandraMapperProvider(cassandraCluster.getCassandraCluster());
+ return new CassandraMapperProvider(
+ cassandraCluster.getCassandraCluster(),
+ cassandraCluster.getCassandraConsistenciesConfiguration());
}
}
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraModSeqProviderTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraModSeqProviderTest.java
index 3128df7..8773221 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraModSeqProviderTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraModSeqProviderTest.java
@@ -65,7 +65,10 @@ class CassandraModSeqProviderTest {
@BeforeEach
void setUp(CassandraCluster cassandra) {
- modSeqProvider = new CassandraModSeqProvider(cassandra.getConf(), CassandraConfiguration.DEFAULT_CONFIGURATION);
+ modSeqProvider = new CassandraModSeqProvider(
+ cassandra.getConf(),
+ CassandraConfiguration.DEFAULT_CONFIGURATION,
+ cassandraCluster.getCassandraConsistenciesConfiguration());
MailboxPath path = new MailboxPath("gsoc", Username.of("ieugen"), "Trash");
mailbox = new Mailbox(path, UidValidity.of(1234), CASSANDRA_ID);
}
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraUidProviderTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraUidProviderTest.java
index 80c43b0..4901b19 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraUidProviderTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraUidProviderTest.java
@@ -54,7 +54,10 @@ class CassandraUidProviderTest {
@BeforeEach
void setUp(CassandraCluster cassandra) {
- uidProvider = new CassandraUidProvider(cassandra.getConf(), CassandraConfiguration.DEFAULT_CONFIGURATION);
+ uidProvider = new CassandraUidProvider(
+ cassandra.getConf(),
+ CassandraConfiguration.DEFAULT_CONFIGURATION,
+ cassandraCluster.getCassandraConsistenciesConfiguration());
MailboxPath path = new MailboxPath("gsoc", Username.of("ieugen"), "Trash");
mailbox = new Mailbox(path, UidValidity.of(1234), CASSANDRA_ID);
}
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/migration/MailboxPathV2MigrationTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/migration/MailboxPathV2MigrationTest.java
index ee4be70..6ea1b36 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/migration/MailboxPathV2MigrationTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/migration/MailboxPathV2MigrationTest.java
@@ -72,19 +72,28 @@ class MailboxPathV2MigrationTest {
daoV1 = new CassandraMailboxPathDAOImpl(
cassandra.getConf(),
cassandra.getTypesProvider(),
- CassandraUtils.WITH_DEFAULT_CONFIGURATION);
+ CassandraUtils.WITH_DEFAULT_CONFIGURATION,
+ cassandraCluster.getCassandraConsistenciesConfiguration());
daoV2 = new CassandraMailboxPathV2DAO(
cassandra.getConf(),
- CassandraUtils.WITH_DEFAULT_CONFIGURATION);
+ CassandraUtils.WITH_DEFAULT_CONFIGURATION,
+ cassandraCluster.getCassandraConsistenciesConfiguration());
CassandraUserMailboxRightsDAO userMailboxRightsDAO = new CassandraUserMailboxRightsDAO(cassandra.getConf(), CassandraUtils.WITH_DEFAULT_CONFIGURATION);
- mailboxDAO = new CassandraMailboxDAO(cassandra.getConf(), cassandra.getTypesProvider());
+ mailboxDAO = new CassandraMailboxDAO(
+ cassandra.getConf(),
+ cassandra.getTypesProvider(),
+ cassandraCluster.getCassandraConsistenciesConfiguration());
mailboxMapper = new CassandraMailboxMapper(
mailboxDAO,
daoV1,
daoV2,
userMailboxRightsDAO,
- new CassandraACLMapper(cassandra.getConf(), userMailboxRightsDAO, CassandraConfiguration.DEFAULT_CONFIGURATION),
+ new CassandraACLMapper(
+ cassandra.getConf(),
+ userMailboxRightsDAO,
+ CassandraConfiguration.DEFAULT_CONFIGURATION,
+ cassandraCluster.getCassandraConsistenciesConfiguration()),
new CassandraSchemaVersionManager(new CassandraSchemaVersionDAO(cassandra.getConf())));
}
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/task/RecomputeMailboxCountersServiceTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/task/RecomputeMailboxCountersServiceTest.java
index fdf059a..8023f11 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/task/RecomputeMailboxCountersServiceTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/task/RecomputeMailboxCountersServiceTest.java
@@ -87,9 +87,15 @@ class RecomputeMailboxCountersServiceTest {
@BeforeEach
void setUp(CassandraCluster cassandra) {
- mailboxDAO = new CassandraMailboxDAO(cassandra.getConf(), cassandra.getTypesProvider());
+ mailboxDAO = new CassandraMailboxDAO(
+ cassandra.getConf(),
+ cassandra.getTypesProvider(),
+ cassandraCluster.getCassandraConsistenciesConfiguration());
imapUidToMessageIdDAO = new CassandraMessageIdDAO(cassandra.getConf(), MESSAGE_ID_FACTORY);
- messageIdToImapUidDAO = new CassandraMessageIdToImapUidDAO(cassandra.getConf(), MESSAGE_ID_FACTORY);
+ messageIdToImapUidDAO = new CassandraMessageIdToImapUidDAO(
+ cassandra.getConf(),
+ cassandraCluster.getCassandraConsistenciesConfiguration(),
+ MESSAGE_ID_FACTORY);
counterDAO = new CassandraMailboxCounterDAO(cassandra.getConf());
testee = new RecomputeMailboxCountersService(mailboxDAO, imapUidToMessageIdDAO, messageIdToImapUidDAO, counterDAO);
}
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/task/SolveMailboxInconsistenciesServiceTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/task/SolveMailboxInconsistenciesServiceTest.java
index 491dce4..623d4a3 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/task/SolveMailboxInconsistenciesServiceTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/task/SolveMailboxInconsistenciesServiceTest.java
@@ -73,8 +73,14 @@ class SolveMailboxInconsistenciesServiceTest {
@BeforeEach
void setUp(CassandraCluster cassandra) {
- mailboxDAO = new CassandraMailboxDAO(cassandra.getConf(), cassandra.getTypesProvider());
- mailboxPathV2DAO = new CassandraMailboxPathV2DAO(cassandra.getConf(), CassandraUtils.WITH_DEFAULT_CONFIGURATION);
+ mailboxDAO = new CassandraMailboxDAO(
+ cassandra.getConf(),
+ cassandra.getTypesProvider(),
+ cassandraCluster.getCassandraConsistenciesConfiguration());
+ mailboxPathV2DAO = new CassandraMailboxPathV2DAO(
+ cassandra.getConf(),
+ CassandraUtils.WITH_DEFAULT_CONFIGURATION,
+ cassandraCluster.getCassandraConsistenciesConfiguration());
versionDAO = new CassandraSchemaVersionDAO(cassandra.getConf());
testee = new SolveMailboxInconsistenciesService(mailboxDAO, mailboxPathV2DAO, new CassandraSchemaVersionManager(versionDAO));
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/task/SolveMessageInconsistenciesServiceTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/task/SolveMessageInconsistenciesServiceTest.java
index 49ab568..c1fbb05 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/task/SolveMessageInconsistenciesServiceTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/task/SolveMessageInconsistenciesServiceTest.java
@@ -100,7 +100,10 @@ public class SolveMessageInconsistenciesServiceTest {
@BeforeEach
void setUp(CassandraCluster cassandra) {
- imapUidDAO = new CassandraMessageIdToImapUidDAO(cassandra.getConf(), new CassandraMessageId.Factory());
+ imapUidDAO = new CassandraMessageIdToImapUidDAO(
+ cassandra.getConf(),
+ cassandraCluster.getCassandraConsistenciesConfiguration(),
+ new CassandraMessageId.Factory());
messageIdDAO = new CassandraMessageIdDAO(cassandra.getConf(), new CassandraMessageId.Factory());
testee = new SolveMessageInconsistenciesService(imapUidDAO, messageIdDAO);
}
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/utils/GuiceUtils.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/utils/GuiceUtils.java
index 4d010ca..02fc9dc 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/utils/GuiceUtils.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/utils/GuiceUtils.java
@@ -24,6 +24,7 @@ import static com.google.inject.Scopes.SINGLETON;
import org.apache.james.backends.cassandra.CassandraCluster;
import org.apache.james.backends.cassandra.init.CassandraTypesProvider;
import org.apache.james.backends.cassandra.init.configuration.CassandraConfiguration;
+import org.apache.james.backends.cassandra.init.configuration.CassandraConsistenciesConfiguration;
import org.apache.james.blob.api.BlobId;
import org.apache.james.blob.api.BlobStore;
import org.apache.james.blob.api.BucketName;
@@ -74,11 +75,13 @@ public class GuiceUtils {
binder -> binder.bind(BlobId.Factory.class).toInstance(new HashBlobId.Factory()),
binder -> binder.bind(BlobStore.class).to(CassandraBlobStore.class),
binder -> binder.bind(CassandraDumbBlobStore.class).in(SINGLETON),
- binder -> binder.bind(BucketName.class)
- .annotatedWith(Names.named(CassandraDumbBlobStore.DEFAULT_BUCKET))
- .toInstance(BucketName.DEFAULT),
+ binder -> binder.bind(BucketName.class)
+ .annotatedWith(Names.named(CassandraDumbBlobStore.DEFAULT_BUCKET))
+ .toInstance(BucketName.DEFAULT),
binder -> binder.bind(Session.class).toInstance(session),
binder -> binder.bind(CassandraTypesProvider.class).toInstance(typesProvider),
- binder -> binder.bind(CassandraConfiguration.class).toInstance(configuration));
+ binder -> binder.bind(CassandraConfiguration.class).toInstance(configuration),
+ binder -> binder.bind(CassandraConsistenciesConfiguration.class)
+ .toInstance(CassandraConsistenciesConfiguration.fromConfiguration(configuration)));
}
}
diff --git a/server/data/data-cassandra/src/test/java/org/apache/james/dlp/eventsourcing/cassandra/CassandraEventSourcingDLPConfigurationStoreExtension.java b/server/data/data-cassandra/src/test/java/org/apache/james/dlp/eventsourcing/cassandra/CassandraEventSourcingDLPConfigurationStoreExtension.java
index c128d12..a2bb62c 100644
--- a/server/data/data-cassandra/src/test/java/org/apache/james/dlp/eventsourcing/cassandra/CassandraEventSourcingDLPConfigurationStoreExtension.java
+++ b/server/data/data-cassandra/src/test/java/org/apache/james/dlp/eventsourcing/cassandra/CassandraEventSourcingDLPConfigurationStoreExtension.java
@@ -70,7 +70,8 @@ public class CassandraEventSourcingDLPConfigurationStoreExtension implements Bef
EventStoreDao eventStoreDao = new EventStoreDao(
cassandraExtension.getCassandraCluster().getConf(),
- jsonEventSerializer);
+ jsonEventSerializer,
+ cassandraExtension.getCassandraConsistenciesConfiguration());
return new EventSourcingDLPConfigurationStore(new CassandraEventStore(eventStoreDao));
}
diff --git a/server/queue/queue-rabbitmq/src/test/java/org/apache/james/queue/rabbitmq/RabbitMQMailQueueConfigurationChangeTest.java b/server/queue/queue-rabbitmq/src/test/java/org/apache/james/queue/rabbitmq/RabbitMQMailQueueConfigurationChangeTest.java
index f79622e..74bc055 100644
--- a/server/queue/queue-rabbitmq/src/test/java/org/apache/james/queue/rabbitmq/RabbitMQMailQueueConfigurationChangeTest.java
+++ b/server/queue/queue-rabbitmq/src/test/java/org/apache/james/queue/rabbitmq/RabbitMQMailQueueConfigurationChangeTest.java
@@ -107,6 +107,7 @@ class RabbitMQMailQueueConfigurationChangeTest {
private RabbitMQMailQueue getRabbitMQMailQueue(CassandraCluster cassandra, CassandraMailQueueViewConfiguration mailQueueViewConfiguration) throws Exception {
CassandraMailQueueView.Factory mailQueueViewFactory = CassandraMailQueueViewTestFactory.factory(clock,
cassandra.getConf(),
+ cassandraCluster.getCassandraConsistenciesConfiguration(),
mailQueueViewConfiguration,
mimeMessageStoreFactory);
diff --git a/server/queue/queue-rabbitmq/src/test/java/org/apache/james/queue/rabbitmq/RabbitMQMailQueueTest.java b/server/queue/queue-rabbitmq/src/test/java/org/apache/james/queue/rabbitmq/RabbitMQMailQueueTest.java
index 1b7e610..4228122 100644
--- a/server/queue/queue-rabbitmq/src/test/java/org/apache/james/queue/rabbitmq/RabbitMQMailQueueTest.java
+++ b/server/queue/queue-rabbitmq/src/test/java/org/apache/james/queue/rabbitmq/RabbitMQMailQueueTest.java
@@ -24,7 +24,6 @@ import static org.apache.james.queue.api.Mails.defaultMail;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatCode;
import static org.awaitility.Awaitility.await;
-import static org.awaitility.Duration.FIVE_SECONDS;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.verify;
@@ -109,7 +108,8 @@ class RabbitMQMailQueueTest {
@Nested
class MailQueueSizeMetricsEnabled implements ManageableMailQueueContract, MailQueueMetricContract {
@BeforeEach
- void setup(CassandraCluster cassandra, MailQueueMetricExtension.MailQueueMetricTestSystem metricTestSystem) throws Exception {
+ void setup(CassandraCluster cassandra,
+ MailQueueMetricExtension.MailQueueMetricTestSystem metricTestSystem) throws Exception {
setUp(cassandra,
metricTestSystem,
RabbitMQMailQueueConfiguration.builder()
@@ -309,8 +309,8 @@ class RabbitMQMailQueueTest {
setUp(cassandra,
metricTestSystem,
RabbitMQMailQueueConfiguration.builder()
- .sizeMetricsEnabled(false)
- .build());
+ .sizeMetricsEnabled(false)
+ .build());
}
@Test
@@ -320,17 +320,22 @@ class RabbitMQMailQueueTest {
}
}
- private void setUp(CassandraCluster cassandra, MailQueueMetricExtension.MailQueueMetricTestSystem metricTestSystem, RabbitMQMailQueueConfiguration configuration) throws Exception {
+ private void setUp(CassandraCluster cassandra,
+ MailQueueMetricExtension.MailQueueMetricTestSystem metricTestSystem,
+ RabbitMQMailQueueConfiguration configuration) throws Exception {
CassandraBlobStore blobStore = CassandraBlobStore.forTesting(cassandra.getConf());
MimeMessageStore.Factory mimeMessageStoreFactory = MimeMessageStore.factory(blobStore);
clock = new UpdatableTickingClock(IN_SLICE_1);
- MailQueueView.Factory mailQueueViewFactory = CassandraMailQueueViewTestFactory.factory(clock, cassandra.getConf(),
- CassandraMailQueueViewConfiguration.builder()
- .bucketCount(THREE_BUCKET_COUNT)
- .updateBrowseStartPace(UPDATE_BROWSE_START_PACE)
- .sliceWindow(ONE_HOUR_SLICE_WINDOW)
- .build(),
+ MailQueueView.Factory mailQueueViewFactory = CassandraMailQueueViewTestFactory.factory(
+ clock,
+ cassandra.getConf(),
+ cassandraCluster.getCassandraConsistenciesConfiguration(),
+ CassandraMailQueueViewConfiguration.builder()
+ .bucketCount(THREE_BUCKET_COUNT)
+ .updateBrowseStartPace(UPDATE_BROWSE_START_PACE)
+ .sliceWindow(ONE_HOUR_SLICE_WINDOW)
+ .build(),
mimeMessageStoreFactory);
RabbitMQMailQueueFactory.PrivateFactory factory = new RabbitMQMailQueueFactory.PrivateFactory(
diff --git a/server/queue/queue-rabbitmq/src/test/java/org/apache/james/queue/rabbitmq/view/cassandra/CassandraMailQueueViewTestFactory.java b/server/queue/queue-rabbitmq/src/test/java/org/apache/james/queue/rabbitmq/view/cassandra/CassandraMailQueueViewTestFactory.java
index 71b1e99..d7e9f04 100644
--- a/server/queue/queue-rabbitmq/src/test/java/org/apache/james/queue/rabbitmq/view/cassandra/CassandraMailQueueViewTestFactory.java
+++ b/server/queue/queue-rabbitmq/src/test/java/org/apache/james/queue/rabbitmq/view/cassandra/CassandraMailQueueViewTestFactory.java
@@ -22,11 +22,15 @@ package org.apache.james.queue.rabbitmq.view.cassandra;
import java.time.Clock;
import java.util.Optional;
+import org.apache.james.backends.cassandra.init.configuration.CassandraConsistenciesConfiguration;
import org.apache.james.blob.api.HashBlobId;
import org.apache.james.blob.mail.MimeMessageStore;
+import org.apache.james.eventsourcing.Event;
import org.apache.james.eventsourcing.eventstore.cassandra.CassandraEventStore;
import org.apache.james.eventsourcing.eventstore.cassandra.EventStoreDao;
import org.apache.james.eventsourcing.eventstore.cassandra.JsonEventSerializer;
+import org.apache.james.eventsourcing.eventstore.cassandra.dto.EventDTO;
+import org.apache.james.eventsourcing.eventstore.cassandra.dto.EventDTOModule;
import org.apache.james.queue.rabbitmq.MailQueueName;
import org.apache.james.queue.rabbitmq.view.cassandra.configuration.CassandraMailQueueViewConfiguration;
import org.apache.james.queue.rabbitmq.view.cassandra.configuration.CassandraMailQueueViewConfigurationModule;
@@ -38,6 +42,7 @@ import reactor.core.publisher.Mono;
public class CassandraMailQueueViewTestFactory {
public static CassandraMailQueueView.Factory factory(Clock clock, Session session,
+ CassandraConsistenciesConfiguration cassandraConsistenciesConfiguration,
CassandraMailQueueViewConfiguration configuration,
MimeMessageStore.Factory mimeMessageStoreFactory) {
HashBlobId.Factory blobIdFactory = new HashBlobId.Factory();
@@ -51,8 +56,11 @@ public class CassandraMailQueueViewTestFactory {
CassandraMailQueueMailDelete cassandraMailQueueMailDelete = new CassandraMailQueueMailDelete(deletedMailsDao, browseStartDao, cassandraMailQueueBrowser, configuration);
- EventsourcingConfigurationManagement eventsourcingConfigurationManagement = new EventsourcingConfigurationManagement(new CassandraEventStore(new EventStoreDao(session,
- JsonEventSerializer.forModules(CassandraMailQueueViewConfigurationModule.MAIL_QUEUE_VIEW_CONFIGURATION).withoutNestedType())));
+ EventStoreDao eventStoreDao = new EventStoreDao(
+ session,
+ JsonEventSerializer.forModules(CassandraMailQueueViewConfigurationModule.MAIL_QUEUE_VIEW_CONFIGURATION).withoutNestedType(),
+ cassandraConsistenciesConfiguration);
+ EventsourcingConfigurationManagement eventsourcingConfigurationManagement = new EventsourcingConfigurationManagement(new CassandraEventStore(eventStoreDao));
return new CassandraMailQueueView.Factory(
cassandraMailQueueMailStore,
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org