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:30 UTC

[james-project] branch master updated (5bfcbe0 -> 6fc0a85)

This is an automated email from the ASF dual-hosted git repository.

btellier pushed a change to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git.


    from 5bfcbe0  JAMES-3170 CassandraBlobStoreCache should not propagate failures
     new c080e57  JAMES-3284 Guice servers: WARN level for non JAMES logs
     new f61d6ab  JAMES-3253 Remove Log warning for remoteDelivery configuration in defaultMailetContainer.xml for JPA Guice
     new 7e391b1  JAMES-3276 Do not auto-start TemporaryJamesServer in order to be able to shutdown it properly when partially started
     new 8343d3a  JAMES-3276 TemporaryJamesServer mutable static builders are replaced by methods
     new bc6aecc  JAMES-3264: MAILBOX details are read 3 times upon indexing
     new e88a52e  JAMES-3224 Introduce CassandraConsistenciesConfiguration
     new b3e77c6  JAMES-3224 Parameterize ConsistencyLevel.{QUORUM, SERIAL}
     new 79823d4  JAMES-3214 Move TestingMailRepositoryLoader out of test package
     new 6fc0a85  JAMES-3214 Move MailRepositoryStore related classes to mailRepository-api

The 9 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../init/configuration/CassandraConfiguration.java |  79 +++++++-
 .../CassandraConsistenciesConfiguration.java       |  90 +++++++++
 .../cassandra/CassandraClusterExtension.java       |  11 ++
 .../init/CassandraConfigurationReadingTest.java    |   2 +
 .../cassandra/init/CassandraConfigurationTest.java |  20 ++
 .../CassandraConsistenciesConfigurationTest.java   |  84 ++++++++
 .../configuration-reader-test/cassandra.properties |   2 +
 .../package/etc/james/templates/logback.xml        |   3 +-
 .../etc/james/templates/mailetcontainer.xml        |   2 +-
 .../destination/conf/cassandra.properties          |   7 +
 .../cassandra-ldap/destination/conf/logback.xml    |   4 +-
 .../destination/conf/cassandra.properties          |   7 +
 .../destination/conf/logback.xml                   |   4 +-
 .../destination/conf/cassandra.properties          |   7 +
 .../destination/conf/logback.xml                   |   4 +-
 .../destination/conf/cassandra.properties          |   7 +
 .../guice/cassandra/destination/conf/logback.xml   |   3 +-
 .../guice/jpa-smtp/destination/conf/logback.xml    |   5 +-
 .../run/guice/jpa/destination/conf/logback.xml     |   5 +-
 .../run/guice/memory/destination/conf/logback.xml  |   4 +-
 .../eventstore/cassandra/EventStoreDao.scala       |  11 +-
 .../cassandra/CassandraEventStoreExtension.scala   |   2 +-
 .../src/main/resources/mailetcontainer.xml         |   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 +-
 .../ElasticSearchListeningMessageSearchIndex.java  |  30 +--
 ...asticSearchListeningMessageSearchIndexTest.java |  24 +--
 .../lucene/search/LuceneMessageSearchIndex.java    |  19 +-
 .../LuceneMailboxMessageSearchIndexTest.java       |   8 +-
 mailbox/plugin/quota-search-scanning/pom.xml       |   4 +
 .../store/search/LazyMessageSearchIndex.java       |   8 +-
 .../store/search/ListeningMessageSearchIndex.java  |  16 +-
 .../mailbox/tools/indexer/ReIndexerPerformer.java  |   2 +-
 .../apache/james/managesieve/jsieve/Parser.java    |  22 +--
 .../modules/mailbox/CassandraSessionModule.java    |   8 +
 .../src/main/resources/defaultMailetContainer.xml  |   2 +-
 .../src/main/resources/defaultMailetContainer.xml  |   2 +-
 .../sample-configuration/mailetcontainer.xml       |   2 +-
 .../memory-guice/sample-configuration/logback.xml  |   3 +-
 .../org/apache/james/FakeMessageSearchIndex.java   |   4 +-
 .../main/resources/defaultJmapMailetContainer.xml  |   2 +-
 server/container/spring/pom.xml                    |   4 +
 .../resources/META-INF/spring/loaders-context.xml  |   6 +-
 server/data/data-api/pom.xml                       |  15 +-
 ...ventSourcingDLPConfigurationStoreExtension.java |   3 +-
 server/data/data-file/pom.xml                      |   4 +
 .../mailrepository/file/FileMailRepository.java    |   2 +-
 server/data/data-jdbc/pom.xml                      |   4 +
 .../mailrepository/jdbc/JDBCMailRepository.java    |   2 +-
 server/data/data-jpa/pom.xml                       |  10 +
 .../jpa/JPAMailRepositoryUrlStoreTest.java         |   2 +-
 server/data/data-memory/pom.xml                    |   5 -
 .../james/mailets/AddDeliveredToHeaderTest.java    |   1 +
 .../james/mailets/BounceIntegrationTest.java       |   3 +-
 .../mailets/CommonMailetConfigurationTest.java     |   1 +
 .../apache/james/mailets/DKIMIntegrationTest.java  |   3 +-
 ...ectResolutionRemoteDeliveryIntegrationTest.java |  15 +-
 .../GatewayRemoteDeliveryIntegrationTest.java      |  11 +-
 .../org/apache/james/mailets/MailetErrorsTest.java |  23 +++
 .../mailets/NetworkMatcherIntegrationTest.java     |   3 +-
 .../RecipientRewriteTableIntegrationTest.java      |   1 +
 .../mailets/RemoteDeliveryDKIMIntegrationTest.java |   9 +-
 .../james/mailets/RemoteDeliveryErrorTest.java     |   1 +
 .../mailets/SenderIsLocalIntegrationTest.java      |   3 +-
 .../org/apache/james/mailets/SieveDelivery.java    |   1 +
 .../mailets/SizeGreaterThanIntegrationTest.java    |   3 +-
 .../james/mailets/SmtpAuthIntegrationTest.java     |   3 +-
 .../apache/james/mailets/TemporaryJamesServer.java |  24 ++-
 .../crypto/SMIMEDecryptIntegrationTest.java        |   1 +
 .../mailets/crypto/SMIMESignIntegrationTest.java   |   1 +
 .../james/smtp/SmtpAuthorizedAddressesTest.java    |   3 +-
 .../james/smtp/SmtpBracketEnforcementTest.java     |   1 +
 .../org/apache/james/smtp/SmtpContentTypeTest.java |   3 +-
 .../james/smtp/SmtpIdentityVerificationTest.java   |   1 +
 .../org/apache/james/smtp/SmtpNullSenderTest.java  |   1 +
 .../apache/james/smtp/SmtpRandomStoringTest.java   |   3 +-
 .../apache/james/smtp/SmtpSizeLimitationTest.java  |   1 +
 .../james/smtp/extensions/SMTPHeloHooksTest.java   |   3 +-
 .../james/transport/mailets/AddFooterTest.java     |   3 +-
 .../james/transport/mailets/AliasMappingTest.java  |   3 +-
 .../mailets/AmqpForwardAttachmentTest.java         |   3 +-
 .../transport/mailets/ContactExtractorTest.java    |   3 +-
 .../transport/mailets/DlpIntegrationTest.java      |   3 +-
 .../james/transport/mailets/DomainMappingTest.java |   3 +-
 .../transport/mailets/GroupMappingRelayTest.java   |   3 +-
 .../james/transport/mailets/GroupMappingTest.java  |   3 +-
 .../mailets/ICSAttachmentWorkflowTest.java         |   3 +-
 .../transport/mailets/IsOverQuotaMatcherTest.java  |   3 +-
 .../mailets/MailReprocessingIntegrationTest.java   |   3 +-
 .../james/transport/mailets/SpamAssassinTest.java  |   3 +-
 .../transport/mailets/StripAttachmentTest.java     |   3 +-
 .../james/transport/mailets/ToRepositoryTest.java  |   3 +-
 .../mailets/ToSenderDomainRepositoryTest.java      |  13 +-
 .../src/main/resources/mailetcontainer.xml         |   2 +-
 server/mailet/mailetcontainer-camel/pom.xml        |   4 +
 server/mailet/mailets/pom.xml                      |  10 +-
 .../mailets/ToSenderDomainRepositoryTest.java      |   4 +-
 server/mailrepository/mailrepository-api/pom.xml   |   1 +
 .../james/mailrepository}/api/Initializable.java   |   2 +-
 .../mailrepository/api/MailRepositoryStore.java    | 214 ++++++++++-----------
 .../mailrepository/api/MailRepositoryUrlStore.java |   0
 .../MailRepositoryUrlStoreContract.java            |   4 +-
 .../CassandraMailRepositoryUrlModule.java          |   0
 .../cassandra/CassandraMailRepositoryUrlStore.java |   0
 .../james/mailrepository/cassandra/UrlsDao.java    |   0
 .../james/mailrepository/cassandra/UrlsTable.java  |   0
 .../CassandraMailRepositoryUrlStoreExtension.java  |   0
 .../CassandraMailRepositoryUrlStoreTest.java       |   2 +-
 .../mailrepository/mailrepository-memory/pom.xml   |  23 +++
 .../memory/MailRepositoryLoader.java               |   0
 .../memory/MailRepositoryStoreConfiguration.java   |   0
 .../memory/MemoryMailRepositoryStore.java          |   2 +-
 .../memory/MemoryMailRepositoryUrlStore.java       |   0
 .../memory/SimpleMailRepositoryLoader.java}        |   2 +-
 .../MailRepositoryStoreConfigurationTest.java      |   0
 .../memory/MemoryMailRepositoryStoreTest.java      |   4 +-
 .../MemoryMailRepositoryUrlStoreExtension.java     |   0
 .../memory/MemoryMailRepositoryUrlStoreTest.java   |   2 +-
 .../src/test/resources/mailrepositorystore.xml     |   0
 server/protocols/protocols-smtp/pom.xml            |   6 -
 .../apache/james/smtpserver/SMTPServerTest.java    |   4 +-
 .../james/webadmin/routes/MailboxesRoutesTest.java |   8 +-
 .../webadmin/routes/UserMailboxesRoutesTest.java   |   4 +-
 .../webadmin/webadmin-mailrepository/pom.xml       |   6 -
 .../routes/MailRepositoriesRoutesTest.java         |   4 +-
 .../webadmin/service/ReprocessingServiceTest.java  |   4 +-
 .../RabbitMQMailQueueConfigurationChangeTest.java  |   1 +
 .../queue/rabbitmq/RabbitMQMailQueueTest.java      |  27 +--
 .../CassandraMailQueueViewTestFactory.java         |  12 +-
 src/site/xdoc/server/config-cassandra.xml          |   6 +
 158 files changed, 982 insertions(+), 405 deletions(-)
 create mode 100644 backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/init/configuration/CassandraConsistenciesConfiguration.java
 create mode 100644 backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/init/configuration/CassandraConsistenciesConfigurationTest.java
 rename server/{data/data-library/src/main/java/org/apache/james/repository => mailrepository/mailrepository-api/src/main/java/org/apache/james/mailrepository}/api/Initializable.java (96%)
 rename server/{data/data-api => mailrepository/mailrepository-api}/src/main/java/org/apache/james/mailrepository/api/MailRepositoryStore.java (97%)
 rename server/{data/data-api => mailrepository/mailrepository-api}/src/main/java/org/apache/james/mailrepository/api/MailRepositoryUrlStore.java (100%)
 rename server/{data/data-api/src/test/java/org/apache/james/mailrepository/api => mailrepository/mailrepository-api/src/test/java/org/apache/james/mailrepository}/MailRepositoryUrlStoreContract.java (95%)
 rename server/{data/data-cassandra => mailrepository/mailrepository-cassandra}/src/main/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryUrlModule.java (100%)
 rename server/{data/data-cassandra => mailrepository/mailrepository-cassandra}/src/main/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryUrlStore.java (100%)
 rename server/{data/data-cassandra => mailrepository/mailrepository-cassandra}/src/main/java/org/apache/james/mailrepository/cassandra/UrlsDao.java (100%)
 rename server/{data/data-cassandra => mailrepository/mailrepository-cassandra}/src/main/java/org/apache/james/mailrepository/cassandra/UrlsTable.java (100%)
 rename server/{data/data-cassandra => mailrepository/mailrepository-cassandra}/src/test/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryUrlStoreExtension.java (100%)
 rename server/{data/data-cassandra => mailrepository/mailrepository-cassandra}/src/test/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryUrlStoreTest.java (95%)
 rename server/{data/data-memory => mailrepository/mailrepository-memory}/src/main/java/org/apache/james/mailrepository/memory/MailRepositoryLoader.java (100%)
 rename server/{data/data-memory => mailrepository/mailrepository-memory}/src/main/java/org/apache/james/mailrepository/memory/MailRepositoryStoreConfiguration.java (100%)
 rename server/{data/data-memory => mailrepository/mailrepository-memory}/src/main/java/org/apache/james/mailrepository/memory/MemoryMailRepositoryStore.java (99%)
 rename server/{data/data-memory => mailrepository/mailrepository-memory}/src/main/java/org/apache/james/mailrepository/memory/MemoryMailRepositoryUrlStore.java (100%)
 rename server/{data/data-memory/src/test/java/org/apache/james/mailrepository/memory/TestingMailRepositoryLoader.java => mailrepository/mailrepository-memory/src/main/java/org/apache/james/mailrepository/memory/SimpleMailRepositoryLoader.java} (96%)
 rename server/{data/data-memory => mailrepository/mailrepository-memory}/src/test/java/org/apache/james/mailrepository/memory/MailRepositoryStoreConfigurationTest.java (100%)
 rename server/{data/data-memory => mailrepository/mailrepository-memory}/src/test/java/org/apache/james/mailrepository/memory/MemoryMailRepositoryStoreTest.java (99%)
 rename server/{data/data-memory => mailrepository/mailrepository-memory}/src/test/java/org/apache/james/mailrepository/memory/MemoryMailRepositoryUrlStoreExtension.java (100%)
 rename server/{data/data-memory => mailrepository/mailrepository-memory}/src/test/java/org/apache/james/mailrepository/memory/MemoryMailRepositoryUrlStoreTest.java (95%)
 rename server/{data/data-memory => mailrepository/mailrepository-memory}/src/test/resources/mailrepositorystore.xml (100%)


---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org


[james-project] 07/09: JAMES-3224 Parameterize ConsistencyLevel.{QUORUM, SERIAL}

Posted by bt...@apache.org.
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


[james-project] 01/09: JAMES-3284 Guice servers: WARN level for non JAMES logs

Posted by bt...@apache.org.
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 c080e5707e99ee61ca316602b52d94615c8b31a8
Author: Benoit Tellier <bt...@linagora.com>
AuthorDate: Fri Jun 26 17:36:57 2020 +0700

    JAMES-3284 Guice servers: WARN level for non JAMES logs
---
 .../guice/cassandra/package/etc/james/templates/logback.xml          | 3 ++-
 dockerfiles/run/guice/cassandra-ldap/destination/conf/logback.xml    | 4 +++-
 .../run/guice/cassandra-rabbitmq-ldap/destination/conf/logback.xml   | 4 +++-
 .../run/guice/cassandra-rabbitmq/destination/conf/logback.xml        | 4 +++-
 dockerfiles/run/guice/cassandra/destination/conf/logback.xml         | 3 ++-
 dockerfiles/run/guice/jpa-smtp/destination/conf/logback.xml          | 5 ++++-
 dockerfiles/run/guice/jpa/destination/conf/logback.xml               | 5 +++--
 dockerfiles/run/guice/memory/destination/conf/logback.xml            | 4 +++-
 server/container/guice/memory-guice/sample-configuration/logback.xml | 3 ++-
 9 files changed, 25 insertions(+), 10 deletions(-)

diff --git a/dockerfiles/packaging/guice/cassandra/package/etc/james/templates/logback.xml b/dockerfiles/packaging/guice/cassandra/package/etc/james/templates/logback.xml
index 94a639f..09bcf1e 100644
--- a/dockerfiles/packaging/guice/cassandra/package/etc/james/templates/logback.xml
+++ b/dockerfiles/packaging/guice/cassandra/package/etc/james/templates/logback.xml
@@ -20,11 +20,12 @@
                 </encoder>
         </appender>
 
-        <root level="INFO">
+        <root level="WARN">
                 <appender-ref ref="CONSOLE" />
                 <appender-ref ref="LOG_FILE" />
         </root>
 
+        <logger name="org.apache.james" level="INFO" />
         <logger name="com.datastax.driver.core.QueryLogger.SLOW" level="DEBUG" />
 
 </configuration>
diff --git a/dockerfiles/run/guice/cassandra-ldap/destination/conf/logback.xml b/dockerfiles/run/guice/cassandra-ldap/destination/conf/logback.xml
index 08294af..6f38617 100644
--- a/dockerfiles/run/guice/cassandra-ldap/destination/conf/logback.xml
+++ b/dockerfiles/run/guice/cassandra-ldap/destination/conf/logback.xml
@@ -30,11 +30,13 @@
                 </encoder>
         </appender>
 
-        <root level="INFO">
+        <root level="WARN">
                 <appender-ref ref="CONSOLE" />
                 <appender-ref ref="LOG_FILE" />
         </root>
 
+        <logger name="org.apache.james" level="INFO" />
         <logger name="com.datastax.driver.core.QueryLogger.SLOW" level="DEBUG" />
 
+
 </configuration>
diff --git a/dockerfiles/run/guice/cassandra-rabbitmq-ldap/destination/conf/logback.xml b/dockerfiles/run/guice/cassandra-rabbitmq-ldap/destination/conf/logback.xml
index 08294af..6f38617 100644
--- a/dockerfiles/run/guice/cassandra-rabbitmq-ldap/destination/conf/logback.xml
+++ b/dockerfiles/run/guice/cassandra-rabbitmq-ldap/destination/conf/logback.xml
@@ -30,11 +30,13 @@
                 </encoder>
         </appender>
 
-        <root level="INFO">
+        <root level="WARN">
                 <appender-ref ref="CONSOLE" />
                 <appender-ref ref="LOG_FILE" />
         </root>
 
+        <logger name="org.apache.james" level="INFO" />
         <logger name="com.datastax.driver.core.QueryLogger.SLOW" level="DEBUG" />
 
+
 </configuration>
diff --git a/dockerfiles/run/guice/cassandra-rabbitmq/destination/conf/logback.xml b/dockerfiles/run/guice/cassandra-rabbitmq/destination/conf/logback.xml
index 08294af..6f38617 100644
--- a/dockerfiles/run/guice/cassandra-rabbitmq/destination/conf/logback.xml
+++ b/dockerfiles/run/guice/cassandra-rabbitmq/destination/conf/logback.xml
@@ -30,11 +30,13 @@
                 </encoder>
         </appender>
 
-        <root level="INFO">
+        <root level="WARN">
                 <appender-ref ref="CONSOLE" />
                 <appender-ref ref="LOG_FILE" />
         </root>
 
+        <logger name="org.apache.james" level="INFO" />
         <logger name="com.datastax.driver.core.QueryLogger.SLOW" level="DEBUG" />
 
+
 </configuration>
diff --git a/dockerfiles/run/guice/cassandra/destination/conf/logback.xml b/dockerfiles/run/guice/cassandra/destination/conf/logback.xml
index 08294af..e0182f2 100644
--- a/dockerfiles/run/guice/cassandra/destination/conf/logback.xml
+++ b/dockerfiles/run/guice/cassandra/destination/conf/logback.xml
@@ -30,11 +30,12 @@
                 </encoder>
         </appender>
 
-        <root level="INFO">
+        <root level="WARN">
                 <appender-ref ref="CONSOLE" />
                 <appender-ref ref="LOG_FILE" />
         </root>
 
+        <logger name="org.apache.james" level="INFO" />
         <logger name="com.datastax.driver.core.QueryLogger.SLOW" level="DEBUG" />
 
 </configuration>
diff --git a/dockerfiles/run/guice/jpa-smtp/destination/conf/logback.xml b/dockerfiles/run/guice/jpa-smtp/destination/conf/logback.xml
index efee35e..e0182f2 100644
--- a/dockerfiles/run/guice/jpa-smtp/destination/conf/logback.xml
+++ b/dockerfiles/run/guice/jpa-smtp/destination/conf/logback.xml
@@ -30,9 +30,12 @@
                 </encoder>
         </appender>
 
-        <root level="INFO">
+        <root level="WARN">
                 <appender-ref ref="CONSOLE" />
                 <appender-ref ref="LOG_FILE" />
         </root>
 
+        <logger name="org.apache.james" level="INFO" />
+        <logger name="com.datastax.driver.core.QueryLogger.SLOW" level="DEBUG" />
+
 </configuration>
diff --git a/dockerfiles/run/guice/jpa/destination/conf/logback.xml b/dockerfiles/run/guice/jpa/destination/conf/logback.xml
index efee35e..85c2610 100644
--- a/dockerfiles/run/guice/jpa/destination/conf/logback.xml
+++ b/dockerfiles/run/guice/jpa/destination/conf/logback.xml
@@ -29,10 +29,11 @@
                         <immediateFlush>false</immediateFlush>
                 </encoder>
         </appender>
-
-        <root level="INFO">
+        <root level="WARN">
                 <appender-ref ref="CONSOLE" />
                 <appender-ref ref="LOG_FILE" />
         </root>
 
+        <logger name="org.apache.james" level="INFO" />
+
 </configuration>
diff --git a/dockerfiles/run/guice/memory/destination/conf/logback.xml b/dockerfiles/run/guice/memory/destination/conf/logback.xml
index f7c8903..65d59de 100644
--- a/dockerfiles/run/guice/memory/destination/conf/logback.xml
+++ b/dockerfiles/run/guice/memory/destination/conf/logback.xml
@@ -49,9 +49,11 @@
                 </encoder>
         </appender>
 
-        <root level="INFO">
+        <root level="WARN">
                 <appender-ref ref="CONSOLE" />
                 <appender-ref ref="LOG_FILE" />
         </root>
 
+        <logger name="org.apache.james" level="INFO" />
+
 </configuration>
diff --git a/server/container/guice/memory-guice/sample-configuration/logback.xml b/server/container/guice/memory-guice/sample-configuration/logback.xml
index 3deaa5a..677451f 100644
--- a/server/container/guice/memory-guice/sample-configuration/logback.xml
+++ b/server/container/guice/memory-guice/sample-configuration/logback.xml
@@ -8,8 +8,9 @@
                 </encoder>
         </appender>
 
-        <root level="INFO">
+        <root level="WARN">
                 <appender-ref ref="CONSOLE" />
         </root>
 
+        <logger name="org.apache.james" level="INFO" />
 </configuration>


---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org


[james-project] 04/09: JAMES-3276 TemporaryJamesServer mutable static builders are replaced by methods

Posted by bt...@apache.org.
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 8343d3a05f4c1933f552aa642ba7109b6bc6f658
Author: Gautier DI FOLCO <gd...@linagora.com>
AuthorDate: Wed Jun 24 11:32:17 2020 +0200

    JAMES-3276 TemporaryJamesServer mutable static builders are replaced by methods
---
 .../james/mailets/BounceIntegrationTest.java       |  2 +-
 .../apache/james/mailets/DKIMIntegrationTest.java  |  2 +-
 ...ectResolutionRemoteDeliveryIntegrationTest.java | 10 +++++-----
 .../GatewayRemoteDeliveryIntegrationTest.java      |  4 ++--
 .../mailets/NetworkMatcherIntegrationTest.java     |  2 +-
 .../mailets/RemoteDeliveryDKIMIntegrationTest.java |  6 +++---
 .../mailets/SenderIsLocalIntegrationTest.java      |  2 +-
 .../mailets/SizeGreaterThanIntegrationTest.java    |  2 +-
 .../james/mailets/SmtpAuthIntegrationTest.java     |  2 +-
 .../apache/james/mailets/TemporaryJamesServer.java | 22 +++++++++++++---------
 .../james/smtp/SmtpAuthorizedAddressesTest.java    |  2 +-
 .../org/apache/james/smtp/SmtpContentTypeTest.java |  2 +-
 .../apache/james/smtp/SmtpRandomStoringTest.java   |  2 +-
 .../james/smtp/extensions/SMTPHeloHooksTest.java   |  2 +-
 .../james/transport/mailets/AddFooterTest.java     |  2 +-
 .../james/transport/mailets/AliasMappingTest.java  |  2 +-
 .../mailets/AmqpForwardAttachmentTest.java         |  2 +-
 .../transport/mailets/ContactExtractorTest.java    |  2 +-
 .../transport/mailets/DlpIntegrationTest.java      |  2 +-
 .../james/transport/mailets/DomainMappingTest.java |  2 +-
 .../transport/mailets/GroupMappingRelayTest.java   |  2 +-
 .../james/transport/mailets/GroupMappingTest.java  |  2 +-
 .../mailets/ICSAttachmentWorkflowTest.java         |  2 +-
 .../transport/mailets/IsOverQuotaMatcherTest.java  |  2 +-
 .../mailets/MailReprocessingIntegrationTest.java   |  2 +-
 .../james/transport/mailets/SpamAssassinTest.java  |  2 +-
 .../transport/mailets/StripAttachmentTest.java     |  2 +-
 .../james/transport/mailets/ToRepositoryTest.java  |  2 +-
 .../mailets/ToSenderDomainRepositoryTest.java      | 12 ++++++------
 29 files changed, 53 insertions(+), 49 deletions(-)

diff --git a/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/BounceIntegrationTest.java b/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/BounceIntegrationTest.java
index 2243401..254247c 100644
--- a/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/BounceIntegrationTest.java
+++ b/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/BounceIntegrationTest.java
@@ -236,7 +236,7 @@ public class BounceIntegrationTest {
     }
 
     private MailetContainer.Builder generateMailetContainerConfiguration(MailetConfiguration.Builder redirectionMailetConfiguration) {
-        return TemporaryJamesServer.DEFAULT_MAILET_CONTAINER_CONFIGURATION
+        return TemporaryJamesServer.defaultMailetContainerConfiguration()
             .postmaster(POSTMASTER)
             .putProcessor(transport())
             .putProcessor(bounces(redirectionMailetConfiguration));
diff --git a/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/DKIMIntegrationTest.java b/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/DKIMIntegrationTest.java
index 09601aa..25715b7 100644
--- a/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/DKIMIntegrationTest.java
+++ b/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/DKIMIntegrationTest.java
@@ -113,7 +113,7 @@ public class DKIMIntegrationTest {
     public void setup() throws Exception {
         dkimAuthResults = new ArrayList<>();
         ExtractAttributeStub.setDkimAuthResultInspector(value -> dkimAuthResults.add(value.map(result -> (String) result)));
-        MailetContainer.Builder mailetContainer = TemporaryJamesServer.SIMPLE_MAILET_CONTAINER_CONFIGURATION
+        MailetContainer.Builder mailetContainer = TemporaryJamesServer.simpleMailetContainerConfiguration()
             .putProcessor(ProcessorConfiguration.transport()
                 .addMailet(DKIMSIGN_MAILET)
                 .addMailet(DKIMVERIFY_MAILET)
diff --git a/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/DirectResolutionRemoteDeliveryIntegrationTest.java b/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/DirectResolutionRemoteDeliveryIntegrationTest.java
index 20477b2..87c0e9d 100644
--- a/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/DirectResolutionRemoteDeliveryIntegrationTest.java
+++ b/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/DirectResolutionRemoteDeliveryIntegrationTest.java
@@ -97,7 +97,7 @@ public class DirectResolutionRemoteDeliveryIntegrationTest {
         jamesServer = TemporaryJamesServer.builder()
             .withBase(SMTP_ONLY_MODULE)
             .withOverrides(binder -> binder.bind(DNSService.class).toInstance(inMemoryDNSService))
-            .withMailetContainer(TemporaryJamesServer.SIMPLE_MAILET_CONTAINER_CONFIGURATION
+            .withMailetContainer(TemporaryJamesServer.simpleMailetContainerConfiguration()
                 .putProcessor(directResolutionTransport())
                 .putProcessor(CommonProcessors.bounces()))
             .build(temporaryFolder.newFolder());
@@ -124,7 +124,7 @@ public class DirectResolutionRemoteDeliveryIntegrationTest {
         jamesServer = TemporaryJamesServer.builder()
             .withBase(SMTP_ONLY_MODULE)
             .withOverrides(binder -> binder.bind(DNSService.class).toInstance(inMemoryDNSService))
-            .withMailetContainer(TemporaryJamesServer.SIMPLE_MAILET_CONTAINER_CONFIGURATION
+            .withMailetContainer(TemporaryJamesServer.simpleMailetContainerConfiguration()
                 .putProcessor(directResolutionTransport())
                 .putProcessor(CommonProcessors.bounces()))
             .build(temporaryFolder.newFolder());
@@ -149,7 +149,7 @@ public class DirectResolutionRemoteDeliveryIntegrationTest {
         jamesServer = TemporaryJamesServer.builder()
             .withBase(SMTP_AND_IMAP_MODULE)
             .withOverrides(binder -> binder.bind(DNSService.class).toInstance(inMemoryDNSService))
-            .withMailetContainer(TemporaryJamesServer.SIMPLE_MAILET_CONTAINER_CONFIGURATION
+            .withMailetContainer(TemporaryJamesServer.simpleMailetContainerConfiguration()
                 .putProcessor(transport())
                 .putProcessor(CommonProcessors.bounces()))
             .build(temporaryFolder.newFolder());
@@ -176,7 +176,7 @@ public class DirectResolutionRemoteDeliveryIntegrationTest {
         jamesServer = TemporaryJamesServer.builder()
             .withBase(SMTP_AND_IMAP_MODULE)
             .withOverrides(binder -> binder.bind(DNSService.class).toInstance(inMemoryDNSService))
-            .withMailetContainer(TemporaryJamesServer.SIMPLE_MAILET_CONTAINER_CONFIGURATION
+            .withMailetContainer(TemporaryJamesServer.simpleMailetContainerConfiguration()
                 .putProcessor(transport())
                 .putProcessor(CommonProcessors.bounces()))
             .build(temporaryFolder.newFolder());
@@ -204,7 +204,7 @@ public class DirectResolutionRemoteDeliveryIntegrationTest {
         jamesServer = TemporaryJamesServer.builder()
             .withBase(SMTP_AND_IMAP_MODULE)
             .withOverrides(binder -> binder.bind(DNSService.class).toInstance(inMemoryDNSService))
-            .withMailetContainer(TemporaryJamesServer.SIMPLE_MAILET_CONTAINER_CONFIGURATION
+            .withMailetContainer(TemporaryJamesServer.simpleMailetContainerConfiguration()
                 .putProcessor(ProcessorConfiguration.transport()
                     .addMailet(MailetConfiguration.BCC_STRIPPER)
                     .addMailet(LOCAL_DELIVERY)
diff --git a/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/GatewayRemoteDeliveryIntegrationTest.java b/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/GatewayRemoteDeliveryIntegrationTest.java
index 9f32a85..a67e36e 100644
--- a/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/GatewayRemoteDeliveryIntegrationTest.java
+++ b/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/GatewayRemoteDeliveryIntegrationTest.java
@@ -222,7 +222,7 @@ public class GatewayRemoteDeliveryIntegrationTest {
         jamesServer = TemporaryJamesServer.builder()
             .withBase(SMTP_AND_IMAP_MODULE)
             .withOverrides(binder -> binder.bind(DNSService.class).toInstance(inMemoryDNSService))
-            .withMailetContainer(TemporaryJamesServer.SIMPLE_MAILET_CONTAINER_CONFIGURATION
+            .withMailetContainer(TemporaryJamesServer.simpleMailetContainerConfiguration()
                 .putProcessor(ProcessorConfiguration.transport()
                     .addMailet(MailetConfiguration.BCC_STRIPPER)
                     .addMailet(MailetConfiguration.LOCAL_DELIVERY)
@@ -253,7 +253,7 @@ public class GatewayRemoteDeliveryIntegrationTest {
     }
 
     private MailetContainer.Builder generateMailetContainerConfiguration(String gatewayProperty) {
-        return TemporaryJamesServer.SIMPLE_MAILET_CONTAINER_CONFIGURATION
+        return TemporaryJamesServer.simpleMailetContainerConfiguration()
             .putProcessor(relayAndLocalDeliveryTransport(gatewayProperty));
     }
 
diff --git a/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/NetworkMatcherIntegrationTest.java b/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/NetworkMatcherIntegrationTest.java
index 8dff7f0..69976fb 100644
--- a/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/NetworkMatcherIntegrationTest.java
+++ b/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/NetworkMatcherIntegrationTest.java
@@ -63,7 +63,7 @@ public class NetworkMatcherIntegrationTest {
     private TemporaryJamesServer createJamesServerWithRootProcessor(ProcessorConfiguration.Builder rootProcessor) throws Exception {
         TemporaryJamesServer temporaryJamesServer = TemporaryJamesServer.builder()
             .withBase(MemoryJamesServerMain.SMTP_AND_IMAP_MODULE)
-            .withMailetContainer(TemporaryJamesServer.DEFAULT_MAILET_CONTAINER_CONFIGURATION
+            .withMailetContainer(TemporaryJamesServer.defaultMailetContainerConfiguration()
                 .putProcessor(rootProcessor)
                 .putProcessor(CommonProcessors.deliverOnlyTransport()))
             .build(temporaryFolder.newFolder());
diff --git a/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/RemoteDeliveryDKIMIntegrationTest.java b/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/RemoteDeliveryDKIMIntegrationTest.java
index 15daea2..9dcdac3 100644
--- a/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/RemoteDeliveryDKIMIntegrationTest.java
+++ b/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/RemoteDeliveryDKIMIntegrationTest.java
@@ -141,7 +141,7 @@ class RemoteDeliveryDKIMIntegrationTest {
             jamesServer = TemporaryJamesServer.builder()
                 .withBase(SMTP_ONLY_MODULE)
                 .withOverrides(binder -> binder.bind(DNSService.class).toInstance(inMemoryDNSService))
-                .withMailetContainer(TemporaryJamesServer.SIMPLE_MAILET_CONTAINER_CONFIGURATION
+                .withMailetContainer(TemporaryJamesServer.simpleMailetContainerConfiguration()
                     .putProcessor(directResolutionTransport(MailetConfiguration.remoteDeliveryBuilder()
                         .addProperty("mail.smtp.allow8bitmime", "true")))
                     .putProcessor(CommonProcessors.bounces()))
@@ -182,7 +182,7 @@ class RemoteDeliveryDKIMIntegrationTest {
             jamesServer = TemporaryJamesServer.builder()
                 .withBase(SMTP_ONLY_MODULE)
                 .withOverrides(binder -> binder.bind(DNSService.class).toInstance(inMemoryDNSService))
-                .withMailetContainer(TemporaryJamesServer.SIMPLE_MAILET_CONTAINER_CONFIGURATION
+                .withMailetContainer(TemporaryJamesServer.simpleMailetContainerConfiguration()
                     .putProcessor(directResolutionTransport(MailetConfiguration.remoteDeliveryBuilder()
                         .addProperty("mail.smtp.allow8bitmime", "true")))
                     .putProcessor(CommonProcessors.bounces()))
@@ -228,7 +228,7 @@ class RemoteDeliveryDKIMIntegrationTest {
             jamesServer = TemporaryJamesServer.builder()
                 .withBase(SMTP_ONLY_MODULE)
                 .withOverrides(binder -> binder.bind(DNSService.class).toInstance(inMemoryDNSService))
-                .withMailetContainer(TemporaryJamesServer.SIMPLE_MAILET_CONTAINER_CONFIGURATION
+                .withMailetContainer(TemporaryJamesServer.simpleMailetContainerConfiguration()
                     .putProcessor(directResolutionTransport(MailetConfiguration.remoteDeliveryBuilder()))
                     .putProcessor(CommonProcessors.bounces()))
                 .build(tempDir);
diff --git a/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/SenderIsLocalIntegrationTest.java b/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/SenderIsLocalIntegrationTest.java
index b00ec11..f878d1a 100644
--- a/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/SenderIsLocalIntegrationTest.java
+++ b/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/SenderIsLocalIntegrationTest.java
@@ -71,7 +71,7 @@ public class SenderIsLocalIntegrationTest {
     public void setUp() throws Exception {
         jamesServer = TemporaryJamesServer.builder()
             .withBase(MemoryJamesServerMain.IN_MEMORY_SERVER_AGGREGATE_MODULE)
-            .withMailetContainer(TemporaryJamesServer.DEFAULT_MAILET_CONTAINER_CONFIGURATION
+            .withMailetContainer(TemporaryJamesServer.defaultMailetContainerConfiguration()
                 .postmaster(POSTMASTER)
                 .putProcessor(transport()))
             .build(temporaryFolder.newFolder());
diff --git a/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/SizeGreaterThanIntegrationTest.java b/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/SizeGreaterThanIntegrationTest.java
index 2557266..184b02b 100644
--- a/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/SizeGreaterThanIntegrationTest.java
+++ b/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/SizeGreaterThanIntegrationTest.java
@@ -100,7 +100,7 @@ public class SizeGreaterThanIntegrationTest {
     }
 
     private MailetContainer.Builder generateMailetContainerConfiguration() {
-        return TemporaryJamesServer.DEFAULT_MAILET_CONTAINER_CONFIGURATION
+        return TemporaryJamesServer.defaultMailetContainerConfiguration()
                 .postmaster(POSTMASTER)
                 .putProcessor(ProcessorConfiguration.transport()
                         .addMailet(MailetConfiguration.builder()
diff --git a/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/SmtpAuthIntegrationTest.java b/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/SmtpAuthIntegrationTest.java
index 791a84d..e9580b4 100644
--- a/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/SmtpAuthIntegrationTest.java
+++ b/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/SmtpAuthIntegrationTest.java
@@ -71,7 +71,7 @@ public class SmtpAuthIntegrationTest {
                 .addProperty("processor", ProcessorConfiguration.TRANSPORT_PROCESSOR))
             .addMailet(MailetConfiguration.TO_BOUNCE);
 
-        MailetContainer.Builder mailetContainer = TemporaryJamesServer.DEFAULT_MAILET_CONTAINER_CONFIGURATION
+        MailetContainer.Builder mailetContainer = TemporaryJamesServer.defaultMailetContainerConfiguration()
             .putProcessor(rootProcessor)
             .putProcessor(CommonProcessors.deliverOnlyTransport())
             .putProcessor(bounces());
diff --git a/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/TemporaryJamesServer.java b/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/TemporaryJamesServer.java
index abf31e6..b1fabcf 100644
--- a/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/TemporaryJamesServer.java
+++ b/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/TemporaryJamesServer.java
@@ -50,15 +50,19 @@ import com.google.inject.Module;
 
 public class TemporaryJamesServer {
 
-    public static final MailetContainer.Builder DEFAULT_MAILET_CONTAINER_CONFIGURATION = MailetContainer.builder()
-        .putProcessor(CommonProcessors.root())
-        .putProcessor(CommonProcessors.error())
-        .putProcessor(CommonProcessors.transport());
+    public static MailetContainer.Builder defaultMailetContainerConfiguration() {
+        return MailetContainer.builder()
+            .putProcessor(CommonProcessors.root())
+            .putProcessor(CommonProcessors.error())
+            .putProcessor(CommonProcessors.transport());
+    }
 
-    public static final MailetContainer.Builder SIMPLE_MAILET_CONTAINER_CONFIGURATION = MailetContainer.builder()
-        .putProcessor(CommonProcessors.simpleRoot())
-        .putProcessor(CommonProcessors.error())
-        .putProcessor(CommonProcessors.transport());
+    public static MailetContainer.Builder simpleMailetContainerConfiguration() {
+        return MailetContainer.builder()
+            .putProcessor(CommonProcessors.simpleRoot())
+            .putProcessor(CommonProcessors.error())
+            .putProcessor(CommonProcessors.transport());
+    }
 
 
     public static class Builder {
@@ -106,7 +110,7 @@ public class TemporaryJamesServer {
         public TemporaryJamesServer build(File workingDir) throws Exception {
             return new TemporaryJamesServer(
                 workingDir,
-                mailetConfiguration.orElse(DEFAULT_MAILET_CONTAINER_CONFIGURATION.build()),
+                mailetConfiguration.orElse(defaultMailetContainerConfiguration().build()),
                 smtpConfiguration.orElse(SmtpConfiguration.DEFAULT),
                 module.orElse(MemoryJamesServerMain.IN_MEMORY_SERVER_AGGREGATE_MODULE),
                 overrideModules.build());
diff --git a/server/mailet/integration-testing/src/test/java/org/apache/james/smtp/SmtpAuthorizedAddressesTest.java b/server/mailet/integration-testing/src/test/java/org/apache/james/smtp/SmtpAuthorizedAddressesTest.java
index 21fd00d..a736851 100644
--- a/server/mailet/integration-testing/src/test/java/org/apache/james/smtp/SmtpAuthorizedAddressesTest.java
+++ b/server/mailet/integration-testing/src/test/java/org/apache/james/smtp/SmtpAuthorizedAddressesTest.java
@@ -66,7 +66,7 @@ public class SmtpAuthorizedAddressesTest {
     private TemporaryJamesServer jamesServer;
 
     private void createJamesServer(SmtpConfiguration.Builder smtpConfiguration) throws Exception {
-        MailetContainer.Builder mailetContainer = TemporaryJamesServer.SIMPLE_MAILET_CONTAINER_CONFIGURATION
+        MailetContainer.Builder mailetContainer = TemporaryJamesServer.simpleMailetContainerConfiguration()
             .putProcessor(ProcessorConfiguration.transport()
                 .addMailetsFrom(CommonProcessors.deliverOnlyTransport())
                 .addMailet(MailetConfiguration.remoteDeliveryBuilder()
diff --git a/server/mailet/integration-testing/src/test/java/org/apache/james/smtp/SmtpContentTypeTest.java b/server/mailet/integration-testing/src/test/java/org/apache/james/smtp/SmtpContentTypeTest.java
index 8a3ec39..6274b01 100644
--- a/server/mailet/integration-testing/src/test/java/org/apache/james/smtp/SmtpContentTypeTest.java
+++ b/server/mailet/integration-testing/src/test/java/org/apache/james/smtp/SmtpContentTypeTest.java
@@ -70,7 +70,7 @@ public class SmtpContentTypeTest {
     private TemporaryJamesServer jamesServer;
 
     private void createJamesServer(SmtpConfiguration.Builder smtpConfiguration) throws Exception {
-        MailetContainer.Builder mailetContainer = TemporaryJamesServer.SIMPLE_MAILET_CONTAINER_CONFIGURATION
+        MailetContainer.Builder mailetContainer = TemporaryJamesServer.simpleMailetContainerConfiguration()
             .putProcessor(ProcessorConfiguration.transport()
                 .addMailetsFrom(CommonProcessors.deliverOnlyTransport())
                 .addMailet(MailetConfiguration.remoteDeliveryBuilder()
diff --git a/server/mailet/integration-testing/src/test/java/org/apache/james/smtp/SmtpRandomStoringTest.java b/server/mailet/integration-testing/src/test/java/org/apache/james/smtp/SmtpRandomStoringTest.java
index 8ceb556..5c131a2 100644
--- a/server/mailet/integration-testing/src/test/java/org/apache/james/smtp/SmtpRandomStoringTest.java
+++ b/server/mailet/integration-testing/src/test/java/org/apache/james/smtp/SmtpRandomStoringTest.java
@@ -131,7 +131,7 @@ public class SmtpRandomStoringTest {
     }
 
     private void createJamesServer() throws Exception {
-        MailetContainer.Builder mailetContainer = TemporaryJamesServer.SIMPLE_MAILET_CONTAINER_CONFIGURATION
+        MailetContainer.Builder mailetContainer = TemporaryJamesServer.simpleMailetContainerConfiguration()
             .putProcessor(ProcessorConfiguration.transport()
                 .addMailet(RANDOM_STORING)
                 .addMailetsFrom(CommonProcessors.deliverOnlyTransport()));
diff --git a/server/mailet/integration-testing/src/test/java/org/apache/james/smtp/extensions/SMTPHeloHooksTest.java b/server/mailet/integration-testing/src/test/java/org/apache/james/smtp/extensions/SMTPHeloHooksTest.java
index 85560ae..377b238 100644
--- a/server/mailet/integration-testing/src/test/java/org/apache/james/smtp/extensions/SMTPHeloHooksTest.java
+++ b/server/mailet/integration-testing/src/test/java/org/apache/james/smtp/extensions/SMTPHeloHooksTest.java
@@ -65,7 +65,7 @@ public class SMTPHeloHooksTest {
     private TemporaryJamesServer jamesServer;
 
     private void createJamesServer(SmtpConfiguration.Builder smtpConfiguration) throws Exception {
-        MailetContainer.Builder mailetContainer = TemporaryJamesServer.SIMPLE_MAILET_CONTAINER_CONFIGURATION
+        MailetContainer.Builder mailetContainer = TemporaryJamesServer.simpleMailetContainerConfiguration()
             .putProcessor(CommonProcessors.deliverOnlyTransport());
 
         jamesServer = TemporaryJamesServer.builder()
diff --git a/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/AddFooterTest.java b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/AddFooterTest.java
index 1679359..e3e69a4 100644
--- a/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/AddFooterTest.java
+++ b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/AddFooterTest.java
@@ -63,7 +63,7 @@ public class AddFooterTest {
     public void setup() throws Exception {
         jamesServer = TemporaryJamesServer.builder()
             .withOverrides(new ActiveMQQueueModule())
-            .withMailetContainer(TemporaryJamesServer.SIMPLE_MAILET_CONTAINER_CONFIGURATION
+            .withMailetContainer(TemporaryJamesServer.simpleMailetContainerConfiguration()
                 .putProcessor(ProcessorConfiguration.transport()
                     .addMailet(MailetConfiguration.builder()
                         .matcher(All.class)
diff --git a/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/AliasMappingTest.java b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/AliasMappingTest.java
index efd7863..efa15ff 100644
--- a/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/AliasMappingTest.java
+++ b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/AliasMappingTest.java
@@ -93,7 +93,7 @@ public class AliasMappingTest {
 
     @Before
     public void setup() throws Exception {
-        MailetContainer.Builder mailetContainer = TemporaryJamesServer.SIMPLE_MAILET_CONTAINER_CONFIGURATION
+        MailetContainer.Builder mailetContainer = TemporaryJamesServer.simpleMailetContainerConfiguration()
             .putProcessor(CommonProcessors.rrtErrorEnabledTransport())
             .putProcessor(CommonProcessors.rrtErrorProcessor());
 
diff --git a/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/AmqpForwardAttachmentTest.java b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/AmqpForwardAttachmentTest.java
index cc8ff4e..0b4dbd2 100644
--- a/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/AmqpForwardAttachmentTest.java
+++ b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/AmqpForwardAttachmentTest.java
@@ -83,7 +83,7 @@ public class AmqpForwardAttachmentTest {
 
     @Before
     public void setup() throws Exception {
-        MailetContainer.Builder mailetContainer = TemporaryJamesServer.DEFAULT_MAILET_CONTAINER_CONFIGURATION
+        MailetContainer.Builder mailetContainer = TemporaryJamesServer.defaultMailetContainerConfiguration()
             .putProcessor(ProcessorConfiguration.transport()
                 .addMailet(MailetConfiguration.builder()
                     .matcher(All.class)
diff --git a/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/ContactExtractorTest.java b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/ContactExtractorTest.java
index 2652ad1..610c3bf 100644
--- a/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/ContactExtractorTest.java
+++ b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/ContactExtractorTest.java
@@ -82,7 +82,7 @@ public class ContactExtractorTest {
     @Before
     public void setup() throws Exception {
         String attribute = "ExtractedContacts";
-        MailetContainer.Builder mailets = TemporaryJamesServer.DEFAULT_MAILET_CONTAINER_CONFIGURATION
+        MailetContainer.Builder mailets = TemporaryJamesServer.defaultMailetContainerConfiguration()
             .postmaster(SENDER)
             .putProcessor(
                 ProcessorConfiguration.transport()
diff --git a/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/DlpIntegrationTest.java b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/DlpIntegrationTest.java
index 957ee5c..2628219 100644
--- a/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/DlpIntegrationTest.java
+++ b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/DlpIntegrationTest.java
@@ -71,7 +71,7 @@ public class DlpIntegrationTest {
     private RequestSpecification specification;
 
     private void createJamesServer(MailetConfiguration.Builder dlpMailet) throws Exception {
-        MailetContainer.Builder mailets = TemporaryJamesServer.DEFAULT_MAILET_CONTAINER_CONFIGURATION
+        MailetContainer.Builder mailets = TemporaryJamesServer.defaultMailetContainerConfiguration()
             .putProcessor(
                 ProcessorConfiguration.transport()
                     .addMailet(MailetConfiguration.BCC_STRIPPER)
diff --git a/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/DomainMappingTest.java b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/DomainMappingTest.java
index a29cf95..18c9d9b 100644
--- a/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/DomainMappingTest.java
+++ b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/DomainMappingTest.java
@@ -78,7 +78,7 @@ public class DomainMappingTest {
 
     @Before
     public void setup() throws Exception {
-        MailetContainer.Builder mailetContainer = TemporaryJamesServer.SIMPLE_MAILET_CONTAINER_CONFIGURATION
+        MailetContainer.Builder mailetContainer = TemporaryJamesServer.simpleMailetContainerConfiguration()
             .putProcessor(CommonProcessors.rrtErrorEnabledTransport())
             .putProcessor(CommonProcessors.rrtErrorProcessor());
 
diff --git a/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/GroupMappingRelayTest.java b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/GroupMappingRelayTest.java
index 8f08e88..c48d6e2 100644
--- a/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/GroupMappingRelayTest.java
+++ b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/GroupMappingRelayTest.java
@@ -76,7 +76,7 @@ public class GroupMappingRelayTest {
 
     @Before
     public void setup() throws Exception {
-        MailetContainer.Builder mailetContainer = TemporaryJamesServer.SIMPLE_MAILET_CONTAINER_CONFIGURATION
+        MailetContainer.Builder mailetContainer = TemporaryJamesServer.simpleMailetContainerConfiguration()
             .putProcessor(CommonProcessors.rrtErrorEnabledTransport()
                 .addMailet(MailetConfiguration.remoteDeliveryBuilder()
                     .matcher(All.class)
diff --git a/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/GroupMappingTest.java b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/GroupMappingTest.java
index 2bd6cef..690f696 100644
--- a/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/GroupMappingTest.java
+++ b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/GroupMappingTest.java
@@ -82,7 +82,7 @@ public class GroupMappingTest {
 
     @Before
     public void setup() throws Exception {
-        MailetContainer.Builder mailetContainer = TemporaryJamesServer.SIMPLE_MAILET_CONTAINER_CONFIGURATION
+        MailetContainer.Builder mailetContainer = TemporaryJamesServer.simpleMailetContainerConfiguration()
             .putProcessor(CommonProcessors.rrtErrorEnabledTransport())
             .putProcessor(CommonProcessors.rrtErrorProcessor());
 
diff --git a/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/ICSAttachmentWorkflowTest.java b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/ICSAttachmentWorkflowTest.java
index 64c34ff..3ff99ba 100644
--- a/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/ICSAttachmentWorkflowTest.java
+++ b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/ICSAttachmentWorkflowTest.java
@@ -451,7 +451,7 @@ public class ICSAttachmentWorkflowTest {
 
     @Before
     public void setup() throws Exception {
-        MailetContainer.Builder mailetContainer = TemporaryJamesServer.DEFAULT_MAILET_CONTAINER_CONFIGURATION
+        MailetContainer.Builder mailetContainer = TemporaryJamesServer.defaultMailetContainerConfiguration()
             .putProcessor(ProcessorConfiguration.transport()
                 .addMailet(MailetConfiguration.builder()
                     .matcher(All.class)
diff --git a/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/IsOverQuotaMatcherTest.java b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/IsOverQuotaMatcherTest.java
index 11134f6..63326f5 100644
--- a/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/IsOverQuotaMatcherTest.java
+++ b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/IsOverQuotaMatcherTest.java
@@ -75,7 +75,7 @@ public class IsOverQuotaMatcherTest {
 
     @Before
     public void setup() throws Exception {
-        MailetContainer.Builder mailetContainer = TemporaryJamesServer.DEFAULT_MAILET_CONTAINER_CONFIGURATION
+        MailetContainer.Builder mailetContainer = TemporaryJamesServer.defaultMailetContainerConfiguration()
                 .putProcessor(ProcessorConfiguration.transport()
                         .addMailet(MailetConfiguration.builder()
                                 .matcher(IsOverQuota.class)
diff --git a/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/MailReprocessingIntegrationTest.java b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/MailReprocessingIntegrationTest.java
index 927363b..a17929f 100644
--- a/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/MailReprocessingIntegrationTest.java
+++ b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/MailReprocessingIntegrationTest.java
@@ -71,7 +71,7 @@ public class MailReprocessingIntegrationTest {
 
     @Before
     public void createJamesServer() throws Exception {
-        MailetContainer.Builder mailets = TemporaryJamesServer.DEFAULT_MAILET_CONTAINER_CONFIGURATION
+        MailetContainer.Builder mailets = TemporaryJamesServer.defaultMailetContainerConfiguration()
             .putProcessor(ProcessorConfiguration.transport()
                     .addMailet(MailetConfiguration.BCC_STRIPPER)
                     .addMailet(MailetConfiguration.builder()
diff --git a/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/SpamAssassinTest.java b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/SpamAssassinTest.java
index 8439a85..fb019cc 100644
--- a/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/SpamAssassinTest.java
+++ b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/SpamAssassinTest.java
@@ -74,7 +74,7 @@ public class SpamAssassinTest {
 
     @Before
     public void setup() throws Exception {
-        MailetContainer.Builder mailets = TemporaryJamesServer.DEFAULT_MAILET_CONTAINER_CONFIGURATION
+        MailetContainer.Builder mailets = TemporaryJamesServer.defaultMailetContainerConfiguration()
             .putProcessor(
                 ProcessorConfiguration.transport()
                     .addMailet(MailetConfiguration.builder()
diff --git a/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/StripAttachmentTest.java b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/StripAttachmentTest.java
index ab116ce..0f62d8b 100644
--- a/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/StripAttachmentTest.java
+++ b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/StripAttachmentTest.java
@@ -63,7 +63,7 @@ public class StripAttachmentTest {
 
     @Before
     public void setup() throws Exception {
-        MailetContainer.Builder mailetContainer = TemporaryJamesServer.DEFAULT_MAILET_CONTAINER_CONFIGURATION
+        MailetContainer.Builder mailetContainer = TemporaryJamesServer.defaultMailetContainerConfiguration()
             .putProcessor(ProcessorConfiguration.transport()
                 .addMailet(MailetConfiguration.builder()
                     .matcher(All.class)
diff --git a/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/ToRepositoryTest.java b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/ToRepositoryTest.java
index bcdd0dc..7ac3f96 100644
--- a/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/ToRepositoryTest.java
+++ b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/ToRepositoryTest.java
@@ -68,7 +68,7 @@ public class ToRepositoryTest {
 
     @Before
     public void setup() throws Exception {
-        MailetContainer.Builder mailetContainer = TemporaryJamesServer.SIMPLE_MAILET_CONTAINER_CONFIGURATION
+        MailetContainer.Builder mailetContainer = TemporaryJamesServer.simpleMailetContainerConfiguration()
             .putProcessor(ProcessorConfiguration.root()
                 .addMailet(MailetConfiguration.builder()
                     .matcher(All.class)
diff --git a/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/ToSenderDomainRepositoryTest.java b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/ToSenderDomainRepositoryTest.java
index a2ebe2a..62ebdd1 100644
--- a/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/ToSenderDomainRepositoryTest.java
+++ b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/ToSenderDomainRepositoryTest.java
@@ -66,7 +66,7 @@ public class ToSenderDomainRepositoryTest {
 
     @Test
     public void incomingMailShouldBeStoredInCorrespondingMailRepository() throws Exception {
-        startJamesServerWithMailetContainer(TemporaryJamesServer.SIMPLE_MAILET_CONTAINER_CONFIGURATION
+        startJamesServerWithMailetContainer(TemporaryJamesServer.simpleMailetContainerConfiguration()
             .putProcessor(ProcessorConfiguration.root()
                 .addMailet(MailetConfiguration.builder()
                     .matcher(All.class)
@@ -86,7 +86,7 @@ public class ToSenderDomainRepositoryTest {
 
     @Test
     public void incomingMailShouldBeStoredWhenRepositoryDoesNotExistAndAllowedToCreateRepository() throws Exception {
-        startJamesServerWithMailetContainer(TemporaryJamesServer.SIMPLE_MAILET_CONTAINER_CONFIGURATION
+        startJamesServerWithMailetContainer(TemporaryJamesServer.simpleMailetContainerConfiguration()
             .putProcessor(ProcessorConfiguration.root()
                 .addMailet(MailetConfiguration.builder()
                     .matcher(All.class)
@@ -107,7 +107,7 @@ public class ToSenderDomainRepositoryTest {
 
     @Test
     public void incomingMailShouldBeStoredWhenRepositoryExistsAndAllowedToCreateRepository() throws Exception {
-        startJamesServerWithMailetContainer(TemporaryJamesServer.SIMPLE_MAILET_CONTAINER_CONFIGURATION
+        startJamesServerWithMailetContainer(TemporaryJamesServer.simpleMailetContainerConfiguration()
             .putProcessor(ProcessorConfiguration.root()
                 .addMailet(MailetConfiguration.builder()
                     .matcher(All.class)
@@ -130,7 +130,7 @@ public class ToSenderDomainRepositoryTest {
 
     @Test
     public void incomingMailShouldBeIgnoredWhenRepositoryDoesNotExistAndNotAllowedToCreateRepository() throws Exception {
-        startJamesServerWithMailetContainer(TemporaryJamesServer.SIMPLE_MAILET_CONTAINER_CONFIGURATION
+        startJamesServerWithMailetContainer(TemporaryJamesServer.simpleMailetContainerConfiguration()
             .putProcessor(ProcessorConfiguration.root()
                 .addMailet(MailetConfiguration.builder()
                     .matcher(All.class)
@@ -156,7 +156,7 @@ public class ToSenderDomainRepositoryTest {
 
     @Test
     public void incomingMailShouldBeStoredWhenRepositoryExistsAndNotAllowedToCreateRepository() throws Exception {
-        startJamesServerWithMailetContainer(TemporaryJamesServer.SIMPLE_MAILET_CONTAINER_CONFIGURATION
+        startJamesServerWithMailetContainer(TemporaryJamesServer.simpleMailetContainerConfiguration()
             .putProcessor(ProcessorConfiguration.root()
                 .addMailet(MailetConfiguration.builder()
                     .matcher(All.class)
@@ -179,7 +179,7 @@ public class ToSenderDomainRepositoryTest {
 
     @Test
     public void incomingMailsShouldBeStoredInCorrespondingMailRepository() throws Exception {
-        startJamesServerWithMailetContainer(TemporaryJamesServer.SIMPLE_MAILET_CONTAINER_CONFIGURATION
+        startJamesServerWithMailetContainer(TemporaryJamesServer.simpleMailetContainerConfiguration()
             .putProcessor(ProcessorConfiguration.root()
                 .addMailet(MailetConfiguration.builder()
                     .matcher(All.class)


---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org


[james-project] 03/09: JAMES-3276 Do not auto-start TemporaryJamesServer in order to be able to shutdown it properly when partially started

Posted by bt...@apache.org.
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 7e391b17712ac6f274d343687e66ffd0973ed9a5
Author: Gautier DI FOLCO <gd...@linagora.com>
AuthorDate: Wed Jun 24 11:16:00 2020 +0200

    JAMES-3276 Do not auto-start TemporaryJamesServer in order to be able to shutdown it properly when partially started
---
 .../james/mailets/AddDeliveredToHeaderTest.java    |  1 +
 .../james/mailets/BounceIntegrationTest.java       |  1 +
 .../mailets/CommonMailetConfigurationTest.java     |  1 +
 .../apache/james/mailets/DKIMIntegrationTest.java  |  1 +
 ...ectResolutionRemoteDeliveryIntegrationTest.java |  5 +++++
 .../GatewayRemoteDeliveryIntegrationTest.java      |  7 +++++++
 .../org/apache/james/mailets/MailetErrorsTest.java | 23 ++++++++++++++++++++++
 .../mailets/NetworkMatcherIntegrationTest.java     |  1 +
 .../RecipientRewriteTableIntegrationTest.java      |  1 +
 .../mailets/RemoteDeliveryDKIMIntegrationTest.java |  3 +++
 .../james/mailets/RemoteDeliveryErrorTest.java     |  1 +
 .../mailets/SenderIsLocalIntegrationTest.java      |  1 +
 .../org/apache/james/mailets/SieveDelivery.java    |  1 +
 .../mailets/SizeGreaterThanIntegrationTest.java    |  1 +
 .../james/mailets/SmtpAuthIntegrationTest.java     |  1 +
 .../apache/james/mailets/TemporaryJamesServer.java |  2 ++
 .../crypto/SMIMEDecryptIntegrationTest.java        |  1 +
 .../mailets/crypto/SMIMESignIntegrationTest.java   |  1 +
 .../james/smtp/SmtpAuthorizedAddressesTest.java    |  1 +
 .../james/smtp/SmtpBracketEnforcementTest.java     |  1 +
 .../org/apache/james/smtp/SmtpContentTypeTest.java |  1 +
 .../james/smtp/SmtpIdentityVerificationTest.java   |  1 +
 .../org/apache/james/smtp/SmtpNullSenderTest.java  |  1 +
 .../apache/james/smtp/SmtpRandomStoringTest.java   |  1 +
 .../apache/james/smtp/SmtpSizeLimitationTest.java  |  1 +
 .../james/smtp/extensions/SMTPHeloHooksTest.java   |  1 +
 .../james/transport/mailets/AddFooterTest.java     |  1 +
 .../james/transport/mailets/AliasMappingTest.java  |  1 +
 .../mailets/AmqpForwardAttachmentTest.java         |  1 +
 .../transport/mailets/ContactExtractorTest.java    |  1 +
 .../transport/mailets/DlpIntegrationTest.java      |  1 +
 .../james/transport/mailets/DomainMappingTest.java |  1 +
 .../transport/mailets/GroupMappingRelayTest.java   |  1 +
 .../james/transport/mailets/GroupMappingTest.java  |  1 +
 .../mailets/ICSAttachmentWorkflowTest.java         |  1 +
 .../transport/mailets/IsOverQuotaMatcherTest.java  |  1 +
 .../mailets/MailReprocessingIntegrationTest.java   |  1 +
 .../james/transport/mailets/SpamAssassinTest.java  |  1 +
 .../transport/mailets/StripAttachmentTest.java     |  1 +
 .../james/transport/mailets/ToRepositoryTest.java  |  1 +
 .../mailets/ToSenderDomainRepositoryTest.java      |  1 +
 41 files changed, 76 insertions(+)

diff --git a/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/AddDeliveredToHeaderTest.java b/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/AddDeliveredToHeaderTest.java
index 4e1c5da..4c7015c 100644
--- a/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/AddDeliveredToHeaderTest.java
+++ b/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/AddDeliveredToHeaderTest.java
@@ -53,6 +53,7 @@ public class AddDeliveredToHeaderTest {
     @Before
     public void setup() throws Exception {
         jamesServer = TemporaryJamesServer.builder().build(temporaryFolder.newFolder());
+        jamesServer.start();
 
         DataProbe dataProbe = jamesServer.getProbe(DataProbeImpl.class);
         dataProbe.addDomain(DEFAULT_DOMAIN);
diff --git a/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/BounceIntegrationTest.java b/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/BounceIntegrationTest.java
index dce1fc6..2243401 100644
--- a/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/BounceIntegrationTest.java
+++ b/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/BounceIntegrationTest.java
@@ -146,6 +146,7 @@ public class BounceIntegrationTest {
                 .withMailetContainer(
                         generateMailetContainerConfiguration(mailetConfiguration))
                 .build(temporaryFolder.newFolder());
+        jamesServer.start();
 
         jamesServer.getProbe(DataProbeImpl.class)
                 .fluent()
diff --git a/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/CommonMailetConfigurationTest.java b/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/CommonMailetConfigurationTest.java
index fe38ad4..4f8143a 100644
--- a/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/CommonMailetConfigurationTest.java
+++ b/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/CommonMailetConfigurationTest.java
@@ -53,6 +53,7 @@ public class CommonMailetConfigurationTest {
     @Before
     public void setup() throws Exception {
         jamesServer = TemporaryJamesServer.builder().build(temporaryFolder.newFolder());
+        jamesServer.start();
 
         DataProbe dataProbe = jamesServer.getProbe(DataProbeImpl.class);
         dataProbe.addDomain(DEFAULT_DOMAIN);
diff --git a/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/DKIMIntegrationTest.java b/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/DKIMIntegrationTest.java
index 26ecf47..09601aa 100644
--- a/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/DKIMIntegrationTest.java
+++ b/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/DKIMIntegrationTest.java
@@ -126,6 +126,7 @@ public class DKIMIntegrationTest {
             .withOverrides(binder -> binder.bind(PublicKeyRecordRetriever.class).toInstance(MOCK_PUBLIC_KEY_RECORD_RETRIEVER))
             .withMailetContainer(mailetContainer)
             .build(temporaryFolder.newFolder());
+        jamesServer.start();
 
         DataProbe dataProbe = jamesServer.getProbe(DataProbeImpl.class);
         dataProbe.addDomain(DEFAULT_DOMAIN);
diff --git a/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/DirectResolutionRemoteDeliveryIntegrationTest.java b/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/DirectResolutionRemoteDeliveryIntegrationTest.java
index 5a45131..20477b2 100644
--- a/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/DirectResolutionRemoteDeliveryIntegrationTest.java
+++ b/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/DirectResolutionRemoteDeliveryIntegrationTest.java
@@ -101,6 +101,7 @@ public class DirectResolutionRemoteDeliveryIntegrationTest {
                 .putProcessor(directResolutionTransport())
                 .putProcessor(CommonProcessors.bounces()))
             .build(temporaryFolder.newFolder());
+        jamesServer.start();
 
         dataProbe = jamesServer.getProbe(DataProbeImpl.class);
         dataProbe.addDomain(DEFAULT_DOMAIN);
@@ -127,6 +128,7 @@ public class DirectResolutionRemoteDeliveryIntegrationTest {
                 .putProcessor(directResolutionTransport())
                 .putProcessor(CommonProcessors.bounces()))
             .build(temporaryFolder.newFolder());
+        jamesServer.start();
 
         dataProbe = jamesServer.getProbe(DataProbeImpl.class);
         dataProbe.addDomain(DEFAULT_DOMAIN);
@@ -151,6 +153,7 @@ public class DirectResolutionRemoteDeliveryIntegrationTest {
                 .putProcessor(transport())
                 .putProcessor(CommonProcessors.bounces()))
             .build(temporaryFolder.newFolder());
+        jamesServer.start();
 
         dataProbe = jamesServer.getProbe(DataProbeImpl.class);
         dataProbe.addDomain(DEFAULT_DOMAIN);
@@ -177,6 +180,7 @@ public class DirectResolutionRemoteDeliveryIntegrationTest {
                 .putProcessor(transport())
                 .putProcessor(CommonProcessors.bounces()))
             .build(temporaryFolder.newFolder());
+        jamesServer.start();
 
         dataProbe = jamesServer.getProbe(DataProbeImpl.class);
         dataProbe.addDomain(DEFAULT_DOMAIN);
@@ -212,6 +216,7 @@ public class DirectResolutionRemoteDeliveryIntegrationTest {
                         .matcher(All.class)))
                 .putProcessor(CommonProcessors.bounces()))
             .build(temporaryFolder.newFolder());
+        jamesServer.start();
 
         dataProbe = jamesServer.getProbe(DataProbeImpl.class);
         dataProbe.addDomain(DEFAULT_DOMAIN);
diff --git a/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/GatewayRemoteDeliveryIntegrationTest.java b/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/GatewayRemoteDeliveryIntegrationTest.java
index f7d6d3b..9f32a85 100644
--- a/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/GatewayRemoteDeliveryIntegrationTest.java
+++ b/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/GatewayRemoteDeliveryIntegrationTest.java
@@ -90,6 +90,7 @@ public class GatewayRemoteDeliveryIntegrationTest {
             .withBase(SMTP_ONLY_MODULE)
             .withMailetContainer(generateMailetContainerConfiguration(gatewayProperty))
             .build(temporaryFolder.newFolder());
+        jamesServer.start();
 
         dataProbe = jamesServer.getProbe(DataProbeImpl.class);
         dataProbe.addDomain(DEFAULT_DOMAIN);
@@ -110,6 +111,7 @@ public class GatewayRemoteDeliveryIntegrationTest {
             .withBase(SMTP_ONLY_MODULE)
             .withMailetContainer(generateMailetContainerConfiguration(gatewayProperty))
             .build(temporaryFolder.newFolder());
+        jamesServer.start();
 
         dataProbe = jamesServer.getProbe(DataProbeImpl.class);
         dataProbe.addDomain(DEFAULT_DOMAIN);
@@ -129,6 +131,7 @@ public class GatewayRemoteDeliveryIntegrationTest {
             .withBase(SMTP_ONLY_MODULE)
             .withMailetContainer(generateMailetContainerConfiguration(gatewayProperty))
             .build(temporaryFolder.newFolder());
+        jamesServer.start();
 
         dataProbe = jamesServer.getProbe(DataProbeImpl.class);
         dataProbe.addDomain(DEFAULT_DOMAIN);
@@ -149,6 +152,7 @@ public class GatewayRemoteDeliveryIntegrationTest {
             .withBase(SMTP_ONLY_MODULE)
             .withMailetContainer(generateMailetContainerConfiguration(gatewayProperty))
             .build(temporaryFolder.newFolder());
+        jamesServer.start();
 
         dataProbe = jamesServer.getProbe(DataProbeImpl.class);
         dataProbe.addDomain(DEFAULT_DOMAIN);
@@ -170,6 +174,7 @@ public class GatewayRemoteDeliveryIntegrationTest {
             .withOverrides(binder -> binder.bind(DNSService.class).toInstance(inMemoryDNSService))
             .withMailetContainer(generateMailetContainerConfiguration(gatewayProperty))
             .build(temporaryFolder.newFolder());
+        jamesServer.start();
 
         dataProbe = jamesServer.getProbe(DataProbeImpl.class);
         dataProbe.addDomain(DEFAULT_DOMAIN);
@@ -195,6 +200,7 @@ public class GatewayRemoteDeliveryIntegrationTest {
             .withOverrides(binder -> binder.bind(DNSService.class).toInstance(inMemoryDNSService))
             .withMailetContainer(generateMailetContainerConfiguration(gatewayProperty))
             .build(temporaryFolder.newFolder());
+        jamesServer.start();
 
         dataProbe = jamesServer.getProbe(DataProbeImpl.class);
         dataProbe.addDomain(DEFAULT_DOMAIN);
@@ -224,6 +230,7 @@ public class GatewayRemoteDeliveryIntegrationTest {
                         .matcher(All.class)
                         .addProperty("gateway", gatewayProperty))))
             .build(temporaryFolder.newFolder());
+        jamesServer.start();
 
         dataProbe = jamesServer.getProbe(DataProbeImpl.class);
         dataProbe.addDomain(DEFAULT_DOMAIN);
diff --git a/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/MailetErrorsTest.java b/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/MailetErrorsTest.java
index 646fe0b..594c4b7 100644
--- a/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/MailetErrorsTest.java
+++ b/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/MailetErrorsTest.java
@@ -83,6 +83,7 @@ public class MailetErrorsTest {
                         .matcher(All.class)
                         .mailet(ErrorMailet.class))))
             .build(temporaryFolder.newFolder());
+        jamesServer.start();
         MailRepositoryProbeImpl probe = jamesServer.getProbe(MailRepositoryProbeImpl.class);
 
         smtpMessageSender.connect(LOCALHOST_IP, jamesServer.getProbe(SmtpGuiceProbe.class).getSmtpPort()).sendMessage(FROM, FROM);
@@ -102,6 +103,7 @@ public class MailetErrorsTest {
                         .matcher(All.class)
                         .mailet(NoClassDefFoundErrorMailet.class))))
             .build(temporaryFolder.newFolder());
+        jamesServer.start();
         MailRepositoryProbeImpl probe = jamesServer.getProbe(MailRepositoryProbeImpl.class);
 
         smtpMessageSender.connect(LOCALHOST_IP, jamesServer.getProbe(SmtpGuiceProbe.class).getSmtpPort()).sendMessage(FROM, FROM);
@@ -121,6 +123,7 @@ public class MailetErrorsTest {
                         .matcher(NoClassDefFoundErrorMatcher.class)
                         .mailet(Null.class))))
             .build(temporaryFolder.newFolder());
+        jamesServer.start();
         MailRepositoryProbeImpl probe = jamesServer.getProbe(MailRepositoryProbeImpl.class);
 
         smtpMessageSender.connect(LOCALHOST_IP, jamesServer.getProbe(SmtpGuiceProbe.class).getSmtpPort()).sendMessage(FROM, FROM);
@@ -140,6 +143,7 @@ public class MailetErrorsTest {
                         .matcher(All.class)
                         .mailet(RuntimeExceptionMailet.class))))
             .build(temporaryFolder.newFolder());
+        jamesServer.start();
         MailRepositoryProbeImpl probe = jamesServer.getProbe(MailRepositoryProbeImpl.class);
 
         smtpMessageSender.connect(LOCALHOST_IP, jamesServer.getProbe(SmtpGuiceProbe.class).getSmtpPort()).sendMessage(FROM, FROM);
@@ -163,6 +167,7 @@ public class MailetErrorsTest {
                         .mailet(ToRepository.class)
                         .addProperty("repositoryPath", CUSTOM_REPOSITORY.asString()))))
             .build(temporaryFolder.newFolder());
+        jamesServer.start();
         MailRepositoryProbeImpl probe = jamesServer.getProbe(MailRepositoryProbeImpl.class);
 
         smtpMessageSender.connect(LOCALHOST_IP, jamesServer.getProbe(SmtpGuiceProbe.class).getSmtpPort()).sendMessage(FROM, FROM);
@@ -186,6 +191,7 @@ public class MailetErrorsTest {
                         .mailet(ToRepository.class)
                         .addProperty("repositoryPath", CUSTOM_REPOSITORY.asString()))))
             .build(temporaryFolder.newFolder());
+        jamesServer.start();
         MailRepositoryProbeImpl probe = jamesServer.getProbe(MailRepositoryProbeImpl.class);
 
         smtpMessageSender.connect(LOCALHOST_IP, jamesServer.getProbe(SmtpGuiceProbe.class).getSmtpPort()).sendMessage(FROM, FROM);
@@ -205,6 +211,7 @@ public class MailetErrorsTest {
                         .matcher(All.class)
                         .mailet(RuntimeErrorMailet.class))))
             .build(temporaryFolder.newFolder());
+        jamesServer.start();
         MailRepositoryProbeImpl probe = jamesServer.getProbe(MailRepositoryProbeImpl.class);
 
         smtpMessageSender.connect(LOCALHOST_IP, jamesServer.getProbe(SmtpGuiceProbe.class).getSmtpPort()).sendMessage(FROM, FROM);
@@ -226,6 +233,7 @@ public class MailetErrorsTest {
                         .mailet(ErrorMailet.class)
                         .addProperty("onMailetException", CUSTOM_PROCESSOR))))
             .build(temporaryFolder.newFolder());
+        jamesServer.start();
         MailRepositoryProbeImpl probe = jamesServer.getProbe(MailRepositoryProbeImpl.class);
 
         smtpMessageSender.connect(LOCALHOST_IP, jamesServer.getProbe(SmtpGuiceProbe.class).getSmtpPort()).sendMessage(FROM, FROM);
@@ -248,6 +256,7 @@ public class MailetErrorsTest {
                         .mailet(RuntimeExceptionMailet.class)
                         .addProperty("onMailetException", CUSTOM_PROCESSOR))))
             .build(temporaryFolder.newFolder());
+        jamesServer.start();
         MailRepositoryProbeImpl probe = jamesServer.getProbe(MailRepositoryProbeImpl.class);
 
         smtpMessageSender.connect(LOCALHOST_IP, jamesServer.getProbe(SmtpGuiceProbe.class).getSmtpPort()).sendMessage(FROM, FROM);
@@ -273,6 +282,7 @@ public class MailetErrorsTest {
                         .mailet(ToRepository.class)
                         .addProperty("repositoryPath", CUSTOM_REPOSITORY.asString()))))
             .build(temporaryFolder.newFolder());
+        jamesServer.start();
         MailRepositoryProbeImpl probe = jamesServer.getProbe(MailRepositoryProbeImpl.class);
 
         smtpMessageSender.connect(LOCALHOST_IP, jamesServer.getProbe(SmtpGuiceProbe.class).getSmtpPort()).sendMessage(FROM, FROM);
@@ -298,6 +308,7 @@ public class MailetErrorsTest {
                         .mailet(ToRepository.class)
                         .addProperty("repositoryPath", CUSTOM_REPOSITORY.asString()))))
             .build(temporaryFolder.newFolder());
+        jamesServer.start();
         MailRepositoryProbeImpl probe = jamesServer.getProbe(MailRepositoryProbeImpl.class);
 
         smtpMessageSender.connect(LOCALHOST_IP, jamesServer.getProbe(SmtpGuiceProbe.class).getSmtpPort()).sendMessage(FROM, FROM);
@@ -317,6 +328,7 @@ public class MailetErrorsTest {
                         .matcher(ErrorMatcher.class)
                         .mailet(NoopMailet.class))))
             .build(temporaryFolder.newFolder());
+        jamesServer.start();
         MailRepositoryProbeImpl probe = jamesServer.getProbe(MailRepositoryProbeImpl.class);
 
         smtpMessageSender.connect(LOCALHOST_IP, jamesServer.getProbe(SmtpGuiceProbe.class).getSmtpPort()).sendMessage(FROM, FROM);
@@ -336,6 +348,7 @@ public class MailetErrorsTest {
                         .matcher(RuntimeExceptionMatcher.class)
                         .mailet(NoopMailet.class))))
             .build(temporaryFolder.newFolder());
+        jamesServer.start();
         MailRepositoryProbeImpl probe = jamesServer.getProbe(MailRepositoryProbeImpl.class);
 
         smtpMessageSender.connect(LOCALHOST_IP, jamesServer.getProbe(SmtpGuiceProbe.class).getSmtpPort()).sendMessage(FROM, FROM);
@@ -357,6 +370,7 @@ public class MailetErrorsTest {
                         .mailet(NoopMailet.class)
                         .addProperty("onMatchException", CUSTOM_PROCESSOR))))
             .build(temporaryFolder.newFolder());
+        jamesServer.start();
         MailRepositoryProbeImpl probe = jamesServer.getProbe(MailRepositoryProbeImpl.class);
 
         smtpMessageSender.connect(LOCALHOST_IP, jamesServer.getProbe(SmtpGuiceProbe.class).getSmtpPort()).sendMessage(FROM, FROM);
@@ -378,6 +392,7 @@ public class MailetErrorsTest {
                         .mailet(NoopMailet.class)
                         .addProperty("onMatchException", CUSTOM_PROCESSOR))))
             .build(temporaryFolder.newFolder());
+        jamesServer.start();
         MailRepositoryProbeImpl probe = jamesServer.getProbe(MailRepositoryProbeImpl.class);
 
         smtpMessageSender.connect(LOCALHOST_IP, jamesServer.getProbe(SmtpGuiceProbe.class).getSmtpPort()).sendMessage(FROM, FROM);
@@ -403,6 +418,7 @@ public class MailetErrorsTest {
                         .mailet(ToRepository.class)
                         .addProperty("repositoryPath", CUSTOM_REPOSITORY.asString()))))
             .build(temporaryFolder.newFolder());
+        jamesServer.start();
         MailRepositoryProbeImpl probe = jamesServer.getProbe(MailRepositoryProbeImpl.class);
 
         smtpMessageSender.connect(LOCALHOST_IP, jamesServer.getProbe(SmtpGuiceProbe.class).getSmtpPort()).sendMessage(FROM, FROM);
@@ -428,6 +444,7 @@ public class MailetErrorsTest {
                         .mailet(ToRepository.class)
                         .addProperty("repositoryPath", CUSTOM_REPOSITORY.asString()))))
             .build(temporaryFolder.newFolder());
+        jamesServer.start();
         MailRepositoryProbeImpl probe = jamesServer.getProbe(MailRepositoryProbeImpl.class);
 
         smtpMessageSender.connect(LOCALHOST_IP, jamesServer.getProbe(SmtpGuiceProbe.class).getSmtpPort()).sendMessage(FROM, FROM);
@@ -453,6 +470,7 @@ public class MailetErrorsTest {
                         .matcher(All.class)
                         .mailet(Null.class))))
             .build(temporaryFolder.newFolder());
+        jamesServer.start();
         MailRepositoryProbeImpl probe = jamesServer.getProbe(MailRepositoryProbeImpl.class);
 
         smtpMessageSender.connect(LOCALHOST_IP, jamesServer.getProbe(SmtpGuiceProbe.class).getSmtpPort()).sendMessage(FROM, FROM);
@@ -478,6 +496,7 @@ public class MailetErrorsTest {
                         .matcher(All.class)
                         .mailet(Null.class))))
             .build(temporaryFolder.newFolder());
+        jamesServer.start();
         MailRepositoryProbeImpl probe = jamesServer.getProbe(MailRepositoryProbeImpl.class);
 
         smtpMessageSender.connect(LOCALHOST_IP, jamesServer.getProbe(SmtpGuiceProbe.class).getSmtpPort()).sendMessage(FROM, FROM);
@@ -507,6 +526,7 @@ public class MailetErrorsTest {
                         .matcher(ErrorMatcher.class)
                         .mailet(Null.class))))
             .build(temporaryFolder.newFolder());
+        jamesServer.start();
         MailRepositoryProbeImpl probe = jamesServer.getProbe(MailRepositoryProbeImpl.class);
 
         smtpMessageSender.connect(LOCALHOST_IP, jamesServer.getProbe(SmtpGuiceProbe.class).getSmtpPort()).sendMessage(FROM, FROM);
@@ -536,6 +556,7 @@ public class MailetErrorsTest {
                         .matcher(RuntimeExceptionMatcher.class)
                         .mailet(Null.class))))
             .build(temporaryFolder.newFolder());
+        jamesServer.start();
         MailRepositoryProbeImpl probe = jamesServer.getProbe(MailRepositoryProbeImpl.class);
 
         smtpMessageSender.connect(LOCALHOST_IP, jamesServer.getProbe(SmtpGuiceProbe.class).getSmtpPort()).sendMessage(FROM, FROM);
@@ -565,6 +586,7 @@ public class MailetErrorsTest {
                         .matcher(All.class)
                         .mailet(ErrorMailet.class))))
             .build(temporaryFolder.newFolder());
+        jamesServer.start();
         MailRepositoryProbeImpl probe = jamesServer.getProbe(MailRepositoryProbeImpl.class);
 
         smtpMessageSender.connect(LOCALHOST_IP, jamesServer.getProbe(SmtpGuiceProbe.class).getSmtpPort()).sendMessage(FROM, FROM);
@@ -594,6 +616,7 @@ public class MailetErrorsTest {
                         .matcher(All.class)
                         .mailet(RuntimeExceptionMailet.class))))
             .build(temporaryFolder.newFolder());
+        jamesServer.start();
         MailRepositoryProbeImpl probe = jamesServer.getProbe(MailRepositoryProbeImpl.class);
 
         smtpMessageSender.connect(LOCALHOST_IP, jamesServer.getProbe(SmtpGuiceProbe.class).getSmtpPort()).sendMessage(FROM, FROM);
diff --git a/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/NetworkMatcherIntegrationTest.java b/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/NetworkMatcherIntegrationTest.java
index 8da1a99..8dff7f0 100644
--- a/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/NetworkMatcherIntegrationTest.java
+++ b/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/NetworkMatcherIntegrationTest.java
@@ -67,6 +67,7 @@ public class NetworkMatcherIntegrationTest {
                 .putProcessor(rootProcessor)
                 .putProcessor(CommonProcessors.deliverOnlyTransport()))
             .build(temporaryFolder.newFolder());
+        temporaryJamesServer.start();
 
         DataProbe dataProbe = temporaryJamesServer.getProbe(DataProbeImpl.class);
         dataProbe.addDomain(DEFAULT_DOMAIN);
diff --git a/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/RecipientRewriteTableIntegrationTest.java b/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/RecipientRewriteTableIntegrationTest.java
index 71ddeb3..04cd522 100644
--- a/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/RecipientRewriteTableIntegrationTest.java
+++ b/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/RecipientRewriteTableIntegrationTest.java
@@ -71,6 +71,7 @@ public class RecipientRewriteTableIntegrationTest {
     @Before
     public void setup() throws Exception {
         jamesServer = TemporaryJamesServer.builder().build(temporaryFolder.newFolder());
+        jamesServer.start();
 
         dataProbe = jamesServer.getProbe(DataProbeImpl.class);
         dataProbe.addDomain(DEFAULT_DOMAIN);
diff --git a/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/RemoteDeliveryDKIMIntegrationTest.java b/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/RemoteDeliveryDKIMIntegrationTest.java
index c2c5dbb..15daea2 100644
--- a/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/RemoteDeliveryDKIMIntegrationTest.java
+++ b/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/RemoteDeliveryDKIMIntegrationTest.java
@@ -146,6 +146,7 @@ class RemoteDeliveryDKIMIntegrationTest {
                         .addProperty("mail.smtp.allow8bitmime", "true")))
                     .putProcessor(CommonProcessors.bounces()))
                 .build(tempDir);
+            jamesServer.start();
 
             dataProbe = jamesServer.getProbe(DataProbeImpl.class);
             dataProbe.addDomain(DEFAULT_DOMAIN);
@@ -186,6 +187,7 @@ class RemoteDeliveryDKIMIntegrationTest {
                         .addProperty("mail.smtp.allow8bitmime", "true")))
                     .putProcessor(CommonProcessors.bounces()))
                 .build(tempDir);
+            jamesServer.start();
 
             dataProbe = jamesServer.getProbe(DataProbeImpl.class);
             dataProbe.addDomain(DEFAULT_DOMAIN);
@@ -230,6 +232,7 @@ class RemoteDeliveryDKIMIntegrationTest {
                     .putProcessor(directResolutionTransport(MailetConfiguration.remoteDeliveryBuilder()))
                     .putProcessor(CommonProcessors.bounces()))
                 .build(tempDir);
+            jamesServer.start();
 
             dataProbe = jamesServer.getProbe(DataProbeImpl.class);
             dataProbe.addDomain(DEFAULT_DOMAIN);
diff --git a/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/RemoteDeliveryErrorTest.java b/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/RemoteDeliveryErrorTest.java
index d323f1a..05e027b 100644
--- a/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/RemoteDeliveryErrorTest.java
+++ b/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/RemoteDeliveryErrorTest.java
@@ -144,6 +144,7 @@ public class RemoteDeliveryErrorTest {
                 .putProcessor(directResolutionTransport())
                 .putProcessor(CommonProcessors.bounces()))
             .build(temporaryFolder.newFolder());
+        jamesServer.start();
 
         jamesServer.getProbe(DataProbeImpl.class)
             .fluent()
diff --git a/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/SenderIsLocalIntegrationTest.java b/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/SenderIsLocalIntegrationTest.java
index e54a1c4..b00ec11 100644
--- a/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/SenderIsLocalIntegrationTest.java
+++ b/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/SenderIsLocalIntegrationTest.java
@@ -75,6 +75,7 @@ public class SenderIsLocalIntegrationTest {
                 .postmaster(POSTMASTER)
                 .putProcessor(transport()))
             .build(temporaryFolder.newFolder());
+        jamesServer.start();
         probe = jamesServer.getProbe(MailRepositoryProbeImpl.class);
 
         DataProbe dataProbe = jamesServer.getProbe(DataProbeImpl.class);
diff --git a/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/SieveDelivery.java b/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/SieveDelivery.java
index 74aef1c..0e150c0 100644
--- a/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/SieveDelivery.java
+++ b/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/SieveDelivery.java
@@ -56,6 +56,7 @@ public class SieveDelivery {
     @Before
     public void setup() throws Exception {
         jamesServer = TemporaryJamesServer.builder().build(temporaryFolder.newFolder());
+        jamesServer.start();
 
         DataProbe dataProbe = jamesServer.getProbe(DataProbeImpl.class);
         dataProbe.addDomain(DEFAULT_DOMAIN);
diff --git a/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/SizeGreaterThanIntegrationTest.java b/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/SizeGreaterThanIntegrationTest.java
index 30715ef..2557266 100644
--- a/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/SizeGreaterThanIntegrationTest.java
+++ b/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/SizeGreaterThanIntegrationTest.java
@@ -65,6 +65,7 @@ public class SizeGreaterThanIntegrationTest {
             .withMailetContainer(
                 generateMailetContainerConfiguration())
             .build(temporaryFolder.newFolder());
+        jamesServer.start();
 
         jamesServer.getProbe(DataProbeImpl.class)
             .fluent()
diff --git a/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/SmtpAuthIntegrationTest.java b/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/SmtpAuthIntegrationTest.java
index 11c607b..791a84d 100644
--- a/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/SmtpAuthIntegrationTest.java
+++ b/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/SmtpAuthIntegrationTest.java
@@ -80,6 +80,7 @@ public class SmtpAuthIntegrationTest {
             .withBase(MemoryJamesServerMain.SMTP_AND_IMAP_MODULE)
             .withMailetContainer(mailetContainer)
             .build(temporaryFolder.newFolder());
+        jamesServer.start();
 
         DataProbe dataProbe = jamesServer.getProbe(DataProbeImpl.class);
         dataProbe.addDomain(DEFAULT_DOMAIN);
diff --git a/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/TemporaryJamesServer.java b/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/TemporaryJamesServer.java
index 5add5ad..abf31e6 100644
--- a/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/TemporaryJamesServer.java
+++ b/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/TemporaryJamesServer.java
@@ -148,7 +148,9 @@ public class TemporaryJamesServer {
             .overrideWith(additionalModules)
             .overrideWith(new TestJMAPServerModule())
             .overrideWith((binder) -> binder.bind(WebAdminConfiguration.class).toInstance(WebAdminConfiguration.TEST_CONFIGURATION));
+    }
 
+    public void start() throws Exception {
         jamesServer.start();
     }
 
diff --git a/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/crypto/SMIMEDecryptIntegrationTest.java b/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/crypto/SMIMEDecryptIntegrationTest.java
index dca3cbb..ca5ca31 100644
--- a/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/crypto/SMIMEDecryptIntegrationTest.java
+++ b/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/crypto/SMIMEDecryptIntegrationTest.java
@@ -85,6 +85,7 @@ public class SMIMEDecryptIntegrationTest {
             .withOverrides(binder -> binder.bind(ZonedDateTimeProvider.class).toInstance(() -> DATE_2015))
             .withMailetContainer(mailetContainer)
             .build(workingDir);
+        jamesServer.start();
 
         jamesServer.getProbe(DataProbeImpl.class)
             .fluent()
diff --git a/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/crypto/SMIMESignIntegrationTest.java b/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/crypto/SMIMESignIntegrationTest.java
index 584eac8..ba5f6e4 100644
--- a/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/crypto/SMIMESignIntegrationTest.java
+++ b/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/crypto/SMIMESignIntegrationTest.java
@@ -95,6 +95,7 @@ public class SMIMESignIntegrationTest {
             .withOverrides(binder -> binder.bind(ZonedDateTimeProvider.class).toInstance(() -> DATE_2015))
             .withMailetContainer(mailetContainer)
             .build(workingDir);
+        jamesServer.start();
 
         DataProbe dataProbe = jamesServer.getProbe(DataProbeImpl.class);
         dataProbe.addDomain(DEFAULT_DOMAIN);
diff --git a/server/mailet/integration-testing/src/test/java/org/apache/james/smtp/SmtpAuthorizedAddressesTest.java b/server/mailet/integration-testing/src/test/java/org/apache/james/smtp/SmtpAuthorizedAddressesTest.java
index 3f86ec6..21fd00d 100644
--- a/server/mailet/integration-testing/src/test/java/org/apache/james/smtp/SmtpAuthorizedAddressesTest.java
+++ b/server/mailet/integration-testing/src/test/java/org/apache/james/smtp/SmtpAuthorizedAddressesTest.java
@@ -79,6 +79,7 @@ public class SmtpAuthorizedAddressesTest {
             .withSmtpConfiguration(smtpConfiguration)
             .withMailetContainer(mailetContainer)
             .build(temporaryFolder.newFolder());
+        jamesServer.start();
 
         DataProbe dataProbe = jamesServer.getProbe(DataProbeImpl.class);
         dataProbe.addDomain(DEFAULT_DOMAIN);
diff --git a/server/mailet/integration-testing/src/test/java/org/apache/james/smtp/SmtpBracketEnforcementTest.java b/server/mailet/integration-testing/src/test/java/org/apache/james/smtp/SmtpBracketEnforcementTest.java
index 11a0764..742af1c 100644
--- a/server/mailet/integration-testing/src/test/java/org/apache/james/smtp/SmtpBracketEnforcementTest.java
+++ b/server/mailet/integration-testing/src/test/java/org/apache/james/smtp/SmtpBracketEnforcementTest.java
@@ -51,6 +51,7 @@ public class SmtpBracketEnforcementTest {
         jamesServer = TemporaryJamesServer.builder()
             .withSmtpConfiguration(smtpConfiguration)
             .build(temporaryFolder.newFolder());
+        jamesServer.start();
 
         DataProbe dataProbe = jamesServer.getProbe(DataProbeImpl.class);
         dataProbe.addDomain(DEFAULT_DOMAIN);
diff --git a/server/mailet/integration-testing/src/test/java/org/apache/james/smtp/SmtpContentTypeTest.java b/server/mailet/integration-testing/src/test/java/org/apache/james/smtp/SmtpContentTypeTest.java
index 5461415..8a3ec39 100644
--- a/server/mailet/integration-testing/src/test/java/org/apache/james/smtp/SmtpContentTypeTest.java
+++ b/server/mailet/integration-testing/src/test/java/org/apache/james/smtp/SmtpContentTypeTest.java
@@ -83,6 +83,7 @@ public class SmtpContentTypeTest {
             .withSmtpConfiguration(smtpConfiguration)
             .withMailetContainer(mailetContainer)
             .build(temporaryFolder.newFolder());
+        jamesServer.start();
 
         DataProbe dataProbe = jamesServer.getProbe(DataProbeImpl.class);
         dataProbe.addDomain(DEFAULT_DOMAIN);
diff --git a/server/mailet/integration-testing/src/test/java/org/apache/james/smtp/SmtpIdentityVerificationTest.java b/server/mailet/integration-testing/src/test/java/org/apache/james/smtp/SmtpIdentityVerificationTest.java
index 6cba403..c448373 100644
--- a/server/mailet/integration-testing/src/test/java/org/apache/james/smtp/SmtpIdentityVerificationTest.java
+++ b/server/mailet/integration-testing/src/test/java/org/apache/james/smtp/SmtpIdentityVerificationTest.java
@@ -54,6 +54,7 @@ public class SmtpIdentityVerificationTest {
         jamesServer = TemporaryJamesServer.builder()
             .withSmtpConfiguration(smtpConfiguration)
             .build(temporaryFolder.newFolder());
+        jamesServer.start();
 
         DataProbe dataProbe = jamesServer.getProbe(DataProbeImpl.class);
         dataProbe.addDomain(DEFAULT_DOMAIN);
diff --git a/server/mailet/integration-testing/src/test/java/org/apache/james/smtp/SmtpNullSenderTest.java b/server/mailet/integration-testing/src/test/java/org/apache/james/smtp/SmtpNullSenderTest.java
index b5321e5..39a83cb 100644
--- a/server/mailet/integration-testing/src/test/java/org/apache/james/smtp/SmtpNullSenderTest.java
+++ b/server/mailet/integration-testing/src/test/java/org/apache/james/smtp/SmtpNullSenderTest.java
@@ -53,6 +53,7 @@ public class SmtpNullSenderTest {
     public void setUp() throws Exception {
         jamesServer = TemporaryJamesServer.builder()
             .build(temporaryFolder.newFolder());
+        jamesServer.start();
 
         DataProbe dataProbe = jamesServer.getProbe(DataProbeImpl.class);
         dataProbe.addDomain(DEFAULT_DOMAIN);
diff --git a/server/mailet/integration-testing/src/test/java/org/apache/james/smtp/SmtpRandomStoringTest.java b/server/mailet/integration-testing/src/test/java/org/apache/james/smtp/SmtpRandomStoringTest.java
index 3b47620..8ceb556 100644
--- a/server/mailet/integration-testing/src/test/java/org/apache/james/smtp/SmtpRandomStoringTest.java
+++ b/server/mailet/integration-testing/src/test/java/org/apache/james/smtp/SmtpRandomStoringTest.java
@@ -140,6 +140,7 @@ public class SmtpRandomStoringTest {
             .withBase(MemoryJamesServerMain.SMTP_AND_IMAP_MODULE)
             .withMailetContainer(mailetContainer)
             .build(temporaryFolder.newFolder());
+        jamesServer.start();
     }
 
     private void sendMails() throws Exception {
diff --git a/server/mailet/integration-testing/src/test/java/org/apache/james/smtp/SmtpSizeLimitationTest.java b/server/mailet/integration-testing/src/test/java/org/apache/james/smtp/SmtpSizeLimitationTest.java
index 00a3c67..906d102 100644
--- a/server/mailet/integration-testing/src/test/java/org/apache/james/smtp/SmtpSizeLimitationTest.java
+++ b/server/mailet/integration-testing/src/test/java/org/apache/james/smtp/SmtpSizeLimitationTest.java
@@ -53,6 +53,7 @@ public class SmtpSizeLimitationTest {
         jamesServer = TemporaryJamesServer.builder()
             .withSmtpConfiguration(smtpConfiguration)
             .build(temporaryFolder.newFolder());
+        jamesServer.start();
 
         DataProbe dataProbe = jamesServer.getProbe(DataProbeImpl.class);
         dataProbe.addDomain(DEFAULT_DOMAIN);
diff --git a/server/mailet/integration-testing/src/test/java/org/apache/james/smtp/extensions/SMTPHeloHooksTest.java b/server/mailet/integration-testing/src/test/java/org/apache/james/smtp/extensions/SMTPHeloHooksTest.java
index a424c3e..85560ae 100644
--- a/server/mailet/integration-testing/src/test/java/org/apache/james/smtp/extensions/SMTPHeloHooksTest.java
+++ b/server/mailet/integration-testing/src/test/java/org/apache/james/smtp/extensions/SMTPHeloHooksTest.java
@@ -73,6 +73,7 @@ public class SMTPHeloHooksTest {
             .withSmtpConfiguration(smtpConfiguration)
             .withMailetContainer(mailetContainer)
             .build(temporaryFolder.newFolder());
+        jamesServer.start();
 
         DataProbe dataProbe = jamesServer.getProbe(DataProbeImpl.class);
         dataProbe.addDomain(DEFAULT_DOMAIN);
diff --git a/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/AddFooterTest.java b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/AddFooterTest.java
index b105821..1679359 100644
--- a/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/AddFooterTest.java
+++ b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/AddFooterTest.java
@@ -71,6 +71,7 @@ public class AddFooterTest {
                         .addProperty("text", MATCH_ME))
                     .addMailetsFrom(CommonProcessors.transport())))
             .build(temporaryFolder.newFolder());
+        jamesServer.start();
 
         DataProbe dataProbe = jamesServer.getProbe(DataProbeImpl.class);
         dataProbe.addDomain(DEFAULT_DOMAIN);
diff --git a/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/AliasMappingTest.java b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/AliasMappingTest.java
index 0c63dfa..efd7863 100644
--- a/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/AliasMappingTest.java
+++ b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/AliasMappingTest.java
@@ -100,6 +100,7 @@ public class AliasMappingTest {
         jamesServer = TemporaryJamesServer.builder()
             .withMailetContainer(mailetContainer)
             .build(temporaryFolder.newFolder());
+        jamesServer.start();
 
         dataProbe = jamesServer.getProbe(DataProbeImpl.class);
         dataProbe.addDomain(DOMAIN);
diff --git a/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/AmqpForwardAttachmentTest.java b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/AmqpForwardAttachmentTest.java
index a55aa5a..cc8ff4e 100644
--- a/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/AmqpForwardAttachmentTest.java
+++ b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/AmqpForwardAttachmentTest.java
@@ -107,6 +107,7 @@ public class AmqpForwardAttachmentTest {
             .withBase(MemoryJamesServerMain.SMTP_AND_IMAP_MODULE)
             .withMailetContainer(mailetContainer)
             .build(temporaryFolder.newFolder());
+        jamesServer.start();
 
         DataProbe dataprobe = jamesServer.getProbe(DataProbeImpl.class);
         dataprobe.addDomain(DEFAULT_DOMAIN);
diff --git a/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/ContactExtractorTest.java b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/ContactExtractorTest.java
index 69d1a6d..2652ad1 100644
--- a/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/ContactExtractorTest.java
+++ b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/ContactExtractorTest.java
@@ -102,6 +102,7 @@ public class ContactExtractorTest {
             .withBase(MemoryJamesServerMain.SMTP_AND_IMAP_MODULE)
             .withMailetContainer(mailets)
             .build(folder.newFolder());
+        jamesServer.start();
 
         jamesServer.getProbe(DataProbeImpl.class)
             .fluent()
diff --git a/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/DlpIntegrationTest.java b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/DlpIntegrationTest.java
index e4b340c..957ee5c 100644
--- a/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/DlpIntegrationTest.java
+++ b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/DlpIntegrationTest.java
@@ -82,6 +82,7 @@ public class DlpIntegrationTest {
             .withBase(Modules.combine(MemoryJamesServerMain.SMTP_AND_IMAP_MODULE, MemoryJamesServerMain.WEBADMIN_TESTING))
             .withMailetContainer(mailets)
             .build(folder.newFolder());
+        jamesServer.start();
 
         jamesServer.getProbe(DataProbeImpl.class)
             .fluent()
diff --git a/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/DomainMappingTest.java b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/DomainMappingTest.java
index bc8c09f..a29cf95 100644
--- a/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/DomainMappingTest.java
+++ b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/DomainMappingTest.java
@@ -85,6 +85,7 @@ public class DomainMappingTest {
         jamesServer = TemporaryJamesServer.builder()
             .withMailetContainer(mailetContainer)
             .build(temporaryFolder.newFolder());
+        jamesServer.start();
 
         jamesServer.getProbe(DataProbeImpl.class).fluent()
             .addDomain(DOMAIN1)
diff --git a/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/GroupMappingRelayTest.java b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/GroupMappingRelayTest.java
index 1e9c062..8f08e88 100644
--- a/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/GroupMappingRelayTest.java
+++ b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/GroupMappingRelayTest.java
@@ -86,6 +86,7 @@ public class GroupMappingRelayTest {
         jamesServer = TemporaryJamesServer.builder()
             .withMailetContainer(mailetContainer)
             .build(temporaryFolder.newFolder());
+        jamesServer.start();
 
         DataProbe dataProbe = jamesServer.getProbe(DataProbeImpl.class);
         dataProbe.addDomain(DOMAIN1);
diff --git a/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/GroupMappingTest.java b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/GroupMappingTest.java
index 3feecaf..2bd6cef 100644
--- a/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/GroupMappingTest.java
+++ b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/GroupMappingTest.java
@@ -89,6 +89,7 @@ public class GroupMappingTest {
         jamesServer = TemporaryJamesServer.builder()
             .withMailetContainer(mailetContainer)
             .build(temporaryFolder.newFolder());
+        jamesServer.start();
 
         dataProbe = jamesServer.getProbe(DataProbeImpl.class);
         dataProbe.addDomain(DOMAIN1);
diff --git a/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/ICSAttachmentWorkflowTest.java b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/ICSAttachmentWorkflowTest.java
index 8c7ff37..64c34ff 100644
--- a/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/ICSAttachmentWorkflowTest.java
+++ b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/ICSAttachmentWorkflowTest.java
@@ -493,6 +493,7 @@ public class ICSAttachmentWorkflowTest {
             .withBase(MemoryJamesServerMain.SMTP_AND_IMAP_MODULE)
             .withMailetContainer(mailetContainer)
             .build(temporaryFolder.newFolder());
+        jamesServer.start();
 
         DataProbe dataProbe = jamesServer.getProbe(DataProbeImpl.class);
         dataProbe.addDomain(DEFAULT_DOMAIN);
diff --git a/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/IsOverQuotaMatcherTest.java b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/IsOverQuotaMatcherTest.java
index cfc46ab..11134f6 100644
--- a/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/IsOverQuotaMatcherTest.java
+++ b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/IsOverQuotaMatcherTest.java
@@ -89,6 +89,7 @@ public class IsOverQuotaMatcherTest {
             .withBase(MemoryJamesServerMain.IN_MEMORY_SERVER_AGGREGATE_MODULE)
             .withMailetContainer(mailetContainer)
             .build(temporaryFolder.newFolder());
+        jamesServer.start();
 
         webAdminApi = WebAdminUtils.spec(jamesServer.getProbe(WebAdminGuiceProbe.class).getWebAdminPort());
 
diff --git a/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/MailReprocessingIntegrationTest.java b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/MailReprocessingIntegrationTest.java
index f7ba937..927363b 100644
--- a/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/MailReprocessingIntegrationTest.java
+++ b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/MailReprocessingIntegrationTest.java
@@ -88,6 +88,7 @@ public class MailReprocessingIntegrationTest {
             .withBase(Modules.combine(MemoryJamesServerMain.SMTP_AND_IMAP_MODULE, MemoryJamesServerMain.WEBADMIN_TESTING))
             .withMailetContainer(mailets)
             .build(folder.newFolder());
+        jamesServer.start();
 
         jamesServer.getProbe(DataProbeImpl.class)
             .fluent()
diff --git a/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/SpamAssassinTest.java b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/SpamAssassinTest.java
index 74f6449..8439a85 100644
--- a/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/SpamAssassinTest.java
+++ b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/SpamAssassinTest.java
@@ -87,6 +87,7 @@ public class SpamAssassinTest {
             .withBase(SMTP_AND_IMAP_MODULE)
             .withMailetContainer(mailets)
             .build(temporaryFolder.newFolder());
+        jamesServer.start();
 
         jamesServer.getProbe(DataProbeImpl.class)
             .fluent()
diff --git a/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/StripAttachmentTest.java b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/StripAttachmentTest.java
index 9136b95..ab116ce 100644
--- a/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/StripAttachmentTest.java
+++ b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/StripAttachmentTest.java
@@ -84,6 +84,7 @@ public class StripAttachmentTest {
             .withBase(MemoryJamesServerMain.SMTP_AND_IMAP_MODULE)
             .withMailetContainer(mailetContainer)
             .build(temporaryFolder.newFolder());
+        jamesServer.start();
 
         DataProbe dataProbe = jamesServer.getProbe(DataProbeImpl.class);
         dataProbe.addDomain(DEFAULT_DOMAIN);
diff --git a/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/ToRepositoryTest.java b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/ToRepositoryTest.java
index 677cfaa..bcdd0dc 100644
--- a/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/ToRepositoryTest.java
+++ b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/ToRepositoryTest.java
@@ -78,6 +78,7 @@ public class ToRepositoryTest {
         jamesServer = TemporaryJamesServer.builder()
             .withMailetContainer(mailetContainer)
             .build(temporaryFolder.newFolder());
+        jamesServer.start();
 
         DataProbe dataProbe = jamesServer.getProbe(DataProbeImpl.class);
         dataProbe.addDomain(DEFAULT_DOMAIN);
diff --git a/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/ToSenderDomainRepositoryTest.java b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/ToSenderDomainRepositoryTest.java
index ce9ae56..a2ebe2a 100644
--- a/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/ToSenderDomainRepositoryTest.java
+++ b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/ToSenderDomainRepositoryTest.java
@@ -202,6 +202,7 @@ public class ToSenderDomainRepositoryTest {
         jamesServer = TemporaryJamesServer.builder()
             .withMailetContainer(mailetContainer)
             .build(temporaryFolder.newFolder());
+        jamesServer.start();
 
         jamesServer.getProbe(DataProbeImpl.class)
             .fluent()


---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org


[james-project] 06/09: JAMES-3224 Introduce CassandraConsistenciesConfiguration

Posted by bt...@apache.org.
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 e88a52e5120d6d51eba4706a500e4b3888134c42
Author: Gautier DI FOLCO <gd...@linagora.com>
AuthorDate: Tue Jun 16 18:35:19 2020 +0200

    JAMES-3224 Introduce CassandraConsistenciesConfiguration
---
 .../init/configuration/CassandraConfiguration.java | 79 +++++++++++++++++--
 .../CassandraConsistenciesConfiguration.java       | 90 ++++++++++++++++++++++
 .../init/CassandraConfigurationReadingTest.java    |  2 +
 .../cassandra/init/CassandraConfigurationTest.java | 20 +++++
 .../CassandraConsistenciesConfigurationTest.java   | 84 ++++++++++++++++++++
 .../configuration-reader-test/cassandra.properties |  2 +
 .../destination/conf/cassandra.properties          |  7 ++
 .../destination/conf/cassandra.properties          |  7 ++
 .../destination/conf/cassandra.properties          |  7 ++
 .../destination/conf/cassandra.properties          |  7 ++
 .../modules/mailbox/CassandraSessionModule.java    |  8 ++
 src/site/xdoc/server/config-cassandra.xml          |  6 ++
 12 files changed, 314 insertions(+), 5 deletions(-)

diff --git a/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/init/configuration/CassandraConfiguration.java b/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/init/configuration/CassandraConfiguration.java
index 2681d45..42bbce0 100644
--- a/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/init/configuration/CassandraConfiguration.java
+++ b/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/init/configuration/CassandraConfiguration.java
@@ -21,17 +21,23 @@ package org.apache.james.backends.cassandra.init.configuration;
 
 import static java.lang.Math.toIntExact;
 
+import java.util.List;
 import java.util.Objects;
 import java.util.Optional;
 import java.util.concurrent.TimeUnit;
+import java.util.function.Predicate;
 
 import org.apache.commons.configuration2.Configuration;
+import org.slf4j.LoggerFactory;
 
 import com.google.common.annotations.VisibleForTesting;
 import com.google.common.base.MoreObjects;
 import com.google.common.base.Preconditions;
+import com.google.common.collect.ImmutableList;
 
 public class CassandraConfiguration {
+    private static final org.slf4j.Logger LOGGER = LoggerFactory.getLogger(CassandraConfiguration.class);
+
     public static final int DEFAULT_MESSAGE_CHUNK_SIZE_ON_READ = 100;
     public static final int DEFAULT_EXPUNGE_BATCH_SIZE = 50;
     public static final int DEFAULT_UPDATE_FLAGS_BATCH_SIZE = 20;
@@ -44,7 +50,10 @@ public class CassandraConfiguration {
     public static final int DEFAULT_BLOB_PART_SIZE = 100 * 1024;
     public static final int DEFAULT_ATTACHMENT_V2_MIGRATION_READ_TIMEOUT = toIntExact(TimeUnit.HOURS.toMillis(1));
     public static final int DEFAULT_MESSAGE_ATTACHMENT_ID_MIGRATION_READ_TIMEOUT = toIntExact(TimeUnit.HOURS.toMillis(1));
-
+    public static final String DEFAULT_CONSISTENCY_LEVEL_REGULAR = "QUORUM";
+    public static final String DEFAULT_CONSISTENCY_LEVEL_LIGHTWEIGHT_TRANSACTION = "SERIAL";
+    public static final List<String> VALID_CONSISTENCY_LEVEL_REGULAR = ImmutableList.of("QUORUM", "LOCAL_QUORUM", "EACH_QUORUM");
+    public static final List<String> VALID_CONSISTENCY_LEVEL_LIGHTWEIGHT_TRANSACTION = ImmutableList.of("SERIAL", "LOCAL_SERIAL");
 
     private static final String MAILBOX_MAX_RETRY_ACL = "mailbox.max.retry.acl";
     private static final String MAILBOX_MAX_RETRY_MODSEQ = "mailbox.max.retry.modseq";
@@ -57,6 +66,8 @@ public class CassandraConfiguration {
     private static final String BLOB_PART_SIZE = "mailbox.blob.part.size";
     private static final String ATTACHMENT_V2_MIGRATION_READ_TIMEOUT = "attachment.v2.migration.read.timeout";
     private static final String MESSAGE_ATTACHMENTID_READ_TIMEOUT = "message.attachmentids.read.timeout";
+    private static final String CONSISTENCY_LEVEL_REGULAR = "cassandra.consistency_level.regular";
+    private static final String CONSISTENCY_LEVEL_LIGHTWEIGHT_TRANSACTION = "cassandra.consistency_level.lightweight_transaction";
 
     public static final CassandraConfiguration DEFAULT_CONFIGURATION = builder().build();
 
@@ -72,6 +83,8 @@ public class CassandraConfiguration {
         private Optional<Integer> blobPartSize = Optional.empty();
         private Optional<Integer> attachmentV2MigrationReadTimeout = Optional.empty();
         private Optional<Integer> messageAttachmentIdsReadTimeout = Optional.empty();
+        private Optional<String> consistencyLevelRegular = Optional.empty();
+        private Optional<String> consistencyLevelLightweightTransaction = Optional.empty();
 
         public Builder messageReadChunkSize(int value) {
             Preconditions.checkArgument(value > 0, "messageReadChunkSize needs to be strictly positive");
@@ -194,7 +207,39 @@ public class CassandraConfiguration {
             return this;
         }
 
+        public Builder consistencyLevelRegular(String value) {
+            Preconditions.checkArgument(VALID_CONSISTENCY_LEVEL_REGULAR.contains(value),
+                "consistencyLevelRegular needs to be one of the following: " + String.join(", ", VALID_CONSISTENCY_LEVEL_REGULAR));
+            this.consistencyLevelRegular = Optional.of(value);
+            return this;
+        }
+
+        public Builder consistencyLevelLightweightTransaction(String value) {
+            Preconditions.checkArgument(VALID_CONSISTENCY_LEVEL_LIGHTWEIGHT_TRANSACTION.contains(value),
+                "consistencyLevelLightweightTransaction needs to be one of the following: " + String.join(", ", VALID_CONSISTENCY_LEVEL_LIGHTWEIGHT_TRANSACTION));
+            this.consistencyLevelLightweightTransaction = Optional.of(value);
+            return this;
+        }
+
+        public Builder consistencyLevelRegular(Optional<String> value) {
+            value.ifPresent(this::consistencyLevelRegular);
+            return this;
+        }
+
+        public Builder consistencyLevelLightweightTransaction(Optional<String> value) {
+            value.ifPresent(this::consistencyLevelLightweightTransaction);
+            return this;
+        }
+
         public CassandraConfiguration build() {
+            String consistencyLevelRegular = this.consistencyLevelRegular.orElse(DEFAULT_CONSISTENCY_LEVEL_REGULAR);
+            String consistencyLevelLightweightTransaction = this.consistencyLevelLightweightTransaction.orElse(DEFAULT_CONSISTENCY_LEVEL_LIGHTWEIGHT_TRANSACTION);
+            Predicate<String> isLocal = consistencyLevel -> consistencyLevel.startsWith("LOCAL_");
+            if (isLocal.test(consistencyLevelRegular) != isLocal.test(consistencyLevelLightweightTransaction)) {
+                LOGGER.warn("The consistency levels may not be properly configured, one is local and the other not: "
+                    + "regular = '{}' and lightweight transaction = '{}'", consistencyLevelRegular, consistencyLevelLightweightTransaction);
+            }
+
             return new CassandraConfiguration(aclMaxRetry.orElse(DEFAULT_ACL_MAX_RETRY),
                 messageReadChunkSize.orElse(DEFAULT_MESSAGE_CHUNK_SIZE_ON_READ),
                 expungeChunkSize.orElse(DEFAULT_EXPUNGE_BATCH_SIZE),
@@ -205,7 +250,9 @@ public class CassandraConfiguration {
                 fetchNextPageInAdvanceRow.orElse(DEFAULT_FETCH_NEXT_PAGE_ADVANCE_IN_ROW),
                 blobPartSize.orElse(DEFAULT_BLOB_PART_SIZE),
                 attachmentV2MigrationReadTimeout.orElse(DEFAULT_ATTACHMENT_V2_MIGRATION_READ_TIMEOUT),
-                messageAttachmentIdsReadTimeout.orElse(DEFAULT_MESSAGE_ATTACHMENT_ID_MIGRATION_READ_TIMEOUT));
+                messageAttachmentIdsReadTimeout.orElse(DEFAULT_MESSAGE_ATTACHMENT_ID_MIGRATION_READ_TIMEOUT),
+                consistencyLevelRegular,
+                consistencyLevelLightweightTransaction);
         }
     }
 
@@ -237,6 +284,10 @@ public class CassandraConfiguration {
                 propertiesConfiguration.getInteger(ATTACHMENT_V2_MIGRATION_READ_TIMEOUT, null)))
             .messageAttachmentIdsReadTimeout(Optional.ofNullable(
                 propertiesConfiguration.getInteger(MESSAGE_ATTACHMENTID_READ_TIMEOUT, null)))
+            .consistencyLevelRegular(Optional.ofNullable(
+                    propertiesConfiguration.getString(CONSISTENCY_LEVEL_REGULAR)))
+            .consistencyLevelLightweightTransaction(Optional.ofNullable(
+                    propertiesConfiguration.getString(CONSISTENCY_LEVEL_LIGHTWEIGHT_TRANSACTION)))
             .build();
     }
 
@@ -251,12 +302,15 @@ public class CassandraConfiguration {
     private final int blobPartSize;
     private final int attachmentV2MigrationReadTimeout;
     private final int messageAttachmentIdsReadTimeout;
+    private final String consistencyLevelRegular;
+    private final String consistencyLevelLightweightTransaction;
 
     @VisibleForTesting
     CassandraConfiguration(int aclMaxRetry, int messageReadChunkSize, int expungeChunkSize,
                            int flagsUpdateMessageIdMaxRetry, int flagsUpdateMessageMaxRetry,
                            int modSeqMaxRetry, int uidMaxRetry, int fetchNextPageInAdvanceRow,
-                           int blobPartSize, final int attachmentV2MigrationReadTimeout, int messageAttachmentIdsReadTimeout) {
+                           int blobPartSize, final int attachmentV2MigrationReadTimeout, int messageAttachmentIdsReadTimeout,
+                           String consistencyLevelRegular, String consistencyLevelLightweightTransaction) {
         this.aclMaxRetry = aclMaxRetry;
         this.messageReadChunkSize = messageReadChunkSize;
         this.expungeChunkSize = expungeChunkSize;
@@ -268,6 +322,8 @@ public class CassandraConfiguration {
         this.blobPartSize = blobPartSize;
         this.attachmentV2MigrationReadTimeout = attachmentV2MigrationReadTimeout;
         this.messageAttachmentIdsReadTimeout = messageAttachmentIdsReadTimeout;
+        this.consistencyLevelRegular = consistencyLevelRegular;
+        this.consistencyLevelLightweightTransaction = consistencyLevelLightweightTransaction;
     }
 
     public int getBlobPartSize() {
@@ -314,6 +370,14 @@ public class CassandraConfiguration {
         return messageAttachmentIdsReadTimeout;
     }
 
+    public String getConsistencyLevelRegular() {
+        return consistencyLevelRegular;
+    }
+
+    public String getConsistencyLevelLightweightTransaction() {
+        return consistencyLevelLightweightTransaction;
+    }
+
     @Override
     public final boolean equals(Object o) {
         if (o instanceof CassandraConfiguration) {
@@ -329,7 +393,9 @@ public class CassandraConfiguration {
                 && Objects.equals(this.fetchNextPageInAdvanceRow, that.fetchNextPageInAdvanceRow)
                 && Objects.equals(this.blobPartSize, that.blobPartSize)
                 && Objects.equals(this.attachmentV2MigrationReadTimeout, that.attachmentV2MigrationReadTimeout)
-                && Objects.equals(this.messageAttachmentIdsReadTimeout, that.messageAttachmentIdsReadTimeout);
+                && Objects.equals(this.messageAttachmentIdsReadTimeout, that.messageAttachmentIdsReadTimeout)
+                && Objects.equals(this.consistencyLevelRegular, that.consistencyLevelRegular)
+                && Objects.equals(this.consistencyLevelLightweightTransaction, that.consistencyLevelLightweightTransaction);
         }
         return false;
     }
@@ -338,7 +404,8 @@ public class CassandraConfiguration {
     public final int hashCode() {
         return Objects.hash(aclMaxRetry, messageReadChunkSize, expungeChunkSize, flagsUpdateMessageIdMaxRetry,
             flagsUpdateMessageMaxRetry, modSeqMaxRetry, uidMaxRetry, fetchNextPageInAdvanceRow,
-            blobPartSize, attachmentV2MigrationReadTimeout, messageAttachmentIdsReadTimeout);
+            blobPartSize, attachmentV2MigrationReadTimeout, messageAttachmentIdsReadTimeout,
+            consistencyLevelRegular, consistencyLevelLightweightTransaction);
     }
 
     @Override
@@ -355,6 +422,8 @@ public class CassandraConfiguration {
             .add("blobPartSize", blobPartSize)
             .add("attachmentV2MigrationReadTimeout", attachmentV2MigrationReadTimeout)
             .add("messageAttachmentIdsReadTimeout", messageAttachmentIdsReadTimeout)
+            .add("consistencyLevelRegular", consistencyLevelRegular)
+            .add("consistencyLevelLightweightTransaction", consistencyLevelLightweightTransaction)
             .toString();
     }
 }
diff --git a/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/init/configuration/CassandraConsistenciesConfiguration.java b/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/init/configuration/CassandraConsistenciesConfiguration.java
new file mode 100644
index 0000000..e1f71e6
--- /dev/null
+++ b/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/init/configuration/CassandraConsistenciesConfiguration.java
@@ -0,0 +1,90 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one   *
+ * or more contributor license agreements.  See the NOTICE file *
+ * distributed with this work for additional information        *
+ * regarding copyright ownership.  The ASF licenses this file   *
+ * to you under the Apache License, Version 2.0 (the            *
+ * "License"); you may not use this file except in compliance   *
+ * with the License.  You may obtain a copy of the License at   *
+ *                                                              *
+ * http://www.apache.org/licenses/LICENSE-2.0                   *
+ *                                                              *
+ * Unless required by applicable law or agreed to in writing,   *
+ * software distributed under the License is distributed on an  *
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
+ * KIND, either express or implied.  See the License for the    *
+ * specific language governing permissions and limitations      *
+ * under the License.                                           *
+ ***************************************************************/
+
+package org.apache.james.backends.cassandra.init.configuration;
+
+import java.util.Objects;
+
+import com.datastax.driver.core.ConsistencyLevel;
+import com.google.common.base.MoreObjects;
+
+public class CassandraConsistenciesConfiguration {
+    public static ConsistencyLevel fromString(String value) {
+        switch (value) {
+            case "QUORUM":
+                return ConsistencyLevel.QUORUM;
+            case "LOCAL_QUORUM":
+                return ConsistencyLevel.LOCAL_QUORUM;
+            case "EACH_QUORUM":
+                return ConsistencyLevel.EACH_QUORUM;
+            case "SERIAL":
+                return ConsistencyLevel.SERIAL;
+            case "LOCAL_SERIAL":
+                return ConsistencyLevel.LOCAL_SERIAL;
+        }
+        throw new IllegalArgumentException("'" + value + "' is not a value ConsistencyLevel");
+    }
+
+    public static CassandraConsistenciesConfiguration fromConfiguration(CassandraConfiguration configuration) {
+        return new CassandraConsistenciesConfiguration(
+            fromString(configuration.getConsistencyLevelRegular()),
+            fromString(configuration.getConsistencyLevelLightweightTransaction()));
+    }
+
+    private final ConsistencyLevel regular;
+    private final ConsistencyLevel lightweightTransaction;
+
+    private CassandraConsistenciesConfiguration(ConsistencyLevel regular,
+                                                ConsistencyLevel lightweightTransaction) {
+        this.regular = regular;
+        this.lightweightTransaction = lightweightTransaction;
+    }
+
+    public ConsistencyLevel getRegular() {
+        return regular;
+    }
+
+    public ConsistencyLevel getLightweightTransaction() {
+        return lightweightTransaction;
+    }
+
+    @Override
+    public final boolean equals(Object o) {
+        if (o instanceof CassandraConsistenciesConfiguration) {
+            CassandraConsistenciesConfiguration that = (CassandraConsistenciesConfiguration) o;
+
+            return Objects.equals(this.regular, that.regular)
+                && Objects.equals(this.lightweightTransaction, that.lightweightTransaction);
+        }
+        return false;
+    }
+
+    @Override
+    public final int hashCode() {
+        return Objects.hash(regular, lightweightTransaction);
+    }
+
+    @Override
+    public String toString() {
+        return MoreObjects.toStringHelper(this)
+            .add("consistencyLevelRegular", regular)
+            .add("consistencyLevelLightweightTransaction", lightweightTransaction)
+            .toString();
+    }
+}
diff --git a/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/init/CassandraConfigurationReadingTest.java b/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/init/CassandraConfigurationReadingTest.java
index a6f5995..cf3b28d 100644
--- a/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/init/CassandraConfigurationReadingTest.java
+++ b/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/init/CassandraConfigurationReadingTest.java
@@ -60,6 +60,8 @@ class CassandraConfigurationReadingTest {
                 .blobPartSize(9)
                 .attachmentV2MigrationReadTimeout(10)
                 .messageAttachmentIdsReadTimeout(11)
+                .consistencyLevelRegular("LOCAL_QUORUM")
+                .consistencyLevelLightweightTransaction("LOCAL_SERIAL")
                 .build());
     }
 
diff --git a/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/init/CassandraConfigurationTest.java b/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/init/CassandraConfigurationTest.java
index 678b7f7..ce9f638 100644
--- a/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/init/CassandraConfigurationTest.java
+++ b/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/init/CassandraConfigurationTest.java
@@ -183,6 +183,20 @@ class CassandraConfigurationTest {
     }
 
     @Test
+    void consistencyLevelRegularShouldThrowOnNotSupportedValue() {
+        assertThatThrownBy(() -> CassandraConfiguration.builder()
+            .consistencyLevelRegular("ALL"))
+            .isInstanceOf(IllegalArgumentException.class);
+    }
+
+    @Test
+    void consistencyLevelLightweightTransactionShouldThrowOnNotSupportedValue() {
+        assertThatThrownBy(() -> CassandraConfiguration.builder()
+                .consistencyLevelLightweightTransaction("ALL"))
+                .isInstanceOf(IllegalArgumentException.class);
+    }
+
+    @Test
     void builderShouldCreateTheRightObject() {
         int aclMaxRetry = 1;
         int modSeqMaxRetry = 2;
@@ -195,6 +209,8 @@ class CassandraConfigurationTest {
         int blobPartSize = 10;
         int attachmentV2MigrationReadTimeout = 11;
         int messageAttachmentIdReadTimeout = 12;
+        String consistencyLevelRegular = "LOCAL_QUORUM";
+        String consistencyLevelLightweightTransaction = "LOCAL_SERIAL";
 
         CassandraConfiguration configuration = CassandraConfiguration.builder()
             .aclMaxRetry(aclMaxRetry)
@@ -208,6 +224,8 @@ class CassandraConfigurationTest {
             .blobPartSize(blobPartSize)
             .attachmentV2MigrationReadTimeout(attachmentV2MigrationReadTimeout)
             .messageAttachmentIdsReadTimeout(messageAttachmentIdReadTimeout)
+            .consistencyLevelRegular(consistencyLevelRegular)
+            .consistencyLevelLightweightTransaction(consistencyLevelLightweightTransaction)
             .build();
 
         SoftAssertions.assertSoftly(softly -> {
@@ -222,6 +240,8 @@ class CassandraConfigurationTest {
             softly.assertThat(configuration.getBlobPartSize()).isEqualTo(blobPartSize);
             softly.assertThat(configuration.getAttachmentV2MigrationReadTimeout()).isEqualTo(attachmentV2MigrationReadTimeout);
             softly.assertThat(configuration.getMessageAttachmentIdsReadTimeout()).isEqualTo(messageAttachmentIdReadTimeout);
+            softly.assertThat(configuration.getConsistencyLevelRegular()).isEqualTo(consistencyLevelRegular);
+            softly.assertThat(configuration.getConsistencyLevelLightweightTransaction()).isEqualTo(consistencyLevelLightweightTransaction);
         });
     }
 
diff --git a/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/init/configuration/CassandraConsistenciesConfigurationTest.java b/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/init/configuration/CassandraConsistenciesConfigurationTest.java
new file mode 100644
index 0000000..4e282dc
--- /dev/null
+++ b/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/init/configuration/CassandraConsistenciesConfigurationTest.java
@@ -0,0 +1,84 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one   *
+ * or more contributor license agreements.  See the NOTICE file *
+ * distributed with this work for additional information        *
+ * regarding copyright ownership.  The ASF licenses this file   *
+ * to you under the Apache License, Version 2.0 (the            *
+ * "License"); you may not use this file except in compliance   *
+ * with the License.  You may obtain a copy of the License at   *
+ *                                                              *
+ * http://www.apache.org/licenses/LICENSE-2.0                   *
+ *                                                              *
+ * Unless required by applicable law or agreed to in writing,   *
+ * software distributed under the License is distributed on an  *
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
+ * KIND, either express or implied.  See the License for the    *
+ * specific language governing permissions and limitations      *
+ * under the License.                                           *
+ ***************************************************************/
+
+package org.apache.james.backends.cassandra.init.configuration;
+
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.assertj.core.api.Assertions.assertThatThrownBy;
+
+import java.util.stream.Stream;
+
+import org.assertj.core.api.SoftAssertions;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.Arguments;
+import org.junit.jupiter.params.provider.MethodSource;
+
+import com.datastax.driver.core.ConsistencyLevel;
+import nl.jqno.equalsverifier.EqualsVerifier;
+
+class CassandraConsistenciesConfigurationTest {
+    @Test
+    void cassandraConsistenciesConfigurationShouldRespectBeanContract() {
+        EqualsVerifier.forClass(CassandraConsistenciesConfiguration.class)
+            .verify();
+    }
+
+    @Test
+    void fromStringShouldThrowOnInvalidValue() {
+        assertThatThrownBy(() -> CassandraConsistenciesConfiguration.fromString("INVALID"))
+            .isInstanceOf(IllegalArgumentException.class);
+    }
+
+    @ParameterizedTest
+    @MethodSource
+    void fromStringShouldInstantiateTheRightValue(String rawValue, ConsistencyLevel expected) {
+        assertThat(CassandraConsistenciesConfiguration.fromString(rawValue))
+            .isEqualTo(expected);
+    }
+
+    private static Stream<Arguments> fromStringShouldInstantiateTheRightValue() {
+        return Stream.of(
+            Arguments.of("QUORUM", ConsistencyLevel.QUORUM),
+            Arguments.of("LOCAL_QUORUM", ConsistencyLevel.LOCAL_QUORUM),
+            Arguments.of("EACH_QUORUM", ConsistencyLevel.EACH_QUORUM),
+            Arguments.of("SERIAL", ConsistencyLevel.SERIAL),
+            Arguments.of("LOCAL_SERIAL", ConsistencyLevel.LOCAL_SERIAL)
+        );
+    }
+
+    @Test
+    void fromConfigurationShouldTakeTheValues() {
+        String consistencyLevelRegular = "LOCAL_QUORUM";
+        String consistencyLevelLightweightTransaction = "LOCAL_SERIAL";
+
+        CassandraConfiguration configuration = CassandraConfiguration.builder()
+            .consistencyLevelRegular(consistencyLevelRegular)
+            .consistencyLevelLightweightTransaction(consistencyLevelLightweightTransaction)
+            .build();
+
+        CassandraConsistenciesConfiguration consistenciesConfiguration = CassandraConsistenciesConfiguration
+            .fromConfiguration(configuration);
+
+        SoftAssertions.assertSoftly(softly -> {
+            softly.assertThat(consistenciesConfiguration.getRegular()).isEqualTo(ConsistencyLevel.LOCAL_QUORUM);
+            softly.assertThat(consistenciesConfiguration.getLightweightTransaction()).isEqualTo(ConsistencyLevel.LOCAL_SERIAL);
+        });
+    }
+}
\ No newline at end of file
diff --git a/backends-common/cassandra/src/test/resources/configuration-reader-test/cassandra.properties b/backends-common/cassandra/src/test/resources/configuration-reader-test/cassandra.properties
index 27f4430..10ca4dd 100644
--- a/backends-common/cassandra/src/test/resources/configuration-reader-test/cassandra.properties
+++ b/backends-common/cassandra/src/test/resources/configuration-reader-test/cassandra.properties
@@ -9,3 +9,5 @@ chunk.size.expunge=8
 mailbox.blob.part.size=9
 attachment.v2.migration.read.timeout=10
 message.attachmentids.read.timeout=11
+cassandra.consistency_level.regular=LOCAL_QUORUM
+cassandra.consistency_level.lightweight_transaction=LOCAL_SERIAL
\ No newline at end of file
diff --git a/dockerfiles/run/guice/cassandra-ldap/destination/conf/cassandra.properties b/dockerfiles/run/guice/cassandra-ldap/destination/conf/cassandra.properties
index 0e19020..c1bbe41 100644
--- a/dockerfiles/run/guice/cassandra-ldap/destination/conf/cassandra.properties
+++ b/dockerfiles/run/guice/cassandra-ldap/destination/conf/cassandra.properties
@@ -23,3 +23,10 @@ cassandra.retryConnection.minDelay=5000
 # chunk.size.message.read=100
 # chunk.size.expunge=100
 # mailbox.blob.part.size=102400
+
+## Consistency levels used for common queries
+## Read https://docs.datastax.com/en/cassandra-oss/3.x/cassandra/dml/dmlConfigConsistency.html
+# QUORUM, LOCAL_QUORUM, or EACH_QUORUM
+# cassandra.consistency_level.regular=QUORUM
+# SERIAL or LOCAL_SERIAL
+# cassandra.consistency_level.lightweight_transaction=SERIAL
diff --git a/dockerfiles/run/guice/cassandra-rabbitmq-ldap/destination/conf/cassandra.properties b/dockerfiles/run/guice/cassandra-rabbitmq-ldap/destination/conf/cassandra.properties
index 137b2cc..e7dff97 100644
--- a/dockerfiles/run/guice/cassandra-rabbitmq-ldap/destination/conf/cassandra.properties
+++ b/dockerfiles/run/guice/cassandra-rabbitmq-ldap/destination/conf/cassandra.properties
@@ -33,3 +33,10 @@ cassandra.retryConnection.minDelay=5000
 # chunk.size.message.read=100
 # chunk.size.expunge=100
 # mailbox.blob.part.size=102400
+
+## Consistency levels used for common queries
+## Read https://docs.datastax.com/en/cassandra-oss/3.x/cassandra/dml/dmlConfigConsistency.html
+# QUORUM, LOCAL_QUORUM, or EACH_QUORUM
+# cassandra.consistency_level.regular=QUORUM
+# SERIAL or LOCAL_SERIAL
+# cassandra.consistency_level.lightweight_transaction=SERIAL
diff --git a/dockerfiles/run/guice/cassandra-rabbitmq/destination/conf/cassandra.properties b/dockerfiles/run/guice/cassandra-rabbitmq/destination/conf/cassandra.properties
index 137b2cc..e7dff97 100644
--- a/dockerfiles/run/guice/cassandra-rabbitmq/destination/conf/cassandra.properties
+++ b/dockerfiles/run/guice/cassandra-rabbitmq/destination/conf/cassandra.properties
@@ -33,3 +33,10 @@ cassandra.retryConnection.minDelay=5000
 # chunk.size.message.read=100
 # chunk.size.expunge=100
 # mailbox.blob.part.size=102400
+
+## Consistency levels used for common queries
+## Read https://docs.datastax.com/en/cassandra-oss/3.x/cassandra/dml/dmlConfigConsistency.html
+# QUORUM, LOCAL_QUORUM, or EACH_QUORUM
+# cassandra.consistency_level.regular=QUORUM
+# SERIAL or LOCAL_SERIAL
+# cassandra.consistency_level.lightweight_transaction=SERIAL
diff --git a/dockerfiles/run/guice/cassandra/destination/conf/cassandra.properties b/dockerfiles/run/guice/cassandra/destination/conf/cassandra.properties
index b96beef..1e1bae2 100644
--- a/dockerfiles/run/guice/cassandra/destination/conf/cassandra.properties
+++ b/dockerfiles/run/guice/cassandra/destination/conf/cassandra.properties
@@ -33,3 +33,10 @@ cassandra.retryConnection.minDelay=5000
 # chunk.size.message.read=100
 # chunk.size.expunge=100
 # mailbox.blob.part.size=102400
+
+## Consistency levels used for common queries
+## Read https://docs.datastax.com/en/cassandra-oss/3.x/cassandra/dml/dmlConfigConsistency.html
+# QUORUM, LOCAL_QUORUM, or EACH_QUORUM
+# cassandra.consistency_level.regular=QUORUM
+# SERIAL or LOCAL_SERIAL
+# cassandra.consistency_level.lightweight_transaction=SERIAL
diff --git a/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/CassandraSessionModule.java b/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/CassandraSessionModule.java
index d8004f2..165ce05 100644
--- a/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/CassandraSessionModule.java
+++ b/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/CassandraSessionModule.java
@@ -29,6 +29,7 @@ import org.apache.james.backends.cassandra.init.KeyspaceFactory;
 import org.apache.james.backends.cassandra.init.ResilientClusterProvider;
 import org.apache.james.backends.cassandra.init.SessionWithInitializedTablesFactory;
 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.apache.james.backends.cassandra.init.configuration.KeyspaceConfiguration;
 import org.apache.james.backends.cassandra.utils.CassandraHealthCheck;
@@ -135,6 +136,13 @@ public class CassandraSessionModule extends AbstractModule {
         }
     }
 
+    @VisibleForTesting
+    @Provides
+    @Singleton
+    CassandraConsistenciesConfiguration provideCassandraConsistenciesConfiguration(CassandraConfiguration configuration) {
+        return CassandraConsistenciesConfiguration.fromConfiguration(configuration);
+    }
+
     @Provides
     @Singleton
     ClusterConfiguration provideClusterConfiguration(PropertiesProvider propertiesProvider) throws ConfigurationException {
diff --git a/src/site/xdoc/server/config-cassandra.xml b/src/site/xdoc/server/config-cassandra.xml
index 34a05df..e725404 100644
--- a/src/site/xdoc/server/config-cassandra.xml
+++ b/src/site/xdoc/server/config-cassandra.xml
@@ -136,6 +136,12 @@
         <dd>Optional. Defaults to 50.<br/> Controls the number of messages to be expunged in parallel.</dd>
         <dt><strong>mailbox.blob.part.size</strong></dt>
         <dd>Optional. Defaults to 102400 (100KB).<br/> Controls the size of blob parts used to store messages.</dd>
+
+        <dt><strong>Allows specifying the driver default consistency level.</strong></dt>
+        <dt><strong>cassandra.consistency_level.regular</strong></dt>
+        <dd>Optional. Defaults to QUORUM.<br/> <a href="https://docs.datastax.com/en/cassandra-oss/3.x/cassandra/dml/dmlConfigConsistency.html">QUORUM, LOCAL_QUORUM, or EACH_QUORUM</a>.</dd>
+        <dt><strong>cassandra.consistency_level.lightweight_transaction</strong></dt>
+        <dd>Optional. Defaults to SERIAL.<br/> <a href="https://docs.datastax.com/en/cassandra-oss/3.x/cassandra/dml/dmlConfigConsistency.html">SERIAL or LOCAL_SERIAL</a>.</dd>
       </dl>
 
 


---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org


[james-project] 08/09: JAMES-3214 Move TestingMailRepositoryLoader out of test package

Posted by bt...@apache.org.
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 79823d42b9edc02ee5fe7a802c43d0a5f1422e08
Author: Benoit Tellier <bt...@linagora.com>
AuthorDate: Tue Jun 16 10:37:08 2020 +0700

    JAMES-3214 Move TestingMailRepositoryLoader out of test package
    
    This simplifies dependency handling (test package transitivity).
---
 server/data/data-memory/pom.xml                                     | 1 -
 .../james/mailrepository/memory/SimpleMailRepositoryLoader.java}    | 2 +-
 .../james/mailrepository/memory/MemoryMailRepositoryStoreTest.java  | 4 ++--
 server/mailet/mailets/pom.xml                                       | 6 ------
 .../james/transport/mailets/ToSenderDomainRepositoryTest.java       | 4 ++--
 server/protocols/protocols-smtp/pom.xml                             | 6 ------
 .../src/test/java/org/apache/james/smtpserver/SMTPServerTest.java   | 4 ++--
 server/protocols/webadmin/webadmin-mailrepository/pom.xml           | 6 ------
 .../apache/james/webadmin/routes/MailRepositoriesRoutesTest.java    | 4 ++--
 .../org/apache/james/webadmin/service/ReprocessingServiceTest.java  | 4 ++--
 10 files changed, 11 insertions(+), 30 deletions(-)

diff --git a/server/data/data-memory/pom.xml b/server/data/data-memory/pom.xml
index 214e522..9515716 100644
--- a/server/data/data-memory/pom.xml
+++ b/server/data/data-memory/pom.xml
@@ -76,7 +76,6 @@
         <dependency>
             <groupId>${james.groupId}</groupId>
             <artifactId>james-server-mailrepository-memory</artifactId>
-            <scope>test</scope>
         </dependency>
         <dependency>
             <groupId>${james.groupId}</groupId>
diff --git a/server/data/data-memory/src/test/java/org/apache/james/mailrepository/memory/TestingMailRepositoryLoader.java b/server/data/data-memory/src/main/java/org/apache/james/mailrepository/memory/SimpleMailRepositoryLoader.java
similarity index 96%
rename from server/data/data-memory/src/test/java/org/apache/james/mailrepository/memory/TestingMailRepositoryLoader.java
rename to server/data/data-memory/src/main/java/org/apache/james/mailrepository/memory/SimpleMailRepositoryLoader.java
index 025d5a6..d4b587f 100644
--- a/server/data/data-memory/src/test/java/org/apache/james/mailrepository/memory/TestingMailRepositoryLoader.java
+++ b/server/data/data-memory/src/main/java/org/apache/james/mailrepository/memory/SimpleMailRepositoryLoader.java
@@ -23,7 +23,7 @@ import org.apache.james.mailrepository.api.MailRepository;
 import org.apache.james.mailrepository.api.MailRepositoryStore;
 import org.apache.james.mailrepository.api.MailRepositoryUrl;
 
-public class TestingMailRepositoryLoader implements MailRepositoryLoader {
+public class SimpleMailRepositoryLoader implements MailRepositoryLoader {
     @Override
     public MailRepository load(String fullyQualifiedClassName, MailRepositoryUrl url) throws MailRepositoryStore.MailRepositoryStoreException {
         if (fullyQualifiedClassName.equals(MemoryMailRepository.class.getCanonicalName())) {
diff --git a/server/data/data-memory/src/test/java/org/apache/james/mailrepository/memory/MemoryMailRepositoryStoreTest.java b/server/data/data-memory/src/test/java/org/apache/james/mailrepository/memory/MemoryMailRepositoryStoreTest.java
index ffb36e2..7f8692e 100644
--- a/server/data/data-memory/src/test/java/org/apache/james/mailrepository/memory/MemoryMailRepositoryStoreTest.java
+++ b/server/data/data-memory/src/test/java/org/apache/james/mailrepository/memory/MemoryMailRepositoryStoreTest.java
@@ -47,14 +47,14 @@ public class MemoryMailRepositoryStoreTest {
 
     private MemoryMailRepositoryUrlStore urlStore;
 
-    private TestingMailRepositoryLoader loader;
+    private SimpleMailRepositoryLoader loader;
     private MemoryMailRepositoryStore repositoryStore;
     private FileSystemImpl fileSystem;
     private Configuration configuration;
 
     @Before
     public void setUp() throws Exception {
-        loader = new TestingMailRepositoryLoader();
+        loader = new SimpleMailRepositoryLoader();
         configuration = Configuration.builder()
             .workingDirectory("../")
             .configurationFromClasspath()
diff --git a/server/mailet/mailets/pom.xml b/server/mailet/mailets/pom.xml
index 6d88d25..d0b3791 100644
--- a/server/mailet/mailets/pom.xml
+++ b/server/mailet/mailets/pom.xml
@@ -127,12 +127,6 @@
         </dependency>
         <dependency>
             <groupId>${james.groupId}</groupId>
-            <artifactId>james-server-data-memory</artifactId>
-            <type>test-jar</type>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>${james.groupId}</groupId>
             <artifactId>james-server-dnsservice-api</artifactId>
         </dependency>
         <dependency>
diff --git a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/ToSenderDomainRepositoryTest.java b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/ToSenderDomainRepositoryTest.java
index ee21b37..f45f50c 100644
--- a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/ToSenderDomainRepositoryTest.java
+++ b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/ToSenderDomainRepositoryTest.java
@@ -38,7 +38,7 @@ import org.apache.james.mailrepository.memory.MailRepositoryStoreConfiguration;
 import org.apache.james.mailrepository.memory.MemoryMailRepository;
 import org.apache.james.mailrepository.memory.MemoryMailRepositoryStore;
 import org.apache.james.mailrepository.memory.MemoryMailRepositoryUrlStore;
-import org.apache.james.mailrepository.memory.TestingMailRepositoryLoader;
+import org.apache.james.mailrepository.memory.SimpleMailRepositoryLoader;
 import org.apache.mailet.Mail;
 import org.apache.mailet.base.MailAddressFixture;
 import org.apache.mailet.base.test.FakeMail;
@@ -74,7 +74,7 @@ class ToSenderDomainRepositoryTest {
                 MemoryMailRepository.class.getName(),
                 new BaseHierarchicalConfiguration()));
 
-        mailRepositoryStore = new MemoryMailRepositoryStore(urlStore, new TestingMailRepositoryLoader(), configuration);
+        mailRepositoryStore = new MemoryMailRepositoryStore(urlStore, new SimpleMailRepositoryLoader(), configuration);
         mailRepositoryStore.init();
     }
 
diff --git a/server/protocols/protocols-smtp/pom.xml b/server/protocols/protocols-smtp/pom.xml
index c498d84..c4dadc1 100644
--- a/server/protocols/protocols-smtp/pom.xml
+++ b/server/protocols/protocols-smtp/pom.xml
@@ -62,12 +62,6 @@
         </dependency>
         <dependency>
             <groupId>${james.groupId}</groupId>
-            <artifactId>james-server-data-memory</artifactId>
-            <type>test-jar</type>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>${james.groupId}</groupId>
             <artifactId>james-server-dnsservice-api</artifactId>
         </dependency>
         <dependency>
diff --git a/server/protocols/protocols-smtp/src/test/java/org/apache/james/smtpserver/SMTPServerTest.java b/server/protocols/protocols-smtp/src/test/java/org/apache/james/smtpserver/SMTPServerTest.java
index 04bda85..98d4975 100644
--- a/server/protocols/protocols-smtp/src/test/java/org/apache/james/smtpserver/SMTPServerTest.java
+++ b/server/protocols/protocols-smtp/src/test/java/org/apache/james/smtpserver/SMTPServerTest.java
@@ -60,7 +60,7 @@ import org.apache.james.mailrepository.memory.MailRepositoryStoreConfiguration;
 import org.apache.james.mailrepository.memory.MemoryMailRepository;
 import org.apache.james.mailrepository.memory.MemoryMailRepositoryStore;
 import org.apache.james.mailrepository.memory.MemoryMailRepositoryUrlStore;
-import org.apache.james.mailrepository.memory.TestingMailRepositoryLoader;
+import org.apache.james.mailrepository.memory.SimpleMailRepositoryLoader;
 import org.apache.james.metrics.api.Metric;
 import org.apache.james.metrics.api.MetricFactory;
 import org.apache.james.metrics.tests.RecordingMetricFactory;
@@ -246,7 +246,7 @@ public class SMTPServerTest {
                 MemoryMailRepository.class.getName(),
                 new BaseHierarchicalConfiguration()));
 
-        mailRepositoryStore = new MemoryMailRepositoryStore(urlStore, new TestingMailRepositoryLoader(), configuration);
+        mailRepositoryStore = new MemoryMailRepositoryStore(urlStore, new SimpleMailRepositoryLoader(), configuration);
         mailRepositoryStore.init();
     }
 
diff --git a/server/protocols/webadmin/webadmin-mailrepository/pom.xml b/server/protocols/webadmin/webadmin-mailrepository/pom.xml
index 866a766..9b0723d 100644
--- a/server/protocols/webadmin/webadmin-mailrepository/pom.xml
+++ b/server/protocols/webadmin/webadmin-mailrepository/pom.xml
@@ -64,12 +64,6 @@
         </dependency>
         <dependency>
             <groupId>${james.groupId}</groupId>
-            <artifactId>james-server-data-memory</artifactId>
-            <type>test-jar</type>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>${james.groupId}</groupId>
             <artifactId>james-server-queue-api</artifactId>
         </dependency>
         <dependency>
diff --git a/server/protocols/webadmin/webadmin-mailrepository/src/test/java/org/apache/james/webadmin/routes/MailRepositoriesRoutesTest.java b/server/protocols/webadmin/webadmin-mailrepository/src/test/java/org/apache/james/webadmin/routes/MailRepositoriesRoutesTest.java
index d1806a2..1ad92ec 100644
--- a/server/protocols/webadmin/webadmin-mailrepository/src/test/java/org/apache/james/webadmin/routes/MailRepositoriesRoutesTest.java
+++ b/server/protocols/webadmin/webadmin-mailrepository/src/test/java/org/apache/james/webadmin/routes/MailRepositoriesRoutesTest.java
@@ -59,7 +59,7 @@ import org.apache.james.mailrepository.memory.MailRepositoryStoreConfiguration;
 import org.apache.james.mailrepository.memory.MemoryMailRepository;
 import org.apache.james.mailrepository.memory.MemoryMailRepositoryStore;
 import org.apache.james.mailrepository.memory.MemoryMailRepositoryUrlStore;
-import org.apache.james.mailrepository.memory.TestingMailRepositoryLoader;
+import org.apache.james.mailrepository.memory.SimpleMailRepositoryLoader;
 import org.apache.james.queue.api.MailQueueFactory;
 import org.apache.james.queue.api.MailQueueName;
 import org.apache.james.queue.api.ManageableMailQueue;
@@ -1803,7 +1803,7 @@ public class MailRepositoriesRoutesTest {
                 ImmutableList.of(new Protocol("other")),
                 MemoryMailRepository.class.getName(),
                 new BaseHierarchicalConfiguration()));
-        mailRepositoryStore = new MemoryMailRepositoryStore(urlStore, new TestingMailRepositoryLoader(), configuration);
+        mailRepositoryStore = new MemoryMailRepositoryStore(urlStore, new SimpleMailRepositoryLoader(), configuration);
 
         mailRepositoryStore.init();
     }
diff --git a/server/protocols/webadmin/webadmin-mailrepository/src/test/java/org/apache/james/webadmin/service/ReprocessingServiceTest.java b/server/protocols/webadmin/webadmin-mailrepository/src/test/java/org/apache/james/webadmin/service/ReprocessingServiceTest.java
index 02cbc0d..c191cf5 100644
--- a/server/protocols/webadmin/webadmin-mailrepository/src/test/java/org/apache/james/webadmin/service/ReprocessingServiceTest.java
+++ b/server/protocols/webadmin/webadmin-mailrepository/src/test/java/org/apache/james/webadmin/service/ReprocessingServiceTest.java
@@ -35,7 +35,7 @@ import org.apache.james.mailrepository.memory.MailRepositoryStoreConfiguration;
 import org.apache.james.mailrepository.memory.MemoryMailRepository;
 import org.apache.james.mailrepository.memory.MemoryMailRepositoryStore;
 import org.apache.james.mailrepository.memory.MemoryMailRepositoryUrlStore;
-import org.apache.james.mailrepository.memory.TestingMailRepositoryLoader;
+import org.apache.james.mailrepository.memory.SimpleMailRepositoryLoader;
 import org.apache.james.queue.api.MailQueueFactory;
 import org.apache.james.queue.api.MailQueueName;
 import org.apache.james.queue.api.ManageableMailQueue;
@@ -187,7 +187,7 @@ public class ReprocessingServiceTest {
                 MemoryMailRepository.class.getName(),
                 new BaseHierarchicalConfiguration()));
 
-        MemoryMailRepositoryStore mailRepositoryStore = new MemoryMailRepositoryStore(urlStore, new TestingMailRepositoryLoader(), configuration);
+        MemoryMailRepositoryStore mailRepositoryStore = new MemoryMailRepositoryStore(urlStore, new SimpleMailRepositoryLoader(), configuration);
         mailRepositoryStore.init();
         return mailRepositoryStore;
     }


---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org


[james-project] 09/09: JAMES-3214 Move MailRepositoryStore related classes to mailRepository-api

Posted by bt...@apache.org.
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 6fc0a85c214fc767b85725b0f339386f1bbb2dec
Author: Benoit Tellier <bt...@linagora.com>
AuthorDate: Tue Jun 16 11:46:06 2020 +0700

    JAMES-3214 Move MailRepositoryStore related classes to mailRepository-api
    
    Without this interface it is impossible to generate MailRepository that the calling code will rely on.
    
    mailRepository-api furthermore have many dependencies that are orthogonal to data-api and should not be included in it.
---
 mailbox/plugin/quota-search-scanning/pom.xml       |   4 +
 .../apache/james/managesieve/jsieve/Parser.java    |  22 +--
 server/container/spring/pom.xml                    |   4 +
 .../resources/META-INF/spring/loaders-context.xml  |   6 +-
 server/data/data-api/pom.xml                       |  15 +-
 server/data/data-file/pom.xml                      |   4 +
 .../mailrepository/file/FileMailRepository.java    |   2 +-
 server/data/data-jdbc/pom.xml                      |   4 +
 .../mailrepository/jdbc/JDBCMailRepository.java    |   2 +-
 server/data/data-jpa/pom.xml                       |  10 +
 .../jpa/JPAMailRepositoryUrlStoreTest.java         |   2 +-
 server/data/data-memory/pom.xml                    |   4 -
 server/mailet/mailetcontainer-camel/pom.xml        |   4 +
 server/mailet/mailets/pom.xml                      |   4 +
 server/mailrepository/mailrepository-api/pom.xml   |   1 +
 .../james/mailrepository}/api/Initializable.java   |   2 +-
 .../mailrepository/api/MailRepositoryStore.java    | 214 ++++++++++-----------
 .../mailrepository/api/MailRepositoryUrlStore.java |   0
 .../MailRepositoryUrlStoreContract.java            |   4 +-
 .../CassandraMailRepositoryUrlModule.java          |   0
 .../cassandra/CassandraMailRepositoryUrlStore.java |   0
 .../james/mailrepository/cassandra/UrlsDao.java    |   0
 .../james/mailrepository/cassandra/UrlsTable.java  |   0
 .../CassandraMailRepositoryUrlStoreExtension.java  |   0
 .../CassandraMailRepositoryUrlStoreTest.java       |   2 +-
 .../mailrepository/mailrepository-memory/pom.xml   |  23 +++
 .../memory/MailRepositoryLoader.java               |   0
 .../memory/MailRepositoryStoreConfiguration.java   |   0
 .../memory/MemoryMailRepositoryStore.java          |   2 +-
 .../memory/MemoryMailRepositoryUrlStore.java       |   0
 .../memory/SimpleMailRepositoryLoader.java         |   0
 .../MailRepositoryStoreConfigurationTest.java      |   0
 .../memory/MemoryMailRepositoryStoreTest.java      |   0
 .../MemoryMailRepositoryUrlStoreExtension.java     |   0
 .../memory/MemoryMailRepositoryUrlStoreTest.java   |   2 +-
 .../src/test/resources/mailrepositorystore.xml     |   0
 36 files changed, 187 insertions(+), 150 deletions(-)

diff --git a/mailbox/plugin/quota-search-scanning/pom.xml b/mailbox/plugin/quota-search-scanning/pom.xml
index 470337d..289580e 100644
--- a/mailbox/plugin/quota-search-scanning/pom.xml
+++ b/mailbox/plugin/quota-search-scanning/pom.xml
@@ -76,6 +76,10 @@
         </dependency>
         <dependency>
             <groupId>${james.groupId}</groupId>
+            <artifactId>james-server-util</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>${james.groupId}</groupId>
             <artifactId>metrics-tests</artifactId>
             <scope>test</scope>
         </dependency>
diff --git a/protocols/managesieve/src/main/java/org/apache/james/managesieve/jsieve/Parser.java b/protocols/managesieve/src/main/java/org/apache/james/managesieve/jsieve/Parser.java
index f6972d1..a935dc5 100644
--- a/protocols/managesieve/src/main/java/org/apache/james/managesieve/jsieve/Parser.java
+++ b/protocols/managesieve/src/main/java/org/apache/james/managesieve/jsieve/Parser.java
@@ -24,8 +24,6 @@ import java.io.ByteArrayInputStream;
 import java.util.ArrayList;
 import java.util.List;
 
-import javax.annotation.Resource;
-
 import org.apache.james.managesieve.api.SieveParser;
 import org.apache.james.managesieve.api.SyntaxException;
 import org.apache.jsieve.ConfigurationManager;
@@ -36,24 +34,18 @@ public class Parser implements SieveParser {
     
     private static final List<String> EMPTY_WARNINGS = new ArrayList<>(0);
     
-    private SieveFactory sieveFactory;
+    private final SieveFactory sieveFactory;
+
+    public Parser(SieveFactory sieveFactory) {
+        this.sieveFactory = sieveFactory;
+    }
 
     public Parser() throws Exception {
-        setConfigurationManager(new ConfigurationManager());
+        this(new ConfigurationManager());
     }
 
     public Parser(ConfigurationManager manager) {
-        setConfigurationManager(manager);
-    }
-    
-    /**
-     * setConfigurationManager.
-     *
-     * @param manager The <code>ConfigurationManager</code> to set
-     */
-    @Resource(name = "jsieveconfigurationmanager")
-    public void setConfigurationManager(ConfigurationManager manager) {
-        sieveFactory = manager.build();
+        this(manager.build());
     }
 
     @Override
diff --git a/server/container/spring/pom.xml b/server/container/spring/pom.xml
index dcb87f5..ce13b70 100644
--- a/server/container/spring/pom.xml
+++ b/server/container/spring/pom.xml
@@ -87,6 +87,10 @@
         </dependency>
         <dependency>
             <groupId>${james.groupId}</groupId>
+            <artifactId>james-server-mailrepository-api</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>${james.groupId}</groupId>
             <artifactId>james-server-protocols-library</artifactId>
             <exclusions>
                 <exclusion>
diff --git a/server/container/spring/src/main/resources/META-INF/spring/loaders-context.xml b/server/container/spring/src/main/resources/META-INF/spring/loaders-context.xml
index ccfc959..5fa8873 100644
--- a/server/container/spring/src/main/resources/META-INF/spring/loaders-context.xml
+++ b/server/container/spring/src/main/resources/META-INF/spring/loaders-context.xml
@@ -121,10 +121,6 @@
     <!--<bean id="filesystem" class="org.apache.james.container.spring.filesystem.FileSystemImpl" autowire="byName"/>-->
     <bean id="filesystem" class="org.apache.james.container.spring.filesystem.ResourceLoaderFileSystem"/>
 
-    <bean id="sieveparser" class="org.apache.james.managesieve.jsieve.Parser">
-        <property name="configurationManager" ref="configurationmanager"/>
-    </bean>
-
-    <bean id="configurationmanager" class="org.apache.jsieve.ConfigurationManager"/>
+    <bean id="sieveparser" class="org.apache.james.managesieve.jsieve.Parser"/>
 
 </beans>
diff --git a/server/data/data-api/pom.xml b/server/data/data-api/pom.xml
index 0968964..ffe0382 100644
--- a/server/data/data-api/pom.xml
+++ b/server/data/data-api/pom.xml
@@ -39,11 +39,12 @@
         </dependency>
         <dependency>
             <groupId>${james.groupId}</groupId>
-            <artifactId>james-server-mailrepository-api</artifactId>
+            <artifactId>testing-base</artifactId>
+            <scope>test</scope>
         </dependency>
         <dependency>
-            <groupId>${james.groupId}</groupId>
-            <artifactId>testing-base</artifactId>
+            <groupId>io.projectreactor</groupId>
+            <artifactId>reactor-core</artifactId>
             <scope>test</scope>
         </dependency>
         <dependency>
@@ -51,14 +52,6 @@
             <artifactId>commons-configuration2</artifactId>
         </dependency>
         <dependency>
-            <groupId>com.google.guava</groupId>
-            <artifactId>guava</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>com.sun.mail</groupId>
-            <artifactId>javax.mail</artifactId>
-        </dependency>
-        <dependency>
             <groupId>org.slf4j</groupId>
             <artifactId>jcl-over-slf4j</artifactId>
             <scope>test</scope>
diff --git a/server/data/data-file/pom.xml b/server/data/data-file/pom.xml
index 65b4b11..5c1cf2e 100644
--- a/server/data/data-file/pom.xml
+++ b/server/data/data-file/pom.xml
@@ -81,6 +81,10 @@
         <dependency>
             <groupId>${james.groupId}</groupId>
             <artifactId>james-server-mailrepository-api</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>${james.groupId}</groupId>
+            <artifactId>james-server-mailrepository-api</artifactId>
             <type>test-jar</type>
             <scope>test</scope>
         </dependency>
diff --git a/server/data/data-file/src/main/java/org/apache/james/mailrepository/file/FileMailRepository.java b/server/data/data-file/src/main/java/org/apache/james/mailrepository/file/FileMailRepository.java
index 7ebcd31..c5cba49 100644
--- a/server/data/data-file/src/main/java/org/apache/james/mailrepository/file/FileMailRepository.java
+++ b/server/data/data-file/src/main/java/org/apache/james/mailrepository/file/FileMailRepository.java
@@ -40,9 +40,9 @@ import org.apache.commons.configuration2.HierarchicalConfiguration;
 import org.apache.commons.configuration2.tree.ImmutableNode;
 import org.apache.james.filesystem.api.FileSystem;
 import org.apache.james.lifecycle.api.Configurable;
+import org.apache.james.mailrepository.api.Initializable;
 import org.apache.james.mailrepository.api.MailKey;
 import org.apache.james.mailrepository.api.MailRepository;
-import org.apache.james.repository.api.Initializable;
 import org.apache.james.repository.file.FilePersistentObjectRepository;
 import org.apache.james.repository.file.FilePersistentStreamRepository;
 import org.apache.james.server.core.MimeMessageCopyOnWriteProxy;
diff --git a/server/data/data-jdbc/pom.xml b/server/data/data-jdbc/pom.xml
index 03b7786..270e53b 100644
--- a/server/data/data-jdbc/pom.xml
+++ b/server/data/data-jdbc/pom.xml
@@ -72,6 +72,10 @@
         <dependency>
             <groupId>${james.groupId}</groupId>
             <artifactId>james-server-mailrepository-api</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>${james.groupId}</groupId>
+            <artifactId>james-server-mailrepository-api</artifactId>
             <type>test-jar</type>
             <scope>test</scope>
         </dependency>
diff --git a/server/data/data-jdbc/src/main/java/org/apache/james/mailrepository/jdbc/JDBCMailRepository.java b/server/data/data-jdbc/src/main/java/org/apache/james/mailrepository/jdbc/JDBCMailRepository.java
index 344c4c3..4b25b4f 100644
--- a/server/data/data-jdbc/src/main/java/org/apache/james/mailrepository/jdbc/JDBCMailRepository.java
+++ b/server/data/data-jdbc/src/main/java/org/apache/james/mailrepository/jdbc/JDBCMailRepository.java
@@ -56,9 +56,9 @@ import org.apache.commons.lang3.SerializationUtils;
 import org.apache.james.core.MailAddress;
 import org.apache.james.filesystem.api.FileSystem;
 import org.apache.james.lifecycle.api.Configurable;
+import org.apache.james.mailrepository.api.Initializable;
 import org.apache.james.mailrepository.api.MailKey;
 import org.apache.james.mailrepository.api.MailRepository;
-import org.apache.james.repository.api.Initializable;
 import org.apache.james.repository.file.FilePersistentStreamRepository;
 import org.apache.james.server.core.MailImpl;
 import org.apache.james.server.core.MimeMessageCopyOnWriteProxy;
diff --git a/server/data/data-jpa/pom.xml b/server/data/data-jpa/pom.xml
index f2cba25..bcce435 100644
--- a/server/data/data-jpa/pom.xml
+++ b/server/data/data-jpa/pom.xml
@@ -78,6 +78,16 @@
         </dependency>
         <dependency>
             <groupId>${james.groupId}</groupId>
+            <artifactId>james-server-mailrepository-api</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>${james.groupId}</groupId>
+            <artifactId>james-server-mailrepository-api</artifactId>
+            <type>test-jar</type>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>${james.groupId}</groupId>
             <artifactId>testing-base</artifactId>
             <scope>test</scope>
         </dependency>
diff --git a/server/data/data-jpa/src/test/java/org/apache/james/mailrepository/jpa/JPAMailRepositoryUrlStoreTest.java b/server/data/data-jpa/src/test/java/org/apache/james/mailrepository/jpa/JPAMailRepositoryUrlStoreTest.java
index 5a58174..ed8b693 100644
--- a/server/data/data-jpa/src/test/java/org/apache/james/mailrepository/jpa/JPAMailRepositoryUrlStoreTest.java
+++ b/server/data/data-jpa/src/test/java/org/apache/james/mailrepository/jpa/JPAMailRepositoryUrlStoreTest.java
@@ -19,7 +19,7 @@
 
 package org.apache.james.mailrepository.jpa;
 
-import org.apache.james.mailrepository.api.MailRepositoryUrlStoreContract;
+import org.apache.james.mailrepository.MailRepositoryUrlStoreContract;
 import org.junit.jupiter.api.extension.ExtendWith;
 
 @ExtendWith(JPAMailRepositoryUrlStoreExtension.class)
diff --git a/server/data/data-memory/pom.xml b/server/data/data-memory/pom.xml
index 9515716..8546b26 100644
--- a/server/data/data-memory/pom.xml
+++ b/server/data/data-memory/pom.xml
@@ -75,10 +75,6 @@
         </dependency>
         <dependency>
             <groupId>${james.groupId}</groupId>
-            <artifactId>james-server-mailrepository-memory</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>${james.groupId}</groupId>
             <artifactId>testing-base</artifactId>
             <scope>test</scope>
         </dependency>
diff --git a/server/mailet/mailetcontainer-camel/pom.xml b/server/mailet/mailetcontainer-camel/pom.xml
index e06eb72..0129e39 100644
--- a/server/mailet/mailetcontainer-camel/pom.xml
+++ b/server/mailet/mailetcontainer-camel/pom.xml
@@ -79,6 +79,10 @@
         </dependency>
         <dependency>
             <groupId>${james.groupId}</groupId>
+            <artifactId>james-server-mailrepository-api</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>${james.groupId}</groupId>
             <artifactId>james-server-queue-api</artifactId>
         </dependency>
         <dependency>
diff --git a/server/mailet/mailets/pom.xml b/server/mailet/mailets/pom.xml
index d0b3791..c54386f 100644
--- a/server/mailet/mailets/pom.xml
+++ b/server/mailet/mailets/pom.xml
@@ -148,6 +148,10 @@
         </dependency>
         <dependency>
             <groupId>${james.groupId}</groupId>
+            <artifactId>james-server-mailrepository-api</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>${james.groupId}</groupId>
             <artifactId>james-server-mailrepository-memory</artifactId>
             <scope>test</scope>
         </dependency>
diff --git a/server/mailrepository/mailrepository-api/pom.xml b/server/mailrepository/mailrepository-api/pom.xml
index 2de1aa4..b7faf1a 100644
--- a/server/mailrepository/mailrepository-api/pom.xml
+++ b/server/mailrepository/mailrepository-api/pom.xml
@@ -31,6 +31,7 @@
     <packaging>jar</packaging>
 
     <name>Apache James :: Server :: MailRepository :: API</name>
+    <description>MailRepository allows storing Emails with their delivery context</description>
 
     <dependencies>
         <dependency>
diff --git a/server/data/data-library/src/main/java/org/apache/james/repository/api/Initializable.java b/server/mailrepository/mailrepository-api/src/main/java/org/apache/james/mailrepository/api/Initializable.java
similarity index 96%
rename from server/data/data-library/src/main/java/org/apache/james/repository/api/Initializable.java
rename to server/mailrepository/mailrepository-api/src/main/java/org/apache/james/mailrepository/api/Initializable.java
index aea96b2..26c61df 100644
--- a/server/data/data-library/src/main/java/org/apache/james/repository/api/Initializable.java
+++ b/server/mailrepository/mailrepository-api/src/main/java/org/apache/james/mailrepository/api/Initializable.java
@@ -17,7 +17,7 @@
  * under the License.                                           *
  ****************************************************************/
 
-package org.apache.james.repository.api;
+package org.apache.james.mailrepository.api;
 
 public interface Initializable {
 
diff --git a/server/data/data-api/src/main/java/org/apache/james/mailrepository/api/MailRepositoryStore.java b/server/mailrepository/mailrepository-api/src/main/java/org/apache/james/mailrepository/api/MailRepositoryStore.java
similarity index 97%
rename from server/data/data-api/src/main/java/org/apache/james/mailrepository/api/MailRepositoryStore.java
rename to server/mailrepository/mailrepository-api/src/main/java/org/apache/james/mailrepository/api/MailRepositoryStore.java
index fa79c3c..272a479 100644
--- a/server/data/data-api/src/main/java/org/apache/james/mailrepository/api/MailRepositoryStore.java
+++ b/server/mailrepository/mailrepository-api/src/main/java/org/apache/james/mailrepository/api/MailRepositoryStore.java
@@ -1,107 +1,107 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.james.mailrepository.api;
-
-import java.util.Optional;
-import java.util.stream.Stream;
-
-public interface MailRepositoryStore {
-
-    /**
-     * Select the {@link MailRepository} for the given url.
-     *
-     * If the repository is not referenced by {@link MailRepositoryStore::getUrls}, it will be created, and its URL referenced
-     * by {@link MailRepositoryStore::getUrls}.
-     */
-    MailRepository select(MailRepositoryUrl url) throws MailRepositoryStoreException;
-
-    Optional<Protocol> defaultProtocol();
-
-    /**
-     * Create the {@link MailRepository} for the given url and return it. If the repository already exists,
-     * then no new repository is created, the old one will be returned.
-     *
-     * The URL of the created repository will be referenced by {@link MailRepositoryStore::getUrls}
-     */
-    default MailRepository create(MailRepositoryUrl url) throws MailRepositoryStoreException {
-        return select(url);
-    }
-
-    /**
-     * Returns the {@link MailRepository} for the given url.
-     *
-     * This mail repository will not be created if the URL is not referenced by {@link MailRepositoryStore::getUrls}.
-     *
-     * If the repository is referenced by {@link MailRepositoryStore::getUrls}, and the repository do not exist locally, then
-     * this repository will be created locally.
-     */
-    Optional<MailRepository> get(MailRepositoryUrl url) throws MailRepositoryStoreException;
-
-    /**
-     * Returns all the {@link MailRepository} referenced by {@link MailRepositoryStore::getUrls} got a given path.
-     *
-     * The corresponding mail repositories will not be created if they do not exist.
-     *
-     * If the path matches URLs referenced by {@link MailRepositoryStore::getUrls}, and the repositories do not exist locally, then
-     * these repositories will be created locally.
-     */
-    Stream<MailRepository> getByPath(MailRepositoryPath path) throws MailRepositoryStoreException;
-
-    /**
-     * Return a {@link Stream} which contains all urls of the selected {@link MailRepository}'s.
-     *
-     * Note that this may include MailRepositories that do not exist locally.
-     *
-     * This can be the case if:
-     *  - The MailRepository had been created by another James server in a clustered environment
-     *  - The MailRepository had been dynamically created, and James was restarted
-     */
-    Stream<MailRepositoryUrl> getUrls();
-
-    /**
-     * Return a {@link Stream} which contains all paths of the selected {@link MailRepository}'s
-     */
-    default Stream<MailRepositoryPath> getPaths() {
-        return getUrls()
-            .map(MailRepositoryUrl::getPath)
-            .sorted()
-            .distinct();
-    }
-
-    class MailRepositoryStoreException extends Exception {
-        public MailRepositoryStoreException(String msg, Throwable t) {
-            super(msg, t);
-        }
-
-        public MailRepositoryStoreException(String msg) {
-            super(msg);
-        }
-    }
-
-    class UnsupportedRepositoryStoreException extends MailRepositoryStoreException {
-        public UnsupportedRepositoryStoreException(String msg, Throwable t) {
-            super(msg, t);
-        }
-
-        public UnsupportedRepositoryStoreException(String msg) {
-            super(msg);
-        }
-    }
-}
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one   *
+ * or more contributor license agreements.  See the NOTICE file *
+ * distributed with this work for additional information        *
+ * regarding copyright ownership.  The ASF licenses this file   *
+ * to you under the Apache License, Version 2.0 (the            *
+ * "License"); you may not use this file except in compliance   *
+ * with the License.  You may obtain a copy of the License at   *
+ *                                                              *
+ *   http://www.apache.org/licenses/LICENSE-2.0                 *
+ *                                                              *
+ * Unless required by applicable law or agreed to in writing,   *
+ * software distributed under the License is distributed on an  *
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
+ * KIND, either express or implied.  See the License for the    *
+ * specific language governing permissions and limitations      *
+ * under the License.                                           *
+ ****************************************************************/
+
+package org.apache.james.mailrepository.api;
+
+import java.util.Optional;
+import java.util.stream.Stream;
+
+public interface MailRepositoryStore {
+
+    /**
+     * Select the {@link MailRepository} for the given url.
+     *
+     * If the repository is not referenced by {@link MailRepositoryStore::getUrls}, it will be created, and its URL referenced
+     * by {@link MailRepositoryStore::getUrls}.
+     */
+    MailRepository select(MailRepositoryUrl url) throws MailRepositoryStoreException;
+
+    Optional<Protocol> defaultProtocol();
+
+    /**
+     * Create the {@link MailRepository} for the given url and return it. If the repository already exists,
+     * then no new repository is created, the old one will be returned.
+     *
+     * The URL of the created repository will be referenced by {@link MailRepositoryStore::getUrls}
+     */
+    default MailRepository create(MailRepositoryUrl url) throws MailRepositoryStoreException {
+        return select(url);
+    }
+
+    /**
+     * Returns the {@link MailRepository} for the given url.
+     *
+     * This mail repository will not be created if the URL is not referenced by {@link MailRepositoryStore::getUrls}.
+     *
+     * If the repository is referenced by {@link MailRepositoryStore::getUrls}, and the repository do not exist locally, then
+     * this repository will be created locally.
+     */
+    Optional<MailRepository> get(MailRepositoryUrl url) throws MailRepositoryStoreException;
+
+    /**
+     * Returns all the {@link MailRepository} referenced by {@link MailRepositoryStore::getUrls} got a given path.
+     *
+     * The corresponding mail repositories will not be created if they do not exist.
+     *
+     * If the path matches URLs referenced by {@link MailRepositoryStore::getUrls}, and the repositories do not exist locally, then
+     * these repositories will be created locally.
+     */
+    Stream<MailRepository> getByPath(MailRepositoryPath path) throws MailRepositoryStoreException;
+
+    /**
+     * Return a {@link Stream} which contains all urls of the selected {@link MailRepository}'s.
+     *
+     * Note that this may include MailRepositories that do not exist locally.
+     *
+     * This can be the case if:
+     *  - The MailRepository had been created by another James server in a clustered environment
+     *  - The MailRepository had been dynamically created, and James was restarted
+     */
+    Stream<MailRepositoryUrl> getUrls();
+
+    /**
+     * Return a {@link Stream} which contains all paths of the selected {@link MailRepository}'s
+     */
+    default Stream<MailRepositoryPath> getPaths() {
+        return getUrls()
+            .map(MailRepositoryUrl::getPath)
+            .sorted()
+            .distinct();
+    }
+
+    class MailRepositoryStoreException extends Exception {
+        public MailRepositoryStoreException(String msg, Throwable t) {
+            super(msg, t);
+        }
+
+        public MailRepositoryStoreException(String msg) {
+            super(msg);
+        }
+    }
+
+    class UnsupportedRepositoryStoreException extends MailRepositoryStoreException {
+        public UnsupportedRepositoryStoreException(String msg, Throwable t) {
+            super(msg, t);
+        }
+
+        public UnsupportedRepositoryStoreException(String msg) {
+            super(msg);
+        }
+    }
+}
diff --git a/server/data/data-api/src/main/java/org/apache/james/mailrepository/api/MailRepositoryUrlStore.java b/server/mailrepository/mailrepository-api/src/main/java/org/apache/james/mailrepository/api/MailRepositoryUrlStore.java
similarity index 100%
rename from server/data/data-api/src/main/java/org/apache/james/mailrepository/api/MailRepositoryUrlStore.java
rename to server/mailrepository/mailrepository-api/src/main/java/org/apache/james/mailrepository/api/MailRepositoryUrlStore.java
diff --git a/server/data/data-api/src/test/java/org/apache/james/mailrepository/api/MailRepositoryUrlStoreContract.java b/server/mailrepository/mailrepository-api/src/test/java/org/apache/james/mailrepository/MailRepositoryUrlStoreContract.java
similarity index 95%
rename from server/data/data-api/src/test/java/org/apache/james/mailrepository/api/MailRepositoryUrlStoreContract.java
rename to server/mailrepository/mailrepository-api/src/test/java/org/apache/james/mailrepository/MailRepositoryUrlStoreContract.java
index 89fce77..5273ca3 100644
--- a/server/data/data-api/src/test/java/org/apache/james/mailrepository/api/MailRepositoryUrlStoreContract.java
+++ b/server/mailrepository/mailrepository-api/src/test/java/org/apache/james/mailrepository/MailRepositoryUrlStoreContract.java
@@ -17,12 +17,14 @@
  * under the License.                                           *
  ****************************************************************/
 
-package org.apache.james.mailrepository.api;
+package org.apache.james.mailrepository;
 
 import static org.assertj.core.api.Assertions.assertThat;
 
 import java.time.Duration;
 
+import org.apache.james.mailrepository.api.MailRepositoryUrl;
+import org.apache.james.mailrepository.api.MailRepositoryUrlStore;
 import org.apache.james.util.concurrency.ConcurrentTestRunner;
 import org.junit.jupiter.api.Test;
 
diff --git a/server/data/data-cassandra/src/main/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryUrlModule.java b/server/mailrepository/mailrepository-cassandra/src/main/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryUrlModule.java
similarity index 100%
rename from server/data/data-cassandra/src/main/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryUrlModule.java
rename to server/mailrepository/mailrepository-cassandra/src/main/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryUrlModule.java
diff --git a/server/data/data-cassandra/src/main/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryUrlStore.java b/server/mailrepository/mailrepository-cassandra/src/main/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryUrlStore.java
similarity index 100%
rename from server/data/data-cassandra/src/main/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryUrlStore.java
rename to server/mailrepository/mailrepository-cassandra/src/main/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryUrlStore.java
diff --git a/server/data/data-cassandra/src/main/java/org/apache/james/mailrepository/cassandra/UrlsDao.java b/server/mailrepository/mailrepository-cassandra/src/main/java/org/apache/james/mailrepository/cassandra/UrlsDao.java
similarity index 100%
rename from server/data/data-cassandra/src/main/java/org/apache/james/mailrepository/cassandra/UrlsDao.java
rename to server/mailrepository/mailrepository-cassandra/src/main/java/org/apache/james/mailrepository/cassandra/UrlsDao.java
diff --git a/server/data/data-cassandra/src/main/java/org/apache/james/mailrepository/cassandra/UrlsTable.java b/server/mailrepository/mailrepository-cassandra/src/main/java/org/apache/james/mailrepository/cassandra/UrlsTable.java
similarity index 100%
rename from server/data/data-cassandra/src/main/java/org/apache/james/mailrepository/cassandra/UrlsTable.java
rename to server/mailrepository/mailrepository-cassandra/src/main/java/org/apache/james/mailrepository/cassandra/UrlsTable.java
diff --git a/server/data/data-cassandra/src/test/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryUrlStoreExtension.java b/server/mailrepository/mailrepository-cassandra/src/test/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryUrlStoreExtension.java
similarity index 100%
rename from server/data/data-cassandra/src/test/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryUrlStoreExtension.java
rename to server/mailrepository/mailrepository-cassandra/src/test/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryUrlStoreExtension.java
diff --git a/server/data/data-cassandra/src/test/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryUrlStoreTest.java b/server/mailrepository/mailrepository-cassandra/src/test/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryUrlStoreTest.java
similarity index 95%
rename from server/data/data-cassandra/src/test/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryUrlStoreTest.java
rename to server/mailrepository/mailrepository-cassandra/src/test/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryUrlStoreTest.java
index 92a8a37..f41810c 100644
--- a/server/data/data-cassandra/src/test/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryUrlStoreTest.java
+++ b/server/mailrepository/mailrepository-cassandra/src/test/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryUrlStoreTest.java
@@ -19,7 +19,7 @@
 
 package org.apache.james.mailrepository.cassandra;
 
-import org.apache.james.mailrepository.api.MailRepositoryUrlStoreContract;
+import org.apache.james.mailrepository.MailRepositoryUrlStoreContract;
 import org.junit.jupiter.api.extension.ExtendWith;
 
 @ExtendWith(CassandraMailRepositoryUrlStoreExtension.class)
diff --git a/server/mailrepository/mailrepository-memory/pom.xml b/server/mailrepository/mailrepository-memory/pom.xml
index 73678b3..f4ed89c 100644
--- a/server/mailrepository/mailrepository-memory/pom.xml
+++ b/server/mailrepository/mailrepository-memory/pom.xml
@@ -35,6 +35,20 @@
     <dependencies>
         <dependency>
             <groupId>${james.groupId}</groupId>
+            <artifactId>apache-mailet-test</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>${james.groupId}</groupId>
+            <artifactId>james-server-core</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>${james.groupId}</groupId>
+            <artifactId>james-server-lifecycle-api</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>${james.groupId}</groupId>
             <artifactId>james-server-mailrepository-api</artifactId>
         </dependency>
         <dependency>
@@ -45,8 +59,17 @@
         </dependency>
         <dependency>
             <groupId>${james.groupId}</groupId>
+            <artifactId>james-server-testing</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>${james.groupId}</groupId>
             <artifactId>testing-base</artifactId>
             <scope>test</scope>
         </dependency>
+        <dependency>
+            <groupId>org.apache.commons</groupId>
+            <artifactId>commons-configuration2</artifactId>
+        </dependency>
     </dependencies>
 </project>
diff --git a/server/data/data-memory/src/main/java/org/apache/james/mailrepository/memory/MailRepositoryLoader.java b/server/mailrepository/mailrepository-memory/src/main/java/org/apache/james/mailrepository/memory/MailRepositoryLoader.java
similarity index 100%
rename from server/data/data-memory/src/main/java/org/apache/james/mailrepository/memory/MailRepositoryLoader.java
rename to server/mailrepository/mailrepository-memory/src/main/java/org/apache/james/mailrepository/memory/MailRepositoryLoader.java
diff --git a/server/data/data-memory/src/main/java/org/apache/james/mailrepository/memory/MailRepositoryStoreConfiguration.java b/server/mailrepository/mailrepository-memory/src/main/java/org/apache/james/mailrepository/memory/MailRepositoryStoreConfiguration.java
similarity index 100%
rename from server/data/data-memory/src/main/java/org/apache/james/mailrepository/memory/MailRepositoryStoreConfiguration.java
rename to server/mailrepository/mailrepository-memory/src/main/java/org/apache/james/mailrepository/memory/MailRepositoryStoreConfiguration.java
diff --git a/server/data/data-memory/src/main/java/org/apache/james/mailrepository/memory/MemoryMailRepositoryStore.java b/server/mailrepository/mailrepository-memory/src/main/java/org/apache/james/mailrepository/memory/MemoryMailRepositoryStore.java
similarity index 99%
rename from server/data/data-memory/src/main/java/org/apache/james/mailrepository/memory/MemoryMailRepositoryStore.java
rename to server/mailrepository/mailrepository-memory/src/main/java/org/apache/james/mailrepository/memory/MemoryMailRepositoryStore.java
index 1ef76a2..47f5bd2 100644
--- a/server/data/data-memory/src/main/java/org/apache/james/mailrepository/memory/MemoryMailRepositoryStore.java
+++ b/server/mailrepository/mailrepository-memory/src/main/java/org/apache/james/mailrepository/memory/MemoryMailRepositoryStore.java
@@ -33,13 +33,13 @@ import org.apache.commons.configuration2.HierarchicalConfiguration;
 import org.apache.commons.configuration2.tree.ImmutableNode;
 import org.apache.james.lifecycle.api.Configurable;
 import org.apache.james.lifecycle.api.Startable;
+import org.apache.james.mailrepository.api.Initializable;
 import org.apache.james.mailrepository.api.MailRepository;
 import org.apache.james.mailrepository.api.MailRepositoryPath;
 import org.apache.james.mailrepository.api.MailRepositoryStore;
 import org.apache.james.mailrepository.api.MailRepositoryUrl;
 import org.apache.james.mailrepository.api.MailRepositoryUrlStore;
 import org.apache.james.mailrepository.api.Protocol;
-import org.apache.james.repository.api.Initializable;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/server/data/data-memory/src/main/java/org/apache/james/mailrepository/memory/MemoryMailRepositoryUrlStore.java b/server/mailrepository/mailrepository-memory/src/main/java/org/apache/james/mailrepository/memory/MemoryMailRepositoryUrlStore.java
similarity index 100%
rename from server/data/data-memory/src/main/java/org/apache/james/mailrepository/memory/MemoryMailRepositoryUrlStore.java
rename to server/mailrepository/mailrepository-memory/src/main/java/org/apache/james/mailrepository/memory/MemoryMailRepositoryUrlStore.java
diff --git a/server/data/data-memory/src/main/java/org/apache/james/mailrepository/memory/SimpleMailRepositoryLoader.java b/server/mailrepository/mailrepository-memory/src/main/java/org/apache/james/mailrepository/memory/SimpleMailRepositoryLoader.java
similarity index 100%
rename from server/data/data-memory/src/main/java/org/apache/james/mailrepository/memory/SimpleMailRepositoryLoader.java
rename to server/mailrepository/mailrepository-memory/src/main/java/org/apache/james/mailrepository/memory/SimpleMailRepositoryLoader.java
diff --git a/server/data/data-memory/src/test/java/org/apache/james/mailrepository/memory/MailRepositoryStoreConfigurationTest.java b/server/mailrepository/mailrepository-memory/src/test/java/org/apache/james/mailrepository/memory/MailRepositoryStoreConfigurationTest.java
similarity index 100%
rename from server/data/data-memory/src/test/java/org/apache/james/mailrepository/memory/MailRepositoryStoreConfigurationTest.java
rename to server/mailrepository/mailrepository-memory/src/test/java/org/apache/james/mailrepository/memory/MailRepositoryStoreConfigurationTest.java
diff --git a/server/data/data-memory/src/test/java/org/apache/james/mailrepository/memory/MemoryMailRepositoryStoreTest.java b/server/mailrepository/mailrepository-memory/src/test/java/org/apache/james/mailrepository/memory/MemoryMailRepositoryStoreTest.java
similarity index 100%
rename from server/data/data-memory/src/test/java/org/apache/james/mailrepository/memory/MemoryMailRepositoryStoreTest.java
rename to server/mailrepository/mailrepository-memory/src/test/java/org/apache/james/mailrepository/memory/MemoryMailRepositoryStoreTest.java
diff --git a/server/data/data-memory/src/test/java/org/apache/james/mailrepository/memory/MemoryMailRepositoryUrlStoreExtension.java b/server/mailrepository/mailrepository-memory/src/test/java/org/apache/james/mailrepository/memory/MemoryMailRepositoryUrlStoreExtension.java
similarity index 100%
rename from server/data/data-memory/src/test/java/org/apache/james/mailrepository/memory/MemoryMailRepositoryUrlStoreExtension.java
rename to server/mailrepository/mailrepository-memory/src/test/java/org/apache/james/mailrepository/memory/MemoryMailRepositoryUrlStoreExtension.java
diff --git a/server/data/data-memory/src/test/java/org/apache/james/mailrepository/memory/MemoryMailRepositoryUrlStoreTest.java b/server/mailrepository/mailrepository-memory/src/test/java/org/apache/james/mailrepository/memory/MemoryMailRepositoryUrlStoreTest.java
similarity index 95%
rename from server/data/data-memory/src/test/java/org/apache/james/mailrepository/memory/MemoryMailRepositoryUrlStoreTest.java
rename to server/mailrepository/mailrepository-memory/src/test/java/org/apache/james/mailrepository/memory/MemoryMailRepositoryUrlStoreTest.java
index 047957f..7c6d10f 100644
--- a/server/data/data-memory/src/test/java/org/apache/james/mailrepository/memory/MemoryMailRepositoryUrlStoreTest.java
+++ b/server/mailrepository/mailrepository-memory/src/test/java/org/apache/james/mailrepository/memory/MemoryMailRepositoryUrlStoreTest.java
@@ -19,7 +19,7 @@
 
 package org.apache.james.mailrepository.memory;
 
-import org.apache.james.mailrepository.api.MailRepositoryUrlStoreContract;
+import org.apache.james.mailrepository.MailRepositoryUrlStoreContract;
 import org.junit.jupiter.api.extension.ExtendWith;
 
 @ExtendWith(MemoryMailRepositoryUrlStoreExtension.class)
diff --git a/server/data/data-memory/src/test/resources/mailrepositorystore.xml b/server/mailrepository/mailrepository-memory/src/test/resources/mailrepositorystore.xml
similarity index 100%
rename from server/data/data-memory/src/test/resources/mailrepositorystore.xml
rename to server/mailrepository/mailrepository-memory/src/test/resources/mailrepositorystore.xml


---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org


[james-project] 02/09: JAMES-3253 Remove Log warning for remoteDelivery configuration in defaultMailetContainer.xml for JPA Guice

Posted by bt...@apache.org.
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 f61d6abd2937b0aaddf2ead84123262d4ca6080f
Author: Benoit Tellier <bt...@linagora.com>
AuthorDate: Thu Jun 25 14:03:30 2020 +0700

    JAMES-3253 Remove Log warning for remoteDelivery configuration in defaultMailetContainer.xml for JPA Guice
    
    This file is relied upon when configuration file is missing
---
 .../guice/cassandra/package/etc/james/templates/mailetcontainer.xml     | 2 +-
 examples/custom-mailets/src/main/resources/mailetcontainer.xml          | 2 +-
 .../guice/jpa-guice/src/main/resources/defaultMailetContainer.xml       | 2 +-
 .../guice/jpa-smtp-common/src/main/resources/defaultMailetContainer.xml | 2 +-
 .../guice/jpa-smtp-mariadb/sample-configuration/mailetcontainer.xml     | 2 +-
 .../protocols/jmap/src/main/resources/defaultJmapMailetContainer.xml    | 2 +-
 .../mailet/mailetcontainer-api/src/main/resources/mailetcontainer.xml   | 2 +-
 7 files changed, 7 insertions(+), 7 deletions(-)

diff --git a/dockerfiles/packaging/guice/cassandra/package/etc/james/templates/mailetcontainer.xml b/dockerfiles/packaging/guice/cassandra/package/etc/james/templates/mailetcontainer.xml
index e8200f4..dc78a59 100644
--- a/dockerfiles/packaging/guice/cassandra/package/etc/james/templates/mailetcontainer.xml
+++ b/dockerfiles/packaging/guice/cassandra/package/etc/james/templates/mailetcontainer.xml
@@ -87,7 +87,7 @@
             <mailet match="All" class="RemoteDelivery">
                 <outgoingQueue>outgoing</outgoingQueue>
                 <delayTime>5000, 100000, 500000</delayTime>
-                <maxRetries>25</maxRetries>
+                <maxRetries>3</maxRetries>
                 <maxDnsProblemRetries>0</maxDnsProblemRetries>
                 <deliveryThreads>10</deliveryThreads>
                 <sendpartial>true</sendpartial>
diff --git a/examples/custom-mailets/src/main/resources/mailetcontainer.xml b/examples/custom-mailets/src/main/resources/mailetcontainer.xml
index 125b775..4817d3f 100644
--- a/examples/custom-mailets/src/main/resources/mailetcontainer.xml
+++ b/examples/custom-mailets/src/main/resources/mailetcontainer.xml
@@ -101,7 +101,7 @@
             <mailet match="All" class="RemoteDelivery">
                 <outgoingQueue>outgoing</outgoingQueue>
                 <delayTime>5000, 100000, 500000</delayTime>
-                <maxRetries>25</maxRetries>
+                <maxRetries>3</maxRetries>
                 <maxDnsProblemRetries>0</maxDnsProblemRetries>
                 <deliveryThreads>10</deliveryThreads>
                 <sendpartial>true</sendpartial>
diff --git a/server/container/guice/jpa-guice/src/main/resources/defaultMailetContainer.xml b/server/container/guice/jpa-guice/src/main/resources/defaultMailetContainer.xml
index 8a0e360..3822f0c 100644
--- a/server/container/guice/jpa-guice/src/main/resources/defaultMailetContainer.xml
+++ b/server/container/guice/jpa-guice/src/main/resources/defaultMailetContainer.xml
@@ -49,7 +49,7 @@
         <mailet match="SMTPAuthSuccessful" class="RemoteDelivery">
             <outgoingQueue>outgoing</outgoingQueue>
             <delayTime>5000, 100000, 500000</delayTime>
-            <maxRetries>25</maxRetries>
+            <maxRetries>3</maxRetries>
             <maxDnsProblemRetries>0</maxDnsProblemRetries>
             <deliveryThreads>10</deliveryThreads>
             <sendpartial>true</sendpartial>
diff --git a/server/container/guice/jpa-smtp-common/src/main/resources/defaultMailetContainer.xml b/server/container/guice/jpa-smtp-common/src/main/resources/defaultMailetContainer.xml
index 8ce1d59..4b07dc0 100644
--- a/server/container/guice/jpa-smtp-common/src/main/resources/defaultMailetContainer.xml
+++ b/server/container/guice/jpa-smtp-common/src/main/resources/defaultMailetContainer.xml
@@ -43,7 +43,7 @@
         <mailet match="SMTPAuthSuccessful" class="RemoteDelivery">
             <outgoingQueue>outgoing</outgoingQueue>
             <delayTime>5000, 100000, 500000</delayTime>
-            <maxRetries>25</maxRetries>
+            <maxRetries>3</maxRetries>
             <maxDnsProblemRetries>0</maxDnsProblemRetries>
             <deliveryThreads>10</deliveryThreads>
             <sendpartial>true</sendpartial>
diff --git a/server/container/guice/jpa-smtp-mariadb/sample-configuration/mailetcontainer.xml b/server/container/guice/jpa-smtp-mariadb/sample-configuration/mailetcontainer.xml
index de035fb..38d009d 100644
--- a/server/container/guice/jpa-smtp-mariadb/sample-configuration/mailetcontainer.xml
+++ b/server/container/guice/jpa-smtp-mariadb/sample-configuration/mailetcontainer.xml
@@ -63,7 +63,7 @@
             <mailet match="relay-allowed" class="RemoteDelivery">
                 <outgoingQueue>outgoing</outgoingQueue>
                 <delayTime>5000, 100000, 500000</delayTime>
-                <maxRetries>25</maxRetries>
+                <maxRetries>3</maxRetries>
                 <maxDnsProblemRetries>0</maxDnsProblemRetries>
                 <deliveryThreads>10</deliveryThreads>
                 <sendpartial>true</sendpartial>
diff --git a/server/container/guice/protocols/jmap/src/main/resources/defaultJmapMailetContainer.xml b/server/container/guice/protocols/jmap/src/main/resources/defaultJmapMailetContainer.xml
index 713316e..2a625c5 100644
--- a/server/container/guice/protocols/jmap/src/main/resources/defaultJmapMailetContainer.xml
+++ b/server/container/guice/protocols/jmap/src/main/resources/defaultJmapMailetContainer.xml
@@ -65,7 +65,7 @@
         <mailet match="All" class="RemoteDelivery">
             <outgoingQueue>outgoing</outgoingQueue>
             <delayTime>5000, 100000, 23*500000</delayTime>
-            <maxRetries>25</maxRetries>
+            <maxRetries>3</maxRetries>
             <maxDnsProblemRetries>0</maxDnsProblemRetries>
             <deliveryThreads>10</deliveryThreads>
             <sendpartial>true</sendpartial>
diff --git a/server/mailet/mailetcontainer-api/src/main/resources/mailetcontainer.xml b/server/mailet/mailetcontainer-api/src/main/resources/mailetcontainer.xml
index 465214a..09022b6 100644
--- a/server/mailet/mailetcontainer-api/src/main/resources/mailetcontainer.xml
+++ b/server/mailet/mailetcontainer-api/src/main/resources/mailetcontainer.xml
@@ -63,7 +63,7 @@
         <delayTime>2 hours</delayTime>
         <delayTime>3 hours</delayTime>
         <delayTime>6 hours</delayTime>
-        <maxRetries>25</maxRetries>
+        <maxRetries>6</maxRetries>
         <maxDnsProblemRetries>0</maxDnsProblemRetries>
         <deliveryThreads>10</deliveryThreads>
         <sendpartial>true</sendpartial>


---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org


[james-project] 05/09: JAMES-3264: MAILBOX details are read 3 times upon indexing

Posted by bt...@apache.org.
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 bc6aecc10d42f8a21022eb4dbc5e5e65abf7e557
Author: duc91 <du...@gmail.com>
AuthorDate: Wed Jun 24 14:20:26 2020 +0700

    JAMES-3264: MAILBOX details are read 3 times upon indexing
---
 .../ElasticSearchListeningMessageSearchIndex.java  | 30 +++++++++++-----------
 ...asticSearchListeningMessageSearchIndexTest.java | 24 ++++++++---------
 .../lucene/search/LuceneMessageSearchIndex.java    | 19 ++++++--------
 .../LuceneMailboxMessageSearchIndexTest.java       |  8 +++---
 .../store/search/LazyMessageSearchIndex.java       |  8 +++---
 .../store/search/ListeningMessageSearchIndex.java  | 16 +++++-------
 .../mailbox/tools/indexer/ReIndexerPerformer.java  |  2 +-
 .../org/apache/james/FakeMessageSearchIndex.java   |  4 +--
 .../james/webadmin/routes/MailboxesRoutesTest.java |  8 +++---
 .../webadmin/routes/UserMailboxesRoutesTest.java   |  4 +--
 10 files changed, 58 insertions(+), 65 deletions(-)

diff --git a/mailbox/elasticsearch/src/main/java/org/apache/james/mailbox/elasticsearch/events/ElasticSearchListeningMessageSearchIndex.java b/mailbox/elasticsearch/src/main/java/org/apache/james/mailbox/elasticsearch/events/ElasticSearchListeningMessageSearchIndex.java
index ddb016e..64f4d89 100644
--- a/mailbox/elasticsearch/src/main/java/org/apache/james/mailbox/elasticsearch/events/ElasticSearchListeningMessageSearchIndex.java
+++ b/mailbox/elasticsearch/src/main/java/org/apache/james/mailbox/elasticsearch/events/ElasticSearchListeningMessageSearchIndex.java
@@ -18,6 +18,7 @@
  ****************************************************************/
 package org.apache.james.mailbox.elasticsearch.events;
 
+import static com.github.steveash.guavate.Guavate.toImmutableList;
 import static org.apache.james.mailbox.elasticsearch.json.JsonMessageConstants.IS_ANSWERED;
 import static org.apache.james.mailbox.elasticsearch.json.JsonMessageConstants.IS_DELETED;
 import static org.apache.james.mailbox.elasticsearch.json.JsonMessageConstants.IS_DRAFT;
@@ -69,7 +70,6 @@ import org.slf4j.LoggerFactory;
 
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.github.fge.lambdas.Throwing;
-import com.github.steveash.guavate.Guavate;
 import com.google.common.base.Preconditions;
 import com.google.common.collect.ImmutableList;
 
@@ -154,7 +154,7 @@ public class ElasticSearchListeningMessageSearchIndex extends ListeningMessageSe
             message.getUid());
 
         RoutingKey from = routingKeyFactory.from(mailbox.getMailboxId());
-        DocumentId id = indexIdFor(mailbox, message.getUid());
+        DocumentId id = indexIdFor(mailbox.getMailboxId(), message.getUid());
 
         return Mono.fromCallable(() -> generateIndexedJson(mailbox, message, session))
             .flatMap(jsonContent -> elasticSearchIndexer.index(id, jsonContent, from))
@@ -176,12 +176,12 @@ public class ElasticSearchListeningMessageSearchIndex extends ListeningMessageSe
     }
 
     @Override
-    public Mono<Void> delete(MailboxSession session, Mailbox mailbox, Collection<MessageUid> expungedUids) {
+    public Mono<Void> delete(MailboxSession session, MailboxId mailboxId, Collection<MessageUid> expungedUids) {
         return elasticSearchIndexer
             .delete(expungedUids.stream()
-                .map(uid ->  indexIdFor(mailbox, uid))
-                .collect(Guavate.toImmutableList()),
-                routingKeyFactory.from(mailbox.getMailboxId()))
+                .map(uid ->  indexIdFor(mailboxId, uid))
+                .collect(toImmutableList()),
+                routingKeyFactory.from(mailboxId))
             .then();
     }
 
@@ -196,27 +196,27 @@ public class ElasticSearchListeningMessageSearchIndex extends ListeningMessageSe
     }
 
     @Override
-    public Mono<Void> update(MailboxSession session, Mailbox mailbox, List<UpdatedFlags> updatedFlagsList) {
-        RoutingKey routingKey = routingKeyFactory.from(mailbox.getMailboxId());
+    public Mono<Void> update(MailboxSession session, MailboxId mailboxId, List<UpdatedFlags> updatedFlagsList) {
+        RoutingKey routingKey = routingKeyFactory.from(mailboxId);
 
         return Flux.fromIterable(updatedFlagsList)
             .map(Throwing.<UpdatedFlags, UpdatedRepresentation>function(
-                updatedFlags -> createUpdatedDocumentPartFromUpdatedFlags(mailbox, updatedFlags))
+                updatedFlags -> createUpdatedDocumentPartFromUpdatedFlags(mailboxId, updatedFlags))
                 .sneakyThrow())
-            .collect(Guavate.toImmutableList())
+            .collect(toImmutableList())
             .flatMap(updates -> elasticSearchIndexer.update(updates, routingKey))
             .then();
     }
 
-    private UpdatedRepresentation createUpdatedDocumentPartFromUpdatedFlags(Mailbox mailbox, UpdatedFlags updatedFlags) throws JsonProcessingException {
+    private UpdatedRepresentation createUpdatedDocumentPartFromUpdatedFlags(MailboxId mailboxId, UpdatedFlags updatedFlags) throws JsonProcessingException {
         return new UpdatedRepresentation(
-            indexIdFor(mailbox, updatedFlags.getUid()),
+            indexIdFor(mailboxId, updatedFlags.getUid()),
             messageToElasticSearchJson
                 .getUpdatedJsonMessagePart(updatedFlags.getNewFlags(), updatedFlags.getModSeq()));
     }
 
-    private DocumentId indexIdFor(Mailbox mailbox, MessageUid uid) {
-        return DocumentId.fromString(String.join(ID_SEPARATOR, mailbox.getMailboxId().serialize(), String.valueOf(uid.asLong())));
+    private DocumentId indexIdFor(MailboxId mailboxId, MessageUid uid) {
+        return DocumentId.fromString(String.join(ID_SEPARATOR, mailboxId.serialize(), String.valueOf(uid.asLong())));
     }
 
     private void logIfNoMessageId(SearchResult searchResult) {
@@ -229,7 +229,7 @@ public class ElasticSearchListeningMessageSearchIndex extends ListeningMessageSe
     public Mono<Flags> retrieveIndexedFlags(Mailbox mailbox, MessageUid uid) {
         RoutingKey routingKey = routingKeyFactory.from(mailbox.getMailboxId());
 
-        return elasticSearchIndexer.get(indexIdFor(mailbox, uid), routingKey)
+        return elasticSearchIndexer.get(indexIdFor(mailbox.getMailboxId(), uid), routingKey)
             .filter(GetResponse::isExists)
             .map(GetResponse::getSourceAsMap)
             .map(this::extractFlags)
diff --git a/mailbox/elasticsearch/src/test/java/org/apache/james/mailbox/elasticsearch/events/ElasticSearchListeningMessageSearchIndexTest.java b/mailbox/elasticsearch/src/test/java/org/apache/james/mailbox/elasticsearch/events/ElasticSearchListeningMessageSearchIndexTest.java
index c9ea4e6..1908052 100644
--- a/mailbox/elasticsearch/src/test/java/org/apache/james/mailbox/elasticsearch/events/ElasticSearchListeningMessageSearchIndexTest.java
+++ b/mailbox/elasticsearch/src/test/java/org/apache/james/mailbox/elasticsearch/events/ElasticSearchListeningMessageSearchIndexTest.java
@@ -275,7 +275,7 @@ class ElasticSearchListeningMessageSearchIndexTest {
         testee.add(session, mailbox, MESSAGE_1).block();
         elasticSearch.awaitForElasticSearch();
 
-        testee.delete(session, mailbox, Lists.newArrayList(MESSAGE_UID_1)).block();
+        testee.delete(session, mailbox.getMailboxId(), Lists.newArrayList(MESSAGE_UID_1)).block();
         elasticSearch.awaitForElasticSearch();
 
         SearchQuery query = SearchQuery.of(SearchQuery.all());
@@ -290,7 +290,7 @@ class ElasticSearchListeningMessageSearchIndexTest {
 
         elasticSearch.awaitForElasticSearch();
 
-        testee.delete(session, mailbox, Lists.newArrayList(MESSAGE_UID_1)).block();
+        testee.delete(session, mailbox.getMailboxId(), Lists.newArrayList(MESSAGE_UID_1)).block();
         elasticSearch.awaitForElasticSearch();
 
         SearchQuery query = SearchQuery.of(SearchQuery.all());
@@ -305,7 +305,7 @@ class ElasticSearchListeningMessageSearchIndexTest {
 
         elasticSearch.awaitForElasticSearch();
 
-        testee.delete(session, mailbox, Lists.newArrayList(MESSAGE_UID_1, MESSAGE_UID_2)).block();
+        testee.delete(session, mailbox.getMailboxId(), Lists.newArrayList(MESSAGE_UID_1, MESSAGE_UID_2)).block();
         elasticSearch.awaitForElasticSearch();
 
         SearchQuery query = SearchQuery.of(SearchQuery.all());
@@ -318,8 +318,8 @@ class ElasticSearchListeningMessageSearchIndexTest {
         testee.add(session, mailbox, MESSAGE_1).block();
         elasticSearch.awaitForElasticSearch();
 
-        testee.delete(session, mailbox, Lists.newArrayList(MESSAGE_UID_1)).block();
-        testee.delete(session, mailbox, Lists.newArrayList(MESSAGE_UID_1)).block();
+        testee.delete(session, mailbox.getMailboxId(), Lists.newArrayList(MESSAGE_UID_1)).block();
+        testee.delete(session, mailbox.getMailboxId(), Lists.newArrayList(MESSAGE_UID_1)).block();
         elasticSearch.awaitForElasticSearch();
 
         SearchQuery query = SearchQuery.of(SearchQuery.all());
@@ -329,7 +329,7 @@ class ElasticSearchListeningMessageSearchIndexTest {
 
     @Test
     void deleteShouldNotThrowOnUnknownMessageUid() {
-        assertThatCode(() -> testee.delete(session, mailbox, Lists.newArrayList(MESSAGE_UID_1)).block())
+        assertThatCode(() -> testee.delete(session, mailbox.getMailboxId(), Lists.newArrayList(MESSAGE_UID_1)).block())
             .doesNotThrowAnyException();
     }
 
@@ -338,7 +338,7 @@ class ElasticSearchListeningMessageSearchIndexTest {
         elasticSearch.getDockerElasticSearch().pause();
         Thread.sleep(Duration.FIVE_SECONDS.getValueInMS()); // Docker pause is asynchronous and we found no way to poll for it
 
-        assertThatThrownBy(() -> testee.delete(session, mailbox, Lists.newArrayList(MESSAGE_UID_1)).block())
+        assertThatThrownBy(() -> testee.delete(session, mailbox.getMailboxId(), Lists.newArrayList(MESSAGE_UID_1)).block())
             .hasCauseInstanceOf(IOException.class);
 
         elasticSearch.getDockerElasticSearch().unpause();
@@ -357,7 +357,7 @@ class ElasticSearchListeningMessageSearchIndexTest {
             .newFlags(newFlags)
             .build();
 
-        testee.update(session, mailbox, Lists.newArrayList(updatedFlags)).block();
+        testee.update(session, mailbox.getMailboxId(), Lists.newArrayList(updatedFlags)).block();
         elasticSearch.awaitForElasticSearch();
 
         SearchQuery query = SearchQuery.of(SearchQuery.flagIsSet(Flags.Flag.ANSWERED));
@@ -378,7 +378,7 @@ class ElasticSearchListeningMessageSearchIndexTest {
             .newFlags(newFlags)
             .build();
 
-        testee.update(session, mailbox, Lists.newArrayList(updatedFlags)).block();
+        testee.update(session, mailbox.getMailboxId(), Lists.newArrayList(updatedFlags)).block();
         elasticSearch.awaitForElasticSearch();
 
         SearchQuery query = SearchQuery.of(SearchQuery.flagIsSet(Flags.Flag.ANSWERED));
@@ -399,8 +399,8 @@ class ElasticSearchListeningMessageSearchIndexTest {
             .newFlags(newFlags)
             .build();
 
-        testee.update(session, mailbox, Lists.newArrayList(updatedFlags)).block();
-        testee.update(session, mailbox, Lists.newArrayList(updatedFlags)).block();
+        testee.update(session, mailbox.getMailboxId(), Lists.newArrayList(updatedFlags)).block();
+        testee.update(session, mailbox.getMailboxId(), Lists.newArrayList(updatedFlags)).block();
         elasticSearch.awaitForElasticSearch();
 
         SearchQuery query = SearchQuery.of(SearchQuery.flagIsSet(Flags.Flag.ANSWERED));
@@ -421,7 +421,7 @@ class ElasticSearchListeningMessageSearchIndexTest {
             .newFlags(newFlags)
             .build();
 
-        assertThatThrownBy(() -> testee.update(session, mailbox, Lists.newArrayList(updatedFlags)).block())
+        assertThatThrownBy(() -> testee.update(session, mailbox.getMailboxId(), Lists.newArrayList(updatedFlags)).block())
             .hasCauseInstanceOf(IOException.class);
 
         elasticSearch.getDockerElasticSearch().unpause();
diff --git a/mailbox/lucene/src/main/java/org/apache/james/mailbox/lucene/search/LuceneMessageSearchIndex.java b/mailbox/lucene/src/main/java/org/apache/james/mailbox/lucene/search/LuceneMessageSearchIndex.java
index 9a8e480..c9ddec0 100644
--- a/mailbox/lucene/src/main/java/org/apache/james/mailbox/lucene/search/LuceneMessageSearchIndex.java
+++ b/mailbox/lucene/src/main/java/org/apache/james/mailbox/lucene/search/LuceneMessageSearchIndex.java
@@ -1189,18 +1189,18 @@ public class LuceneMessageSearchIndex extends ListeningMessageSearchIndex {
     }
 
     @Override
-    public Mono<Void> update(MailboxSession session, Mailbox mailbox, List<UpdatedFlags> updatedFlagsList) {
+    public Mono<Void> update(MailboxSession session, MailboxId mailboxId, List<UpdatedFlags> updatedFlagsList) {
         return Mono.fromRunnable(Throwing.runnable(() -> {
             for (UpdatedFlags updatedFlags : updatedFlagsList) {
-                update(mailbox, updatedFlags.getUid(), updatedFlags.getNewFlags());
+                update(mailboxId, updatedFlags.getUid(), updatedFlags.getNewFlags());
             }
         }));
     }
 
-    private void update(Mailbox mailbox, MessageUid uid, Flags f) throws IOException {
+    private void update(MailboxId mailboxId, MessageUid uid, Flags f) throws IOException {
         try (IndexSearcher searcher = new IndexSearcher(IndexReader.open(writer, true))) {
             BooleanQuery query = new BooleanQuery();
-            query.add(new TermQuery(new Term(MAILBOX_ID_FIELD, mailbox.getMailboxId().serialize())), BooleanClause.Occur.MUST);
+            query.add(new TermQuery(new Term(MAILBOX_ID_FIELD, mailboxId.serialize())), BooleanClause.Occur.MUST);
             query.add(createQuery(MessageRange.one(uid)), BooleanClause.Occur.MUST);
             query.add(new PrefixQuery(new Term(FLAGS_FIELD, "")), BooleanClause.Occur.MUST);
 
@@ -1269,13 +1269,10 @@ public class LuceneMessageSearchIndex extends ListeningMessageSearchIndex {
     }
 
     @Override
-    public Mono<Void> delete(MailboxSession session, Mailbox mailbox, Collection<MessageUid> expungedUids) {
-        return Mono.fromRunnable(Throwing.runnable(() -> {
-            Collection<MessageRange> messageRanges = MessageRange.toRanges(expungedUids);
-            for (MessageRange messageRange : messageRanges) {
-                delete(mailbox.getMailboxId(), messageRange);
-            }
-        }));
+    public Mono<Void> delete(MailboxSession session, MailboxId mailboxId, Collection<MessageUid> expungedUids) {
+        return Mono.fromRunnable(Throwing.runnable(() -> MessageRange.toRanges(expungedUids)
+            .forEach(Throwing.<MessageRange>consumer(messageRange -> delete(mailboxId, messageRange))
+                .sneakyThrow())));
     }
 
     @Override
diff --git a/mailbox/lucene/src/test/java/org/apache/james/mailbox/lucene/search/LuceneMailboxMessageSearchIndexTest.java b/mailbox/lucene/src/test/java/org/apache/james/mailbox/lucene/search/LuceneMailboxMessageSearchIndexTest.java
index a0ec57c..3f913f0 100644
--- a/mailbox/lucene/src/test/java/org/apache/james/mailbox/lucene/search/LuceneMailboxMessageSearchIndexTest.java
+++ b/mailbox/lucene/src/test/java/org/apache/james/mailbox/lucene/search/LuceneMailboxMessageSearchIndexTest.java
@@ -631,7 +631,7 @@ class LuceneMailboxMessageSearchIndexTest {
             .newFlags(newFlags)
             .build();
 
-        index.update(session, mailbox, Lists.newArrayList(updatedFlags)).block();
+        index.update(session, mailbox.getMailboxId(), Lists.newArrayList(updatedFlags)).block();
 
         SearchQuery query = SearchQuery.of(SearchQuery.flagIsSet(Flags.Flag.DRAFT));
         assertThat(index.search(session, mailbox, query))
@@ -648,7 +648,7 @@ class LuceneMailboxMessageSearchIndexTest {
             .newFlags(newFlags)
             .build();
 
-        index.update(session, mailbox, Lists.newArrayList(updatedFlags)).block();
+        index.update(session, mailbox.getMailboxId(), Lists.newArrayList(updatedFlags)).block();
 
         SearchQuery query = SearchQuery.of(SearchQuery.flagIsSet(Flags.Flag.DRAFT));
         assertThat(index.search(session, mailbox, query))
@@ -665,8 +665,8 @@ class LuceneMailboxMessageSearchIndexTest {
             .newFlags(newFlags)
             .build();
 
-        index.update(session, mailbox, Lists.newArrayList(updatedFlags)).block();
-        index.update(session, mailbox, Lists.newArrayList(updatedFlags)).block();
+        index.update(session, mailbox.getMailboxId(), Lists.newArrayList(updatedFlags)).block();
+        index.update(session, mailbox.getMailboxId(), Lists.newArrayList(updatedFlags)).block();
 
         SearchQuery query = SearchQuery.of(SearchQuery.flagIsSet(Flags.Flag.DRAFT));
         assertThat(index.search(session, mailbox, query))
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/search/LazyMessageSearchIndex.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/search/LazyMessageSearchIndex.java
index e889b2b..7e44fea 100644
--- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/search/LazyMessageSearchIndex.java
+++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/search/LazyMessageSearchIndex.java
@@ -95,8 +95,8 @@ public class LazyMessageSearchIndex extends ListeningMessageSearchIndex {
     }
 
     @Override
-    public Mono<Void> delete(MailboxSession session, Mailbox mailbox, Collection<MessageUid> expungedUids) {
-        return index.delete(session, mailbox, expungedUids);
+    public Mono<Void> delete(MailboxSession session, MailboxId mailboxId, Collection<MessageUid> expungedUids) {
+        return index.delete(session, mailboxId, expungedUids);
     }
 
     @Override
@@ -139,8 +139,8 @@ public class LazyMessageSearchIndex extends ListeningMessageSearchIndex {
     }
 
     @Override
-    public Mono<Void> update(MailboxSession session, Mailbox mailbox, List<UpdatedFlags> updatedFlagsList) {
-        return index.update(session, mailbox, updatedFlagsList);
+    public Mono<Void> update(MailboxSession session, MailboxId mailboxId, List<UpdatedFlags> updatedFlagsList) {
+        return index.update(session, mailboxId, updatedFlagsList);
     }
     
 
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/search/ListeningMessageSearchIndex.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/search/ListeningMessageSearchIndex.java
index 7f9db4c..5f06c3d 100644
--- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/search/ListeningMessageSearchIndex.java
+++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/search/ListeningMessageSearchIndex.java
@@ -82,15 +82,11 @@ public abstract class ListeningMessageSearchIndex implements MessageSearchIndex,
         } else if (event instanceof Expunged) {
             Expunged expunged = (Expunged) event;
 
-            return factory.getMailboxMapper(session)
-                .findMailboxById(mailboxId)
-                .flatMap(mailbox -> delete(session, mailbox, expunged.getUids()));
+            return delete(session, mailboxId, expunged.getUids());
         } else if (event instanceof FlagsUpdated) {
             FlagsUpdated flagsUpdated = (FlagsUpdated) event;
 
-            return factory.getMailboxMapper(session)
-                .findMailboxById(mailboxId)
-                .flatMap(mailbox -> update(session, mailbox, flagsUpdated.getUpdatedFlags()));
+            return update(session, mailboxId, flagsUpdated.getUpdatedFlags());
         } else if (event instanceof MailboxDeletion) {
             return deleteAll(session, mailboxId);
         } else {
@@ -123,10 +119,10 @@ public abstract class ListeningMessageSearchIndex implements MessageSearchIndex,
      * Delete the concerned UIDs for the given {@link Mailbox} from the index
      *
      * @param session      The mailbox session performing the expunge
-     * @param mailbox      mailbox on which the expunge was performed
+     * @param mailboxId    mailboxId on which the expunge was performed
      * @param expungedUids UIDS to be deleted
      */
-    public abstract Mono<Void> delete(MailboxSession session, Mailbox mailbox, Collection<MessageUid> expungedUids);
+    public abstract Mono<Void> delete(MailboxSession session, MailboxId mailboxId, Collection<MessageUid> expungedUids);
 
     /**
      * Delete the messages contained in the given {@link Mailbox} from the index
@@ -140,10 +136,10 @@ public abstract class ListeningMessageSearchIndex implements MessageSearchIndex,
      * Update the messages concerned by the updated flags list for the given {@link Mailbox}
      *
      * @param session          session that performed the update
-     * @param mailbox          mailbox containing the updated messages
+     * @param mailboxId        mailboxId on which the expunge was performed
      * @param updatedFlagsList list of flags that were updated
      */
-    public abstract Mono<Void> update(MailboxSession session, Mailbox mailbox, List<UpdatedFlags> updatedFlagsList);
+    public abstract Mono<Void> update(MailboxSession session, MailboxId mailboxId, List<UpdatedFlags> updatedFlagsList);
 
     /**
      * Retrieves flags of an indexed message
diff --git a/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/ReIndexerPerformer.java b/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/ReIndexerPerformer.java
index b854d67..e9ca9f3 100644
--- a/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/ReIndexerPerformer.java
+++ b/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/ReIndexerPerformer.java
@@ -332,7 +332,7 @@ public class ReIndexerPerformer {
     }
 
     private Mono<Either<Failure, Result>> correct(ReIndexingEntry entry, MailboxMessage message) {
-        return messageSearchIndex.delete(entry.getMailboxSession(), entry.getMailbox(), ImmutableList.of(message.getUid()))
+        return messageSearchIndex.delete(entry.getMailboxSession(), entry.getMailbox().getMailboxId(), ImmutableList.of(message.getUid()))
             .then(index(entry));
     }
 
diff --git a/server/container/guice/memory-guice/src/main/java/org/apache/james/FakeMessageSearchIndex.java b/server/container/guice/memory-guice/src/main/java/org/apache/james/FakeMessageSearchIndex.java
index 3c7beef..7dbe612 100644
--- a/server/container/guice/memory-guice/src/main/java/org/apache/james/FakeMessageSearchIndex.java
+++ b/server/container/guice/memory-guice/src/main/java/org/apache/james/FakeMessageSearchIndex.java
@@ -60,7 +60,7 @@ public class FakeMessageSearchIndex extends ListeningMessageSearchIndex {
     }
 
     @Override
-    public Mono<Void> delete(MailboxSession session, Mailbox mailbox, Collection<MessageUid> expungedUids) {
+    public Mono<Void> delete(MailboxSession session, MailboxId mailboxId, Collection<MessageUid> expungedUids) {
         throw new NotImplementedException("not implemented");
     }
 
@@ -70,7 +70,7 @@ public class FakeMessageSearchIndex extends ListeningMessageSearchIndex {
     }
 
     @Override
-    public Mono<Void> update(MailboxSession session, Mailbox mailbox, List<UpdatedFlags> updatedFlagsList) {
+    public Mono<Void> update(MailboxSession session, MailboxId mailboxId, List<UpdatedFlags> updatedFlagsList) {
         throw new NotImplementedException("not implemented");
     }
 
diff --git a/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/MailboxesRoutesTest.java b/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/MailboxesRoutesTest.java
index 244331a..f84804a 100644
--- a/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/MailboxesRoutesTest.java
+++ b/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/MailboxesRoutesTest.java
@@ -369,7 +369,7 @@ class MailboxesRoutesTest {
                     .build();
 
                 // We update on the searchIndex level to try to create inconsistencies
-                searchIndex.update(systemSession, mailbox, ImmutableList.of(updatedFlags)).block();
+                searchIndex.update(systemSession, mailbox.getMailboxId(), ImmutableList.of(updatedFlags)).block();
 
                 String taskId = with()
                     .post("/mailboxes?task=reIndex&mode=fixOutdated")
@@ -416,7 +416,7 @@ class MailboxesRoutesTest {
                     .build();
 
                 // We update on the searchIndex level to try to create inconsistencies
-                searchIndex.update(systemSession, mailbox, ImmutableList.of(updatedFlags)).block();
+                searchIndex.update(systemSession, mailbox.getMailboxId(), ImmutableList.of(updatedFlags)).block();
 
                 String taskId = with()
                     .post("/mailboxes?task=reIndex&mode=fixOutdated")
@@ -741,7 +741,7 @@ class MailboxesRoutesTest {
                     .build();
 
                 // We update on the searchIndex level to try to create inconsistencies
-                searchIndex.update(systemSession, mailbox, ImmutableList.of(updatedFlags)).block();
+                searchIndex.update(systemSession, mailbox.getMailboxId(), ImmutableList.of(updatedFlags)).block();
 
                 String taskId = with()
                     .queryParam("task", "reIndex")
@@ -790,7 +790,7 @@ class MailboxesRoutesTest {
                     .build();
 
                 // We update on the searchIndex level to try to create inconsistencies
-                searchIndex.update(systemSession, mailbox, ImmutableList.of(updatedFlags)).block();
+                searchIndex.update(systemSession, mailbox.getMailboxId(), ImmutableList.of(updatedFlags)).block();
 
                 String taskId = with()
                     .queryParam("task", "reIndex")
diff --git a/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/UserMailboxesRoutesTest.java b/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/UserMailboxesRoutesTest.java
index 3e18b00..768913f 100644
--- a/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/UserMailboxesRoutesTest.java
+++ b/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/UserMailboxesRoutesTest.java
@@ -1389,7 +1389,7 @@ class UserMailboxesRoutesTest {
                     .build();
 
                 // We update on the searchIndex level to try to create inconsistencies
-                searchIndex.update(systemSession, mailbox, ImmutableList.of(updatedFlags)).block();
+                searchIndex.update(systemSession, mailbox.getMailboxId(), ImmutableList.of(updatedFlags)).block();
 
                 String taskId = with()
                     .queryParam("task", "reIndex")
@@ -1438,7 +1438,7 @@ class UserMailboxesRoutesTest {
                     .build();
 
                 // We update on the searchIndex level to try to create inconsistencies
-                searchIndex.update(systemSession, mailbox, ImmutableList.of(updatedFlags)).block();
+                searchIndex.update(systemSession, mailbox.getMailboxId(), ImmutableList.of(updatedFlags)).block();
 
                 String taskId = with()
                     .queryParam("task", "reIndex")


---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org