You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@james.apache.org by ma...@apache.org on 2021/02/09 09:18:03 UTC

[james-project] 06/27: JAMES-3225 tags more unstable tests

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

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

commit d02ec4b2beb630e14454c0a452f790d437eeb661
Author: Jean Helou <jh...@codamens.fr>
AuthorDate: Fri Dec 11 18:01:42 2020 +0100

    JAMES-3225 tags more unstable tests
---
 ...RabbitMQEventBusDeadLetterQueueUpgradeTest.java |   9 +
 .../CassandraMailboxManagerConsistencyTest.java    |   4 +
 .../mail/CassandraMailboxMapperAclTest.java        |   9 +
 .../cassandra/mail/CassandraMailboxMapperTest.java | 722 +++++++++++----------
 .../mail/CassandraMessageIdMapperTest.java         |  10 +
 .../SolveMessageInconsistenciesServiceTest.java    |  11 +
 .../store/mail/model/MailboxMapperACLTest.java     |   2 +-
 .../metrics/tests/RecordingMetricFactoryTest.java  |   4 +
 .../apache/james/MailsShouldBeWellReceived.java    |   6 +
 .../memory/MemorySpamAssassinContractTest.java     |  46 ++
 .../pom.xml                                        |   3 +-
 .../RabbitMQAwsS3JmapAuthenticationTest.java       |   3 +
 .../RabbitMQAwsS3SetMailboxesMethodTest.java       |   3 +
 .../awss3/RabbitMQDownloadCucumberTest.java        |   3 +-
 .../awss3/RabbitMQGetMessagesMethodTest.java       |   3 +-
 .../cucumber/awss3/RabbitMQMailboxSharingTest.java |   3 +-
 .../cucumber/awss3/RabbitMQMessageSharingTest.java |   5 +-
 .../RabbitMQSetMailboxesMethodCucumberTest.java    |   3 +-
 .../RabbitMQSetMessagesMethodCucumberTest.java     |   3 +-
 .../cucumber/awss3/RabbitMQUploadCucumberTest.java |   3 +-
 .../memory/MemoryEmailQueryMethodNoViewTest.java   |  16 +
 .../rfc8621/memory/MemoryEmailQueryMethodTest.java |  15 +
 .../rabbitmq/FixingGhostMailboxTest.java           |  10 +
 .../apache/james/junit/categories/Unstable.java    |   0
 .../spamassassin/SpamAssassinInvokerTest.java      |   3 +
 25 files changed, 532 insertions(+), 367 deletions(-)

diff --git a/event-bus/distributed/src/test/java/org/apache/james/events/RabbitMQEventBusDeadLetterQueueUpgradeTest.java b/event-bus/distributed/src/test/java/org/apache/james/events/RabbitMQEventBusDeadLetterQueueUpgradeTest.java
index ea73049..936e6dc 100644
--- a/event-bus/distributed/src/test/java/org/apache/james/events/RabbitMQEventBusDeadLetterQueueUpgradeTest.java
+++ b/event-bus/distributed/src/test/java/org/apache/james/events/RabbitMQEventBusDeadLetterQueueUpgradeTest.java
@@ -30,9 +30,11 @@ import org.apache.james.events.EventBusTestFixture.GroupA;
 import org.apache.james.events.EventBusTestFixture.TestEventSerializer;
 import org.apache.james.events.EventBusTestFixture.TestRegistrationKeyFactory;
 import org.apache.james.events.GroupRegistration.WorkQueueName;
+import org.apache.james.junit.categories.Unstable;
 import org.apache.james.metrics.tests.RecordingMetricFactory;
 import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Tag;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.RegisterExtension;
 
@@ -70,6 +72,13 @@ class RabbitMQEventBusDeadLetterQueueUpgradeTest {
     }
 
     @Test
+    @Tag(Unstable.TAG)
+    /*
+    Error
+    channel error; protocol method: #method<channel.close>(reply-code=406, reply-text=PRECONDITION_FAILED - inequivalent arg 'x-dead-letter-exchange' for queue 'mailboxEvent-workQueue-org.apache.james.mailbox.events.EventBusTestFixture$GroupA' in vhost '/': received none but current is the value 'mailboxEvent-dead-letter-exchange' of ty..., class-id=50, method-id=10)
+    Stacktrace
+    com.rabbitmq.client.ShutdownSignalException: channel error; protocol method: #method<channel.close>(reply-code=406, reply-text=PRECONDITION_FAILED - inequivalent arg 'x-dead-letter-exchange' for queue 'mailboxEvent-workQueue-org.apache.james.mailbox.events.EventBusTestFixture$GroupA' in vhost '/': received none but current is the value 'mailboxEvent-dead-letter-exchange' of ty..., class-id=50, method-id=10)
+     */
     void eventBusShouldStartWhenDeadLetterUpgradeWasNotPerformed() {
         rabbitMQExtension.getSender().delete(QueueSpecification.queue().name(WORK_QUEUE_NAME.asString())).block();
         rabbitMQExtension.getSender()
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMailboxManagerConsistencyTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMailboxManagerConsistencyTest.java
index 66b93f7..767a82f 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMailboxManagerConsistencyTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMailboxManagerConsistencyTest.java
@@ -26,6 +26,7 @@ import org.apache.james.backends.cassandra.CassandraCluster;
 import org.apache.james.backends.cassandra.CassandraClusterExtension;
 import org.apache.james.backends.cassandra.init.configuration.CassandraConfiguration;
 import org.apache.james.core.Username;
+import org.apache.james.junit.categories.Unstable;
 import org.apache.james.mailbox.MailboxSession;
 import org.apache.james.mailbox.cassandra.mail.MailboxAggregateModule;
 import org.apache.james.mailbox.model.MailboxId;
@@ -37,6 +38,7 @@ import org.assertj.core.api.SoftAssertions;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Disabled;
 import org.junit.jupiter.api.Nested;
+import org.junit.jupiter.api.Tag;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.RegisterExtension;
 
@@ -422,6 +424,8 @@ class CassandraMailboxManagerConsistencyTest {
             }
 
             @Test
+            @Tag(Unstable.TAG)
+            //see https://builds.apache.org/blue/organizations/jenkins/james%2FApacheJames/detail/PR-268/32/tests
             void deleteMailboxByPathShouldBeConsistentWhenMailboxPathDaoFails(CassandraCluster cassandra) throws Exception {
                 MailboxId inboxId = testee.createMailbox(inboxPath, mailboxSession)
                     .get();
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapperAclTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapperAclTest.java
index 245205e..19ddedc 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapperAclTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapperAclTest.java
@@ -24,11 +24,14 @@ import org.apache.james.backends.cassandra.components.CassandraModule;
 import org.apache.james.backends.cassandra.versions.CassandraSchemaVersionModule;
 import org.apache.james.blob.cassandra.CassandraBlobModule;
 import org.apache.james.eventsourcing.eventstore.cassandra.CassandraEventStoreModule;
+import org.apache.james.junit.categories.Unstable;
 import org.apache.james.mailbox.cassandra.mail.utils.GuiceUtils;
 import org.apache.james.mailbox.cassandra.modules.CassandraAclModule;
 import org.apache.james.mailbox.cassandra.modules.CassandraMailboxModule;
 import org.apache.james.mailbox.store.mail.MailboxMapper;
 import org.apache.james.mailbox.store.mail.model.MailboxMapperACLTest;
+import org.junit.jupiter.api.Tag;
+import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.RegisterExtension;
 
 class CassandraMailboxMapperAclTest extends MailboxMapperACLTest {
@@ -48,4 +51,10 @@ class CassandraMailboxMapperAclTest extends MailboxMapperACLTest {
         return GuiceUtils.testInjector(cassandraCluster.getCassandraCluster())
             .getInstance(CassandraMailboxMapper.class);
     }
+    @Test
+    @Override
+    @Tag(Unstable.TAG)
+    protected void updateAclShouldCombineStoredAclWhenAdd() {
+        super.updateAclShouldCombineStoredAclWhenAdd();
+    }
 }
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 8fe8fac..78a2b58 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
@@ -19,14 +19,8 @@
 
 package org.apache.james.mailbox.cassandra.mail;
 
-import static org.apache.james.backends.cassandra.Scenario.Builder.fail;
-import static org.apache.james.mailbox.model.MailboxAssertingTool.softly;
-import static org.assertj.core.api.Assertions.assertThat;
-import static org.assertj.core.api.Assertions.assertThatThrownBy;
-
-import java.util.List;
-import java.util.stream.IntStream;
-
+import com.github.fge.lambdas.Throwing;
+import com.github.fge.lambdas.runnable.ThrowingRunnable;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.james.backends.cassandra.CassandraCluster;
 import org.apache.james.backends.cassandra.CassandraClusterExtension;
@@ -44,6 +38,7 @@ import org.apache.james.eventsourcing.eventstore.cassandra.CassandraEventStore;
 import org.apache.james.eventsourcing.eventstore.cassandra.CassandraEventStoreModule;
 import org.apache.james.eventsourcing.eventstore.cassandra.EventStoreDao;
 import org.apache.james.eventsourcing.eventstore.cassandra.JsonEventSerializer;
+import org.apache.james.junit.categories.Unstable;
 import org.apache.james.mailbox.cassandra.ids.CassandraId;
 import org.apache.james.mailbox.cassandra.mail.eventsourcing.acl.ACLModule;
 import org.apache.james.mailbox.cassandra.modules.CassandraAclModule;
@@ -62,13 +57,18 @@ import org.assertj.core.api.SoftAssertions;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Disabled;
 import org.junit.jupiter.api.Nested;
+import org.junit.jupiter.api.Tag;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.RegisterExtension;
+import reactor.core.publisher.Mono;
 
-import com.github.fge.lambdas.Throwing;
-import com.github.fge.lambdas.runnable.ThrowingRunnable;
+import java.util.List;
+import java.util.stream.IntStream;
 
-import reactor.core.publisher.Mono;
+import static org.apache.james.backends.cassandra.Scenario.Builder.fail;
+import static org.apache.james.mailbox.model.MailboxAssertingTool.softly;
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.assertj.core.api.Assertions.assertThatThrownBy;
 
 class CassandraMailboxMapperTest {
     private static final UidValidity UID_VALIDITY = UidValidity.of(52);
@@ -84,10 +84,10 @@ class CassandraMailboxMapperTest {
     private static final Mailbox MAILBOX_BIS = new Mailbox(MAILBOX_PATH, UID_VALIDITY, MAILBOX_ID_2);
 
     private static final CassandraModule MODULES = CassandraModule.aggregateModules(
-        CassandraAclModule.MODULE,
-        CassandraEventStoreModule.MODULE(),
-        CassandraMailboxModule.MODULE,
-        CassandraSchemaVersionModule.MODULE);
+            CassandraAclModule.MODULE,
+            CassandraEventStoreModule.MODULE(),
+            CassandraMailboxModule.MODULE,
+            CassandraSchemaVersionModule.MODULE);
     private static final int TRY_COUNT_BEFORE_FAILURE = 6;
 
     @RegisterExtension
@@ -110,8 +110,8 @@ class CassandraMailboxMapperTest {
 
         versionDAO = new CassandraSchemaVersionDAO(cassandra.getConf());
         versionDAO.truncateVersion()
-            .then(versionDAO.updateVersion(new SchemaVersion(7)))
-            .block();
+                .then(versionDAO.updateVersion(new SchemaVersion(7)))
+                .block();
         setUpTestee(CassandraConfiguration.DEFAULT_CONFIGURATION);
     }
 
@@ -122,23 +122,23 @@ class CassandraMailboxMapperTest {
         CassandraACLDAOV1 aclDAOV1 = new CassandraACLDAOV1(cassandra.getConf(), cassandraConfiguration, CassandraConsistenciesConfiguration.DEFAULT);
         CassandraACLDAOV2 aclDAOv2 = new CassandraACLDAOV2(cassandra.getConf());
         JsonEventSerializer jsonEventSerializer = JsonEventSerializer
-            .forModules(ACLModule.ACL_UPDATE)
-            .withoutNestedType();
+                .forModules(ACLModule.ACL_UPDATE)
+                .withoutNestedType();
         CassandraUserMailboxRightsDAO usersRightDAO = new CassandraUserMailboxRightsDAO(cassandra.getConf(), CassandraUtils.WITH_DEFAULT_CONFIGURATION);
         CassandraEventStore eventStore = new CassandraEventStore(new EventStoreDao(cassandra.getConf(), jsonEventSerializer, CassandraConsistenciesConfiguration.DEFAULT));
         CassandraACLMapper aclMapper = new CassandraACLMapper(
-            new CassandraACLMapper.StoreV1(usersRightDAO, aclDAOV1),
-            new CassandraACLMapper.StoreV2(usersRightDAO, aclDAOv2, eventStore),
-            versionManager);
+                new CassandraACLMapper.StoreV1(usersRightDAO, aclDAOV1),
+                new CassandraACLMapper.StoreV2(usersRightDAO, aclDAOv2, eventStore),
+                versionManager);
         testee = new CassandraMailboxMapper(
-            mailboxDAO,
-            mailboxPathDAO,
-            mailboxPathV2DAO,
-            mailboxPathV3DAO,
-            usersRightDAO,
-            aclMapper,
-            versionManager,
-            cassandraConfiguration);
+                mailboxDAO,
+                mailboxPathDAO,
+                mailboxPathV2DAO,
+                mailboxPathV3DAO,
+                usersRightDAO,
+                aclMapper,
+                versionManager,
+                cassandraConfiguration);
     }
 
     @Nested
@@ -155,20 +155,20 @@ class CassandraMailboxMapperTest {
             inboxPath = MailboxPath.forUser(USER, INBOX);
             inboxPathRenamed = MailboxPath.forUser(USER, INBOX_RENAMED);
             allMailboxesSearchQuery = MailboxQuery.builder()
-                .userAndNamespaceFrom(inboxPath)
-                .expression(Wildcard.INSTANCE)
-                .build()
-                .asUserBound();
+                    .userAndNamespaceFrom(inboxPath)
+                    .expression(Wildcard.INSTANCE)
+                    .build()
+                    .asUserBound();
             inboxSearchQuery = MailboxQuery.builder()
-                .userAndNamespaceFrom(inboxPath)
-                .expression(new ExactName(INBOX))
-                .build()
-                .asUserBound();
+                    .userAndNamespaceFrom(inboxPath)
+                    .expression(new ExactName(INBOX))
+                    .build()
+                    .asUserBound();
             inboxRenamedSearchQuery = MailboxQuery.builder()
-                .userAndNamespaceFrom(inboxPathRenamed)
-                .expression(new ExactName(INBOX_RENAMED))
-                .build()
-                .asUserBound();
+                    .userAndNamespaceFrom(inboxPathRenamed)
+                    .expression(new ExactName(INBOX_RENAMED))
+                    .build()
+                    .asUserBound();
         }
 
         @Nested
@@ -180,24 +180,24 @@ class CassandraMailboxMapperTest {
                 Mailbox inboxRenamed = createInboxRenamedMailbox(inboxId);
 
                 cassandra.getConf()
-                    .registerScenario(fail()
-                        .times(1)
-                        .whenQueryStartsWith("DELETE FROM mailboxPathV2 WHERE namespace=:namespace AND user=:user AND mailboxName=:mailboxName IF EXISTS;"));
+                        .registerScenario(fail()
+                                .times(1)
+                                .whenQueryStartsWith("DELETE FROM mailboxPathV2 WHERE namespace=:namespace AND user=:user AND mailboxName=:mailboxName IF EXISTS;"));
 
                 testee.rename(inboxRenamed).block();
 
                 SoftAssertions.assertSoftly(Throwing.consumer(softly -> {
                     softly(softly)
-                        .assertThat(testee.findMailboxById(inboxId).block())
-                        .isEqualTo(inboxRenamed);
+                            .assertThat(testee.findMailboxById(inboxId).block())
+                            .isEqualTo(inboxRenamed);
                     softly(softly)
-                        .assertThat(testee.findMailboxByPath(inboxPathRenamed).block())
-                        .isEqualTo(inboxRenamed);
+                            .assertThat(testee.findMailboxByPath(inboxPathRenamed).block())
+                            .isEqualTo(inboxRenamed);
                     softly.assertThat(testee.findMailboxWithPathLike(allMailboxesSearchQuery)
-                        .collectList().block())
-                        .hasOnlyOneElementSatisfying(searchMailbox -> softly(softly)
-                            .assertThat(searchMailbox)
-                            .isEqualTo(inboxRenamed));
+                            .collectList().block())
+                            .hasOnlyOneElementSatisfying(searchMailbox -> softly(softly)
+                                    .assertThat(searchMailbox)
+                                    .isEqualTo(inboxRenamed));
                 }));
             }
 
@@ -208,48 +208,48 @@ class CassandraMailboxMapperTest {
                 Mailbox inboxRenamed = createInboxRenamedMailbox(inboxId);
 
                 cassandra.getConf()
-                    .registerScenario(fail()
-                        .times(1)
-                        .whenQueryStartsWith("INSERT INTO mailbox (id,name,uidvalidity,mailboxbase) VALUES (:id,:name,:uidvalidity,:mailboxbase);"));
+                        .registerScenario(fail()
+                                .times(1)
+                                .whenQueryStartsWith("INSERT INTO mailbox (id,name,uidvalidity,mailboxbase) VALUES (:id,:name,:uidvalidity,:mailboxbase);"));
 
                 testee.rename(inboxRenamed).block();
 
                 SoftAssertions.assertSoftly(Throwing.consumer(softly -> {
                     softly(softly)
-                        .assertThat(testee.findMailboxById(inboxId).block())
-                        .isEqualTo(inboxRenamed);
+                            .assertThat(testee.findMailboxById(inboxId).block())
+                            .isEqualTo(inboxRenamed);
                     softly(softly)
-                        .assertThat(testee.findMailboxByPath(inboxPathRenamed).block())
-                        .isEqualTo(inboxRenamed);
+                            .assertThat(testee.findMailboxByPath(inboxPathRenamed).block())
+                            .isEqualTo(inboxRenamed);
                     softly.assertThat(testee.findMailboxWithPathLike(allMailboxesSearchQuery)
-                        .collectList().block())
-                        .hasOnlyOneElementSatisfying(searchMailbox -> softly(softly)
-                            .assertThat(searchMailbox)
-                            .isEqualTo(inboxRenamed));
+                            .collectList().block())
+                            .hasOnlyOneElementSatisfying(searchMailbox -> softly(softly)
+                                    .assertThat(searchMailbox)
+                                    .isEqualTo(inboxRenamed));
                 }));
             }
 
             @Test
             void createShouldRetryFailedMailboxSaving(CassandraCluster cassandra) {
                 cassandra.getConf()
-                    .registerScenario(fail()
-                        .times(1)
-                        .whenQueryStartsWith("INSERT INTO mailbox (id,name,uidvalidity,mailboxbase) VALUES (:id,:name,:uidvalidity,:mailboxbase);"));
+                        .registerScenario(fail()
+                                .times(1)
+                                .whenQueryStartsWith("INSERT INTO mailbox (id,name,uidvalidity,mailboxbase) VALUES (:id,:name,:uidvalidity,:mailboxbase);"));
 
                 Mailbox inbox = testee.create(inboxPath, UID_VALIDITY).block();
 
                 SoftAssertions.assertSoftly(Throwing.consumer(softly -> {
                     softly(softly)
-                        .assertThat(testee.findMailboxById(inbox.getMailboxId()).block())
-                        .isEqualTo(inbox);
+                            .assertThat(testee.findMailboxById(inbox.getMailboxId()).block())
+                            .isEqualTo(inbox);
                     softly(softly)
-                        .assertThat(testee.findMailboxByPath(inboxPath).block())
-                        .isEqualTo(inbox);
+                            .assertThat(testee.findMailboxByPath(inboxPath).block())
+                            .isEqualTo(inbox);
                     softly.assertThat(testee.findMailboxWithPathLike(allMailboxesSearchQuery)
-                        .collectList().block())
-                        .hasOnlyOneElementSatisfying(searchMailbox -> softly(softly)
-                            .assertThat(searchMailbox)
-                            .isEqualTo(inbox));
+                            .collectList().block())
+                            .hasOnlyOneElementSatisfying(searchMailbox -> softly(softly)
+                                    .assertThat(searchMailbox)
+                                    .isEqualTo(inbox));
                 }));
             }
 
@@ -258,20 +258,20 @@ class CassandraMailboxMapperTest {
                 Mailbox inbox = testee.create(inboxPath, UID_VALIDITY).block();
 
                 cassandra.getConf()
-                    .registerScenario(fail()
-                        .times(1)
-                        .whenQueryStartsWith("DELETE FROM mailbox WHERE id=:id;"));
+                        .registerScenario(fail()
+                                .times(1)
+                                .whenQueryStartsWith("DELETE FROM mailbox WHERE id=:id;"));
 
                 testee.delete(inbox).block();
 
                 SoftAssertions.assertSoftly(Throwing.consumer(softly -> {
                     softly.assertThatThrownBy(() -> testee.findMailboxById(inbox.getMailboxId()).block())
-                        .hasCauseInstanceOf(MailboxNotFoundException.class);
+                            .hasCauseInstanceOf(MailboxNotFoundException.class);
                     softly.assertThat(testee.findMailboxByPath(inboxPath).blockOptional())
-                        .isEmpty();
+                            .isEmpty();
                     softly.assertThat(testee.findMailboxWithPathLike(allMailboxesSearchQuery)
-                        .collectList().block())
-                        .isEmpty();
+                            .collectList().block())
+                            .isEmpty();
                 }));
             }
         }
@@ -282,108 +282,108 @@ class CassandraMailboxMapperTest {
             void setVersion() {
                 // Read repairs should not be performed with an outdated data representation
                 versionDAO.truncateVersion()
-                    .then(versionDAO.updateVersion(new SchemaVersion(8)))
-                    .block();
+                        .then(versionDAO.updateVersion(new SchemaVersion(8)))
+                        .block();
             }
 
             @Test
             void findMailboxByIdShouldEventuallyFixInconsistencyWhenMailboxIsNotInPath() {
                 mailboxDAO.save(MAILBOX)
-                    .block();
+                        .block();
 
                 IntStream.range(0, 100).forEach(i ->
-                    testee.findMailboxById(MAILBOX_ID)
-                        .onErrorResume(e -> Mono.empty())
-                        .block());
+                        testee.findMailboxById(MAILBOX_ID)
+                                .onErrorResume(e -> Mono.empty())
+                                .block());
 
                 SoftAssertions.assertSoftly(Throwing.consumer(softly -> {
                     softly(softly)
-                        .assertThat(testee.findMailboxById(MAILBOX_ID).block())
-                        .isEqualTo(MAILBOX);
+                            .assertThat(testee.findMailboxById(MAILBOX_ID).block())
+                            .isEqualTo(MAILBOX);
                     softly(softly)
-                        .assertThat(testee.findMailboxByPath(MAILBOX_PATH).block())
-                        .isEqualTo(MAILBOX);
+                            .assertThat(testee.findMailboxByPath(MAILBOX_PATH).block())
+                            .isEqualTo(MAILBOX);
                 }));
             }
 
             @Test
             void orphanMailboxIdEntriesCanNotBeReadRepaired() {
                 mailboxDAO.save(MAILBOX)
-                    .block();
+                        .block();
 
                 IntStream.range(0, 100).forEach(i ->
-                    testee.findMailboxByPath(MAILBOX_PATH)
-                        .onErrorResume(e -> Mono.empty())
-                        .block());
+                        testee.findMailboxByPath(MAILBOX_PATH)
+                                .onErrorResume(e -> Mono.empty())
+                                .block());
 
                 SoftAssertions.assertSoftly(Throwing.consumer(softly -> {
                     softly.assertThat(MailboxReactorUtils.blockOptional(testee.findMailboxByPath(MAILBOX_PATH)))
-                        .isEmpty();
+                            .isEmpty();
                     softly(softly)
-                        .assertThat(testee.findMailboxById(MAILBOX_ID).block())
-                        .isEqualTo(MAILBOX);
+                            .assertThat(testee.findMailboxById(MAILBOX_ID).block())
+                            .isEqualTo(MAILBOX);
                 }));
             }
 
             @Test
             void orphanPathEntriesCanNotBeRepairedByIdReads() {
                 mailboxPathV3DAO.save(MAILBOX)
-                    .block();
+                        .block();
 
                 IntStream.range(0, 100).forEach(i ->
-                    testee.findMailboxById(MAILBOX_ID)
-                        .onErrorResume(e -> Mono.empty())
-                        .block());
+                        testee.findMailboxById(MAILBOX_ID)
+                                .onErrorResume(e -> Mono.empty())
+                                .block());
 
                 SoftAssertions.assertSoftly(Throwing.consumer(softly -> {
                     softly.assertThatThrownBy(() -> MailboxReactorUtils.blockOptional(testee.findMailboxById(MAILBOX_ID)))
-                        .isInstanceOf(MailboxNotFoundException.class);
+                            .isInstanceOf(MailboxNotFoundException.class);
                     softly(softly)
-                        .assertThat(testee.findMailboxByPath(MAILBOX_PATH).block())
-                        .isEqualTo(MAILBOX);
+                            .assertThat(testee.findMailboxByPath(MAILBOX_PATH).block())
+                            .isEqualTo(MAILBOX);
                 }));
             }
 
             @Test
             void findMailboxByPathShouldFixInconsistencyWhenMailboxIsNotReferencedById() {
                 mailboxPathV3DAO.save(MAILBOX)
-                    .block();
+                        .block();
 
                 IntStream.range(0, 100).forEach(i ->
-                    testee.findMailboxByPath(MAILBOX_PATH)
-                        .onErrorResume(e -> Mono.empty())
-                        .block());
+                        testee.findMailboxByPath(MAILBOX_PATH)
+                                .onErrorResume(e -> Mono.empty())
+                                .block());
 
                 SoftAssertions.assertSoftly(Throwing.consumer(softly -> {
                     softly.assertThatThrownBy(() -> MailboxReactorUtils.blockOptional(testee.findMailboxById(MAILBOX_ID)))
-                        .isInstanceOf(MailboxNotFoundException.class);
+                            .isInstanceOf(MailboxNotFoundException.class);
                     softly.assertThat(MailboxReactorUtils.blockOptional(testee.findMailboxByPath(MAILBOX_PATH)))
-                        .isEmpty();
+                            .isEmpty();
                 }));
             }
         }
 
         @Disabled("In order to be more performant mailboxPath V3 table includes the UID_VALIDITY." +
-            "Reading paths no longer requires reading the mailbox by id but this of course has a " +
-            "consistency cost.")
+                "Reading paths no longer requires reading the mailbox by id but this of course has a " +
+                "consistency cost.")
         @Test
         void createShouldBeConsistentWhenFailToPersistMailbox(CassandraCluster cassandra) {
             cassandra.getConf()
-                .registerScenario(fail()
-                    .times(10)
-                    .whenQueryStartsWith("INSERT INTO mailbox (id,name,uidvalidity,mailboxbase) VALUES (:id,:name,:uidvalidity,:mailboxbase);"));
+                    .registerScenario(fail()
+                            .times(10)
+                            .whenQueryStartsWith("INSERT INTO mailbox (id,name,uidvalidity,mailboxbase) VALUES (:id,:name,:uidvalidity,:mailboxbase);"));
 
             doQuietly(() -> testee.create(inboxPath, UID_VALIDITY).block());
 
             SoftAssertions.assertSoftly(softly -> {
                 softly.assertThat(testee.findMailboxByPath(inboxPath).blockOptional())
-                    .isEmpty();
+                        .isEmpty();
                 softly.assertThat(testee.findMailboxWithPathLike(inboxSearchQuery)
-                    .collectList().block())
-                    .isEmpty();
+                        .collectList().block())
+                        .isEmpty();
                 softly.assertThat(testee.findMailboxWithPathLike(allMailboxesSearchQuery)
-                    .collectList().block())
-                    .isEmpty();
+                        .collectList().block())
+                        .isEmpty();
             });
         }
 
@@ -394,9 +394,9 @@ class CassandraMailboxMapperTest {
             Mailbox inboxRenamed = createInboxRenamedMailbox(inboxId);
 
             cassandra.getConf()
-                .registerScenario(fail()
-                    .times(TRY_COUNT_BEFORE_FAILURE)
-                    .whenQueryStartsWith("SELECT id,mailboxbase,uidvalidity,name FROM mailbox WHERE id=:id;"));
+                    .registerScenario(fail()
+                            .times(TRY_COUNT_BEFORE_FAILURE)
+                            .whenQueryStartsWith("SELECT id,mailboxbase,uidvalidity,name FROM mailbox WHERE id=:id;"));
 
             doQuietly(() -> testee.rename(inboxRenamed));
 
@@ -404,16 +404,16 @@ class CassandraMailboxMapperTest {
 
             SoftAssertions.assertSoftly(Throwing.consumer(softly -> {
                 softly(softly)
-                    .assertThat(testee.findMailboxById(inboxId).block())
-                    .isEqualTo(inbox);
+                        .assertThat(testee.findMailboxById(inboxId).block())
+                        .isEqualTo(inbox);
                 softly(softly)
-                    .assertThat(testee.findMailboxByPath(inboxPath).block())
-                    .isEqualTo(inbox);
+                        .assertThat(testee.findMailboxByPath(inboxPath).block())
+                        .isEqualTo(inbox);
                 softly.assertThat(testee.findMailboxWithPathLike(inboxSearchQuery)
-                    .collectList().block())
-                    .hasOnlyOneElementSatisfying(searchMailbox -> softly(softly)
-                        .assertThat(searchMailbox)
-                        .isEqualTo(inbox));
+                        .collectList().block())
+                        .hasOnlyOneElementSatisfying(searchMailbox -> softly(softly)
+                                .assertThat(searchMailbox)
+                                .isEqualTo(inbox));
             }));
         }
 
@@ -425,18 +425,18 @@ class CassandraMailboxMapperTest {
             Mailbox inboxRenamed = createInboxRenamedMailbox(inboxId);
 
             cassandra.getConf()
-                .registerScenario(fail()
-                    .times(TRY_COUNT_BEFORE_FAILURE)
-                    .whenQueryStartsWith("SELECT id,mailboxbase,uidvalidity,name FROM mailbox WHERE id=:id;"));
+                    .registerScenario(fail()
+                            .times(TRY_COUNT_BEFORE_FAILURE)
+                            .whenQueryStartsWith("SELECT id,mailboxbase,uidvalidity,name FROM mailbox WHERE id=:id;"));
 
             doQuietly(() -> testee.rename(inboxRenamed).block());
 
             SoftAssertions.assertSoftly(Throwing.consumer(softly ->
-                softly.assertThat(testee.findMailboxWithPathLike(allMailboxesSearchQuery)
-                    .collectList().block())
-                    .hasOnlyOneElementSatisfying(searchMailbox -> softly(softly)
-                        .assertThat(searchMailbox)
-                        .isEqualTo(inbox))
+                    softly.assertThat(testee.findMailboxWithPathLike(allMailboxesSearchQuery)
+                            .collectList().block())
+                            .hasOnlyOneElementSatisfying(searchMailbox -> softly(softly)
+                                    .assertThat(searchMailbox)
+                                    .isEqualTo(inbox))
             ));
         }
 
@@ -448,18 +448,18 @@ class CassandraMailboxMapperTest {
             Mailbox inboxRenamed = createInboxRenamedMailbox(inboxId);
 
             cassandra.getConf()
-                .registerScenario(fail()
-                    .times(TRY_COUNT_BEFORE_FAILURE)
-                    .whenQueryStartsWith("SELECT id,mailboxbase,uidvalidity,name FROM mailbox WHERE id=:id;"));
+                    .registerScenario(fail()
+                            .times(TRY_COUNT_BEFORE_FAILURE)
+                            .whenQueryStartsWith("SELECT id,mailboxbase,uidvalidity,name FROM mailbox WHERE id=:id;"));
 
             doQuietly(() -> testee.rename(inboxRenamed).block());
 
             SoftAssertions.assertSoftly(Throwing.consumer(softly -> {
                 softly.assertThatThrownBy(() -> testee.findMailboxByPath(inboxPathRenamed).block())
-                    .isInstanceOf(MailboxNotFoundException.class);
+                        .isInstanceOf(MailboxNotFoundException.class);
                 softly.assertThat(testee.findMailboxWithPathLike(inboxRenamedSearchQuery)
-                    .collectList().block())
-                    .isEmpty();
+                        .collectList().block())
+                        .isEmpty();
             }));
         }
 
@@ -470,24 +470,24 @@ class CassandraMailboxMapperTest {
             Mailbox inboxRenamed = createInboxRenamedMailbox(inboxId);
 
             cassandra.getConf()
-                .registerScenario(fail()
-                    .times(TRY_COUNT_BEFORE_FAILURE)
-                    .whenQueryStartsWith("DELETE FROM mailboxPathV3 WHERE namespace=:namespace AND user=:user AND mailboxName=:mailboxName IF EXISTS;"));
+                    .registerScenario(fail()
+                            .times(TRY_COUNT_BEFORE_FAILURE)
+                            .whenQueryStartsWith("DELETE FROM mailboxPathV3 WHERE namespace=:namespace AND user=:user AND mailboxName=:mailboxName IF EXISTS;"));
 
             doQuietly(() -> testee.rename(inboxRenamed).block());
 
             SoftAssertions.assertSoftly(Throwing.consumer(softly -> {
                 softly(softly)
-                    .assertThat(testee.findMailboxById(inboxId).block())
-                    .isEqualTo(inbox);
+                        .assertThat(testee.findMailboxById(inboxId).block())
+                        .isEqualTo(inbox);
                 softly(softly)
-                    .assertThat(testee.findMailboxByPath(inboxPath).block())
-                    .isEqualTo(inbox);
+                        .assertThat(testee.findMailboxByPath(inboxPath).block())
+                        .isEqualTo(inbox);
                 softly.assertThat(testee.findMailboxWithPathLike(inboxSearchQuery)
-                    .collectList().block())
-                    .hasOnlyOneElementSatisfying(searchMailbox -> softly(softly)
-                        .assertThat(searchMailbox)
-                        .isEqualTo(inbox));
+                        .collectList().block())
+                        .hasOnlyOneElementSatisfying(searchMailbox -> softly(softly)
+                                .assertThat(searchMailbox)
+                                .isEqualTo(inbox));
             }));
         }
 
@@ -499,18 +499,18 @@ class CassandraMailboxMapperTest {
             Mailbox inboxRenamed = createInboxRenamedMailbox(inboxId);
 
             cassandra.getConf()
-                .registerScenario(fail()
-                    .times(TRY_COUNT_BEFORE_FAILURE)
-                    .whenQueryStartsWith("DELETE FROM mailboxPathV3 WHERE namespace=:namespace AND user=:user AND mailboxName=:mailboxName IF EXISTS;"));
+                    .registerScenario(fail()
+                            .times(TRY_COUNT_BEFORE_FAILURE)
+                            .whenQueryStartsWith("DELETE FROM mailboxPathV3 WHERE namespace=:namespace AND user=:user AND mailboxName=:mailboxName IF EXISTS;"));
 
             doQuietly(() -> testee.rename(inboxRenamed).block());
 
             SoftAssertions.assertSoftly(Throwing.consumer(softly ->
-                softly.assertThat(testee.findMailboxWithPathLike(allMailboxesSearchQuery)
-                    .collectList().block())
-                    .hasOnlyOneElementSatisfying(searchMailbox -> softly(softly)
-                        .assertThat(searchMailbox)
-                        .isEqualTo(inbox))));
+                    softly.assertThat(testee.findMailboxWithPathLike(allMailboxesSearchQuery)
+                            .collectList().block())
+                            .hasOnlyOneElementSatisfying(searchMailbox -> softly(softly)
+                                    .assertThat(searchMailbox)
+                                    .isEqualTo(inbox))));
         }
 
         @Disabled("JAMES-3056 find by renamed name returns unexpected results")
@@ -521,18 +521,18 @@ class CassandraMailboxMapperTest {
             Mailbox inboxRenamed = createInboxRenamedMailbox(inboxId);
 
             cassandra.getConf()
-                .registerScenario(fail()
-                    .times(TRY_COUNT_BEFORE_FAILURE)
-                    .whenQueryStartsWith("DELETE FROM mailboxPathV3 WHERE namespace=:namespace AND user=:user AND mailboxName=:mailboxName IF EXISTS;"));
+                    .registerScenario(fail()
+                            .times(TRY_COUNT_BEFORE_FAILURE)
+                            .whenQueryStartsWith("DELETE FROM mailboxPathV3 WHERE namespace=:namespace AND user=:user AND mailboxName=:mailboxName IF EXISTS;"));
 
             doQuietly(() -> testee.rename(inboxRenamed).block());
 
             SoftAssertions.assertSoftly(Throwing.consumer(softly -> {
                 softly.assertThatThrownBy(() -> testee.findMailboxByPath(inboxPathRenamed).block())
-                    .isInstanceOf(MailboxNotFoundException.class);
+                        .isInstanceOf(MailboxNotFoundException.class);
                 softly.assertThat(testee.findMailboxWithPathLike(inboxRenamedSearchQuery)
-                    .collectList().block())
-                    .isEmpty();
+                        .collectList().block())
+                        .isEmpty();
             }));
         }
 
@@ -543,27 +543,27 @@ class CassandraMailboxMapperTest {
             CassandraId inboxId = (CassandraId) inbox.getMailboxId();
 
             cassandra.getConf()
-                .registerScenario(fail()
-                    .times(TRY_COUNT_BEFORE_FAILURE)
-                    .whenQueryStartsWith("DELETE FROM mailbox WHERE id=:id;"));
+                    .registerScenario(fail()
+                            .times(TRY_COUNT_BEFORE_FAILURE)
+                            .whenQueryStartsWith("DELETE FROM mailbox WHERE id=:id;"));
 
             doQuietly(() -> testee.delete(inbox).block());
 
             SoftAssertions.assertSoftly(Throwing.consumer(softly -> {
                 softly.assertThatCode(() -> testee.findMailboxById(inboxId).block())
-                    .doesNotThrowAnyException();
+                        .doesNotThrowAnyException();
                 softly.assertThatCode(() -> testee.findMailboxByPath(inboxPath).block())
-                    .doesNotThrowAnyException();
+                        .doesNotThrowAnyException();
                 softly.assertThat(testee.findMailboxWithPathLike(inboxSearchQuery)
-                    .collectList().block())
-                    .hasOnlyOneElementSatisfying(searchMailbox -> softly(softly)
-                        .assertThat(searchMailbox)
-                        .isEqualTo(inbox));
+                        .collectList().block())
+                        .hasOnlyOneElementSatisfying(searchMailbox -> softly(softly)
+                                .assertThat(searchMailbox)
+                                .isEqualTo(inbox));
                 softly.assertThat(testee.findMailboxWithPathLike(allMailboxesSearchQuery)
-                    .collectList().block())
-                    .hasOnlyOneElementSatisfying(searchMailbox -> softly(softly)
-                        .assertThat(searchMailbox)
-                        .isEqualTo(inbox));
+                        .collectList().block())
+                        .hasOnlyOneElementSatisfying(searchMailbox -> softly(softly)
+                                .assertThat(searchMailbox)
+                                .isEqualTo(inbox));
             }));
         }
 
@@ -583,16 +583,16 @@ class CassandraMailboxMapperTest {
             testee.rename(mailboxHasSameNameWithInbox).block();
 
             assertThat(testee.findMailboxById(newId).block().getName())
-                .isNotEqualTo(testee.findMailboxById(inboxId).block().getName());
+                    .isNotEqualTo(testee.findMailboxById(inboxId).block().getName());
         }
 
         @Disabled("JAMES-3056 org.apache.james.mailbox.exception.MailboxNotFoundException: 'mailboxId' can not be found")
         @Test
         void createAfterPreviousFailedCreateShouldCreateAMailbox(CassandraCluster cassandra) {
             cassandra.getConf()
-                .registerScenario(fail()
-                    .times(TRY_COUNT_BEFORE_FAILURE)
-                    .whenQueryStartsWith("INSERT INTO mailbox (id,name,uidvalidity,mailboxbase) VALUES (:id,:name,:uidvalidity,:mailboxbase);"));
+                    .registerScenario(fail()
+                            .times(TRY_COUNT_BEFORE_FAILURE)
+                            .whenQueryStartsWith("INSERT INTO mailbox (id,name,uidvalidity,mailboxbase) VALUES (:id,:name,:uidvalidity,:mailboxbase);"));
 
             doQuietly(() -> testee.create(inboxPath, UID_VALIDITY).block());
 
@@ -600,27 +600,35 @@ class CassandraMailboxMapperTest {
 
             SoftAssertions.assertSoftly(Throwing.consumer(softly -> {
                 softly(softly)
-                    .assertThat(testee.findMailboxByPath(inboxPath).block())
-                    .isEqualTo(inbox);
+                        .assertThat(testee.findMailboxByPath(inboxPath).block())
+                        .isEqualTo(inbox);
                 softly.assertThat(testee.findMailboxWithPathLike(inboxSearchQuery)
-                    .collectList().block())
-                    .hasOnlyOneElementSatisfying(searchMailbox -> softly(softly)
-                        .assertThat(searchMailbox)
-                        .isEqualTo(inbox));
+                        .collectList().block())
+                        .hasOnlyOneElementSatisfying(searchMailbox -> softly(softly)
+                                .assertThat(searchMailbox)
+                                .isEqualTo(inbox));
                 softly.assertThat(testee.findMailboxWithPathLike(allMailboxesSearchQuery)
-                    .collectList().block())
-                    .hasOnlyOneElementSatisfying(searchMailbox -> softly(softly)
-                        .assertThat(searchMailbox)
-                        .isEqualTo(inbox));
+                        .collectList().block())
+                        .hasOnlyOneElementSatisfying(searchMailbox -> softly(softly)
+                                .assertThat(searchMailbox)
+                                .isEqualTo(inbox));
             }));
         }
 
         @Test
+        /*
+        https://builds.apache.org/blue/organizations/jenkins/james%2FApacheJames/detail/PR-268/38/tests
+        Expected size:<1> but was:<2> in:
+        <[Mailbox{id=44ec7c50-405c-11eb-bd9e-f9735674a69e, namespace=#private, user=Username{localPart=user, domainPart=Optional.empty}, name=INBOX},
+            Mailbox{id=4282f660-405c-11eb-bd9e-f9735674a69e, namespace=#private, user=Username{localPart=user, domainPart=Optional.empty}, name=name}]>
+        at CassandraMailboxMapperTest$ConsistencyTest.lambda$createAfterPreviousDeleteOnFailedCreateShouldCreateAMailbox$34(CassandraMailboxMapperTest$ConsistencyTest.java:628)
+         */
+        @Tag(Unstable.TAG)
         void createAfterPreviousDeleteOnFailedCreateShouldCreateAMailbox(CassandraCluster cassandra) {
             cassandra.getConf()
-                .registerScenario(fail()
-                    .times(TRY_COUNT_BEFORE_FAILURE)
-                    .whenQueryStartsWith("INSERT INTO mailbox (id,name,uidvalidity,mailboxbase) VALUES (:id,:name,:uidvalidity,:mailboxbase);"));
+                    .registerScenario(fail()
+                            .times(TRY_COUNT_BEFORE_FAILURE)
+                            .whenQueryStartsWith("INSERT INTO mailbox (id,name,uidvalidity,mailboxbase) VALUES (:id,:name,:uidvalidity,:mailboxbase);"));
 
             doQuietly(() -> testee.create(inboxPath, UID_VALIDITY).block());
             doQuietly(() -> testee.delete(new Mailbox(inboxPath, UID_VALIDITY, CassandraId.timeBased())).block());
@@ -629,18 +637,18 @@ class CassandraMailboxMapperTest {
 
             SoftAssertions.assertSoftly(Throwing.consumer(softly -> {
                 softly(softly)
-                    .assertThat(testee.findMailboxByPath(inboxPath).block())
-                    .isEqualTo(inbox);
+                        .assertThat(testee.findMailboxByPath(inboxPath).block())
+                        .isEqualTo(inbox);
                 softly.assertThat(testee.findMailboxWithPathLike(inboxSearchQuery)
-                    .collectList().block())
-                    .hasOnlyOneElementSatisfying(searchMailbox -> softly(softly)
-                        .assertThat(searchMailbox)
-                        .isEqualTo(inbox));
+                        .collectList().block())
+                        .hasOnlyOneElementSatisfying(searchMailbox -> softly(softly)
+                                .assertThat(searchMailbox)
+                                .isEqualTo(inbox));
                 softly.assertThat(testee.findMailboxWithPathLike(allMailboxesSearchQuery)
-                    .collectList().block())
-                    .hasOnlyOneElementSatisfying(searchMailbox -> softly(softly)
-                        .assertThat(searchMailbox)
-                        .isEqualTo(inbox));
+                        .collectList().block())
+                        .hasOnlyOneElementSatisfying(searchMailbox -> softly(softly)
+                                .assertThat(searchMailbox)
+                                .isEqualTo(inbox));
             }));
         }
 
@@ -650,9 +658,9 @@ class CassandraMailboxMapperTest {
             CassandraId inboxId = (CassandraId) inbox.getMailboxId();
 
             cassandra.getConf()
-                .registerScenario(fail()
-                    .times(TRY_COUNT_BEFORE_FAILURE)
-                    .whenQueryStartsWith("DELETE FROM mailbox WHERE id=:id;"));
+                    .registerScenario(fail()
+                            .times(TRY_COUNT_BEFORE_FAILURE)
+                            .whenQueryStartsWith("DELETE FROM mailbox WHERE id=:id;"));
 
             doQuietly(() -> testee.delete(inbox).block());
 
@@ -660,20 +668,20 @@ class CassandraMailboxMapperTest {
 
             SoftAssertions.assertSoftly(Throwing.consumer(softly -> {
                 softly.assertThatThrownBy(() -> testee.findMailboxById(inboxId).block())
-                    .hasCauseInstanceOf(MailboxNotFoundException.class);
-                    softly.assertThat(testee.findMailboxByPath(inboxPath).blockOptional())
+                        .hasCauseInstanceOf(MailboxNotFoundException.class);
+                softly.assertThat(testee.findMailboxByPath(inboxPath).blockOptional())
                         .isEmpty();
                 softly.assertThat(testee.findMailboxWithPathLike(inboxSearchQuery)
-                    .collectList().block())
-                    .isEmpty();
+                        .collectList().block())
+                        .isEmpty();
                 softly.assertThat(testee.findMailboxWithPathLike(allMailboxesSearchQuery)
-                    .collectList().block())
-                    .isEmpty();
+                        .collectList().block())
+                        .isEmpty();
             }));
         }
 
         @Disabled("JAMES-3056 mailbox name is not updated to INBOX_RENAMED).isEqualTo(" +
-            "findMailboxWithPathLike() returns a list with two same mailboxes")
+                "findMailboxWithPathLike() returns a list with two same mailboxes")
         @Test
         void renameAfterRenameFailOnRetrieveMailboxShouldRenameTheMailbox(CassandraCluster cassandra) {
             Mailbox inbox = testee.create(inboxPath, UID_VALIDITY).block();
@@ -681,9 +689,9 @@ class CassandraMailboxMapperTest {
             Mailbox inboxRenamed = createInboxRenamedMailbox(inboxId);
 
             cassandra.getConf()
-                .registerScenario(fail()
-                    .times(TRY_COUNT_BEFORE_FAILURE)
-                    .whenQueryStartsWith("SELECT id,mailboxbase,uidvalidity,name FROM mailbox WHERE id=:id;"));
+                    .registerScenario(fail()
+                            .times(TRY_COUNT_BEFORE_FAILURE)
+                            .whenQueryStartsWith("SELECT id,mailboxbase,uidvalidity,name FROM mailbox WHERE id=:id;"));
 
             doQuietly(() -> testee.rename(inboxRenamed).block());
 
@@ -691,24 +699,24 @@ class CassandraMailboxMapperTest {
 
             SoftAssertions.assertSoftly(Throwing.consumer(softly -> {
                 softly(softly)
-                    .assertThat(testee.findMailboxById(inboxId).block())
-                    .isEqualTo(inboxRenamed);
+                        .assertThat(testee.findMailboxById(inboxId).block())
+                        .isEqualTo(inboxRenamed);
                 softly(softly)
-                    .assertThat(testee.findMailboxByPath(inboxPathRenamed).block())
-                    .isEqualTo(inboxRenamed);
+                        .assertThat(testee.findMailboxByPath(inboxPathRenamed).block())
+                        .isEqualTo(inboxRenamed);
                 softly.assertThat(testee.findMailboxWithPathLike(inboxSearchQuery)
-                    .collectList().block())
-                    .isEmpty();
+                        .collectList().block())
+                        .isEmpty();
                 softly.assertThat(testee.findMailboxWithPathLike(inboxRenamedSearchQuery)
-                    .collectList().block())
-                    .hasOnlyOneElementSatisfying(searchMailbox -> softly(softly)
-                        .assertThat(searchMailbox)
-                        .isEqualTo(inboxRenamed));
+                        .collectList().block())
+                        .hasOnlyOneElementSatisfying(searchMailbox -> softly(softly)
+                                .assertThat(searchMailbox)
+                                .isEqualTo(inboxRenamed));
                 softly.assertThat(testee.findMailboxWithPathLike(allMailboxesSearchQuery)
-                    .collectList().block())
-                    .hasOnlyOneElementSatisfying(searchMailbox -> softly(softly)
-                        .assertThat(searchMailbox)
-                        .isEqualTo(inboxRenamed));
+                        .collectList().block())
+                        .hasOnlyOneElementSatisfying(searchMailbox -> softly(softly)
+                                .assertThat(searchMailbox)
+                                .isEqualTo(inboxRenamed));
             }));
         }
 
@@ -720,9 +728,9 @@ class CassandraMailboxMapperTest {
             Mailbox inboxRenamed = createInboxRenamedMailbox(inboxId);
 
             cassandra.getConf()
-                .registerScenario(fail()
-                    .times(TRY_COUNT_BEFORE_FAILURE)
-                    .whenQueryStartsWith("DELETE FROM mailboxPathV3 WHERE namespace=:namespace AND user=:user AND mailboxName=:mailboxName IF EXISTS;"));
+                    .registerScenario(fail()
+                            .times(TRY_COUNT_BEFORE_FAILURE)
+                            .whenQueryStartsWith("DELETE FROM mailboxPathV3 WHERE namespace=:namespace AND user=:user AND mailboxName=:mailboxName IF EXISTS;"));
 
             doQuietly(() -> testee.rename(inboxRenamed).block());
 
@@ -730,25 +738,25 @@ class CassandraMailboxMapperTest {
 
             SoftAssertions.assertSoftly(Throwing.consumer(softly -> {
                 softly(softly)
-                    .assertThat(testee.findMailboxById(inboxId).block())
-                    .isEqualTo(inboxRenamed);
+                        .assertThat(testee.findMailboxById(inboxId).block())
+                        .isEqualTo(inboxRenamed);
                 softly(softly)
-                    .assertThat(testee.findMailboxByPath(inboxPathRenamed).block())
-                    .isEqualTo(inboxRenamed);
+                        .assertThat(testee.findMailboxByPath(inboxPathRenamed).block())
+                        .isEqualTo(inboxRenamed);
                 softly.assertThat(testee.findMailboxWithPathLike(inboxSearchQuery)
-                    .collectList().block())
-                    .isEmpty();
+                        .collectList().block())
+                        .isEmpty();
                 softly.assertThat(testee.findMailboxWithPathLike(inboxRenamedSearchQuery)
-                    .collectList().block())
-                    .hasOnlyOneElementSatisfying(searchMailbox ->
-                        softly(softly)
-                            .assertThat(searchMailbox)
-                            .isEqualTo(inboxRenamed));
+                        .collectList().block())
+                        .hasOnlyOneElementSatisfying(searchMailbox ->
+                                softly(softly)
+                                        .assertThat(searchMailbox)
+                                        .isEqualTo(inboxRenamed));
                 softly.assertThat(testee.findMailboxWithPathLike(allMailboxesSearchQuery)
-                    .collectList().block())
-                    .hasOnlyOneElementSatisfying(searchMailbox -> softly(softly)
-                        .assertThat(searchMailbox)
-                        .isEqualTo(inboxRenamed));
+                        .collectList().block())
+                        .hasOnlyOneElementSatisfying(searchMailbox -> softly(softly)
+                                .assertThat(searchMailbox)
+                                .isEqualTo(inboxRenamed));
             }));
         }
 
@@ -773,10 +781,10 @@ class CassandraMailboxMapperTest {
 
         Mailbox newMailbox = new Mailbox(tooLongMailboxPath(mailbox.generateAssociatedPath()), UID_VALIDITY, mailbox.getMailboxId());
         assertThatThrownBy(() -> testee.rename(newMailbox).block())
-            .isInstanceOf(TooLongMailboxNameException.class);
+                .isInstanceOf(TooLongMailboxNameException.class);
 
         assertThat(mailboxPathV3DAO.retrieve(MAILBOX_PATH).blockOptional())
-            .isPresent();
+                .isPresent();
     }
 
     private MailboxPath tooLongMailboxPath(MailboxPath fromMailboxPath) {
@@ -789,72 +797,72 @@ class CassandraMailboxMapperTest {
         void setUp() {
             // Read repairs are not supported accross schema versions...
             setUpTestee(CassandraConfiguration.builder()
-                .mailboxReadRepair(0f)
-                .build());
+                    .mailboxReadRepair(0f)
+                    .build());
         }
 
         @Test
         void deleteShouldDeleteMailboxAndMailboxPathFromV1Table() {
             mailboxDAO.save(MAILBOX)
-                .block();
+                    .block();
             mailboxPathDAO.save(MAILBOX_PATH, MAILBOX_ID)
-                .block();
+                    .block();
 
             testee.delete(MAILBOX).block();
 
             assertThat(testee.findMailboxByPath(MAILBOX_PATH).blockOptional())
-                .isEmpty();
+                    .isEmpty();
         }
 
         @Test
         void deleteShouldDeleteMailboxAndMailboxPathFromV2Table() {
             mailboxDAO.save(MAILBOX)
-                .block();
+                    .block();
             mailboxPathV2DAO.save(MAILBOX_PATH, MAILBOX_ID)
-                .block();
+                    .block();
 
             testee.delete(MAILBOX).block();
 
             assertThat(testee.findMailboxByPath(MAILBOX_PATH).blockOptional())
-                .isEmpty();
+                    .isEmpty();
         }
 
         @Test
         void deleteShouldDeleteMailboxAndMailboxPathFromV3Table() {
             mailboxDAO.save(MAILBOX)
-                .block();
+                    .block();
             mailboxPathV3DAO.save(MAILBOX)
-                .block();
+                    .block();
 
             testee.delete(MAILBOX).block();
 
             assertThat(testee.findMailboxByPath(MAILBOX_PATH).blockOptional())
-                .isEmpty();
+                    .isEmpty();
         }
 
         @Test
         void deleteShouldDeleteMailboxAndMailboxPathFromAllTables() {
             mailboxDAO.save(MAILBOX)
-                .block();
+                    .block();
             mailboxPathDAO.save(MAILBOX_PATH, MAILBOX_ID)
-                .block();
+                    .block();
             mailboxPathV2DAO.save(MAILBOX_PATH, MAILBOX_ID)
-                .block();
+                    .block();
             mailboxPathV3DAO.save(MAILBOX)
-                .block();
+                    .block();
 
             testee.delete(MAILBOX).block();
 
             assertThat(testee.findMailboxByPath(MAILBOX_PATH).blockOptional())
-                .isEmpty();
+                    .isEmpty();
         }
 
         @Test
         void findMailboxByPathShouldReturnMailboxWhenExistsInV1Table() {
             mailboxDAO.save(MAILBOX)
-                .block();
+                    .block();
             mailboxPathDAO.save(MAILBOX_PATH, MAILBOX_ID)
-                .block();
+                    .block();
 
             Mailbox mailbox = testee.findMailboxByPath(MAILBOX_PATH).block();
 
@@ -864,9 +872,9 @@ class CassandraMailboxMapperTest {
         @Test
         void findMailboxByPathShouldReturnMailboxWhenExistsInV2Table() {
             mailboxDAO.save(MAILBOX)
-                .block();
+                    .block();
             mailboxPathV2DAO.save(MAILBOX_PATH, MAILBOX_ID)
-                .block();
+                    .block();
 
             Mailbox mailbox = testee.findMailboxByPath(MAILBOX_PATH).block();
 
@@ -876,9 +884,9 @@ class CassandraMailboxMapperTest {
         @Test
         void findMailboxByPathShouldReturnMailboxWhenExistsInV3Table() {
             mailboxDAO.save(MAILBOX)
-                .block();
+                    .block();
             mailboxPathV3DAO.save(MAILBOX)
-                .block();
+                    .block();
 
             Mailbox mailbox = testee.findMailboxByPath(MAILBOX_PATH).block();
 
@@ -888,13 +896,13 @@ class CassandraMailboxMapperTest {
         @Test
         void findMailboxByPathShouldReturnMailboxWhenExistsInAllTables() {
             mailboxDAO.save(MAILBOX)
-                .block();
+                    .block();
             mailboxPathDAO.save(MAILBOX_PATH, MAILBOX_ID)
-                .block();
+                    .block();
             mailboxPathV2DAO.save(MAILBOX_PATH, MAILBOX_ID)
-                .block();
+                    .block();
             mailboxPathV3DAO.save(MAILBOX)
-                .block();
+                    .block();
 
             Mailbox mailbox = testee.findMailboxByPath(MAILBOX_PATH).block();
 
@@ -904,69 +912,69 @@ class CassandraMailboxMapperTest {
         @Test
         void deleteShouldRemoveMailboxWhenInAllTables() {
             mailboxDAO.save(MAILBOX)
-                .block();
+                    .block();
             mailboxPathDAO.save(MAILBOX_PATH, MAILBOX_ID)
-                .block();
+                    .block();
             mailboxPathV2DAO.save(MAILBOX_PATH, MAILBOX_ID)
-                .block();
+                    .block();
             mailboxPathV3DAO.save(MAILBOX)
-                .block();
+                    .block();
 
             testee.delete(MAILBOX).block();
 
             assertThat(testee.findMailboxByPath(MAILBOX_PATH).blockOptional())
-                .isEmpty();
+                    .isEmpty();
         }
 
         @Test
         void deleteShouldRemoveMailboxWhenInV1Tables() {
             mailboxDAO.save(MAILBOX)
-                .block();
+                    .block();
             mailboxPathDAO.save(MAILBOX_PATH, MAILBOX_ID)
-                .block();
+                    .block();
 
             testee.delete(MAILBOX).block();
 
             assertThat(testee.findMailboxByPath(MAILBOX_PATH).blockOptional())
-                .isEmpty();
+                    .isEmpty();
         }
 
         @Test
         void deleteShouldRemoveMailboxWhenInV2Table() {
             mailboxDAO.save(MAILBOX)
-                .block();
+                    .block();
             mailboxPathV2DAO.save(MAILBOX_PATH, MAILBOX_ID)
-                .block();
+                    .block();
 
             testee.delete(MAILBOX).block();
 
             assertThat(testee.findMailboxByPath(MAILBOX_PATH).blockOptional())
-                .isEmpty();
+                    .isEmpty();
         }
 
         @Test
         void findMailboxByPathShouldThrowWhenDoesntExistInBothTables() {
             mailboxDAO.save(MAILBOX)
-                .block();
+                    .block();
 
             assertThat(testee.findMailboxByPath(MAILBOX_PATH).blockOptional())
-                .isEmpty();
+                    .isEmpty();
         }
 
         @Test
         void findMailboxWithPathLikeShouldReturnMailboxesWhenExistsInV1Table() {
             mailboxDAO.save(MAILBOX)
-                .block();
+                    .block();
             mailboxPathDAO.save(MAILBOX_PATH, MAILBOX_ID)
-                .block();
+                    .block();
 
             List<Mailbox> mailboxes = testee.findMailboxWithPathLike(MailboxQuery.builder()
-                .privateNamespace()
-                .username(USER)
-                .expression(Wildcard.INSTANCE)
-                .build()
-                .asUserBound())
-                .collectList().block();
+                    .privateNamespace()
+                    .username(USER)
+                    .expression(Wildcard.INSTANCE)
+                    .build()
+                    .asUserBound())
+                    .collectList().block();
 
             assertThat(mailboxes).containsOnly(MAILBOX);
         }
@@ -974,19 +982,19 @@ class CassandraMailboxMapperTest {
         @Test
         void findMailboxWithPathLikeShouldReturnMailboxesWhenExistsInBothTables() {
             mailboxDAO.save(MAILBOX)
-                .block();
+                    .block();
             mailboxPathDAO.save(MAILBOX_PATH, MAILBOX_ID)
-                .block();
+                    .block();
             mailboxPathV2DAO.save(MAILBOX_PATH, MAILBOX_ID)
-                .block();
+                    .block();
 
             List<Mailbox> mailboxes = testee.findMailboxWithPathLike(MailboxQuery.builder()
-                .privateNamespace()
-                .username(USER)
-                .expression(Wildcard.INSTANCE)
-                .build()
-                .asUserBound())
-                .collectList().block();
+                    .privateNamespace()
+                    .username(USER)
+                    .expression(Wildcard.INSTANCE)
+                    .build()
+                    .asUserBound())
+                    .collectList().block();
 
             assertThat(mailboxes).containsOnly(MAILBOX);
         }
@@ -994,17 +1002,17 @@ class CassandraMailboxMapperTest {
         @Test
         void findMailboxWithPathLikeShouldReturnMailboxesWhenExistsInV2Table() {
             mailboxDAO.save(MAILBOX)
-                .block();
+                    .block();
             mailboxPathV2DAO.save(MAILBOX_PATH, MAILBOX_ID)
-                .block();
+                    .block();
 
             List<Mailbox> mailboxes = testee.findMailboxWithPathLike(MailboxQuery.builder()
-                .privateNamespace()
-                .username(USER)
-                .expression(Wildcard.INSTANCE)
-                .build()
-                .asUserBound())
-                .collectList().block();
+                    .privateNamespace()
+                    .username(USER)
+                    .expression(Wildcard.INSTANCE)
+                    .build()
+                    .asUserBound())
+                    .collectList().block();
 
             assertThat(mailboxes).containsOnly(MAILBOX);
         }
@@ -1012,18 +1020,18 @@ class CassandraMailboxMapperTest {
         @Test
         void findMailboxWithPathLikeShouldReturnMailboxesWhenExistsInV3Table() {
             mailboxDAO.save(MAILBOX)
-                .block();
+                    .block();
             mailboxPathV3DAO.save(MAILBOX)
-                .block();
+                    .block();
 
             List<Mailbox> mailboxes = testee.findMailboxWithPathLike(MailboxQuery.builder()
-                .privateNamespace()
-                .username(USER)
-                .expression(Wildcard.INSTANCE)
-                .build()
-                .asUserBound())
-                .collectList()
-                .block();
+                    .privateNamespace()
+                    .username(USER)
+                    .expression(Wildcard.INSTANCE)
+                    .build()
+                    .asUserBound())
+                    .collectList()
+                    .block();
 
             assertThat(mailboxes).containsOnly(MAILBOX);
         }
@@ -1031,16 +1039,16 @@ class CassandraMailboxMapperTest {
         @Test
         void hasChildrenShouldReturnChildWhenExistsInV1Table() {
             mailboxDAO.save(MAILBOX)
-                .block();
+                    .block();
             mailboxPathDAO.save(MAILBOX_PATH, MAILBOX_ID)
-                .block();
+                    .block();
             CassandraId childMailboxId = CassandraId.timeBased();
             MailboxPath childMailboxPath = MailboxPath.forUser(USER, "name.child");
             Mailbox childMailbox = new Mailbox(childMailboxPath, UID_VALIDITY, childMailboxId);
             mailboxDAO.save(childMailbox)
-                .block();
+                    .block();
             mailboxPathDAO.save(childMailboxPath, childMailboxId)
-                .block();
+                    .block();
 
             boolean hasChildren = testee.hasChildren(MAILBOX, '.').block();
 
@@ -1050,18 +1058,18 @@ class CassandraMailboxMapperTest {
         @Test
         void hasChildrenShouldReturnChildWhenExistsInBothTables() {
             mailboxDAO.save(MAILBOX)
-                .block();
+                    .block();
             mailboxPathDAO.save(MAILBOX_PATH, MAILBOX_ID)
-                .block();
+                    .block();
             mailboxPathV2DAO.save(MAILBOX_PATH, MAILBOX_ID)
-                .block();
+                    .block();
             CassandraId childMailboxId = CassandraId.timeBased();
             MailboxPath childMailboxPath = MailboxPath.forUser(USER, "name.child");
             Mailbox childMailbox = new Mailbox(childMailboxPath, UID_VALIDITY, childMailboxId);
             mailboxDAO.save(childMailbox)
-                .block();
+                    .block();
             mailboxPathDAO.save(childMailboxPath, childMailboxId)
-                .block();
+                    .block();
 
             boolean hasChildren = testee.hasChildren(MAILBOX, '.').block();
 
@@ -1071,16 +1079,16 @@ class CassandraMailboxMapperTest {
         @Test
         void hasChildrenShouldReturnChildWhenExistsInV2Table() {
             mailboxDAO.save(MAILBOX)
-                .block();
+                    .block();
             mailboxPathV2DAO.save(MAILBOX_PATH, MAILBOX_ID)
-                .block();
+                    .block();
             CassandraId childMailboxId = CassandraId.timeBased();
             MailboxPath childMailboxPath = MailboxPath.forUser(USER, "name.child");
             Mailbox childMailbox = new Mailbox(childMailboxPath, UID_VALIDITY, childMailboxId);
             mailboxDAO.save(childMailbox)
-                .block();
+                    .block();
             mailboxPathV2DAO.save(childMailboxPath, childMailboxId)
-                .block();
+                    .block();
 
             boolean hasChildren = testee.hasChildren(MAILBOX, '.').block();
 
@@ -1090,16 +1098,16 @@ class CassandraMailboxMapperTest {
         @Test
         void hasChildrenShouldReturnChildWhenExistsInV3Table() {
             mailboxDAO.save(MAILBOX)
-                .block();
+                    .block();
             mailboxPathV3DAO.save(MAILBOX)
-                .block();
+                    .block();
             CassandraId childMailboxId = CassandraId.timeBased();
             MailboxPath childMailboxPath = MailboxPath.forUser(USER, "name.child");
             Mailbox childMailbox = new Mailbox(childMailboxPath, UID_VALIDITY, childMailboxId);
             mailboxDAO.save(childMailbox)
-                .block();
+                    .block();
             mailboxPathV3DAO.save(childMailbox)
-                .block();
+                    .block();
 
             boolean hasChildren = testee.hasChildren(MAILBOX, '.').block();
 
@@ -1115,14 +1123,14 @@ class CassandraMailboxMapperTest {
             mailboxPathDAO.save(MAILBOX_PATH, MAILBOX_ID_2).block();
 
             assertThat(testee.findMailboxWithPathLike(
-                MailboxQuery.builder()
-                    .privateNamespace()
-                    .username(USER)
-                    .expression(Wildcard.INSTANCE)
-                    .build()
-                    .asUserBound())
-                .collectList().block())
-                .containsOnly(MAILBOX);
+                    MailboxQuery.builder()
+                            .privateNamespace()
+                            .username(USER)
+                            .expression(Wildcard.INSTANCE)
+                            .build()
+                            .asUserBound())
+                    .collectList().block())
+                    .containsOnly(MAILBOX);
         }
     }
 }
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 d031a38..48d2a66 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
@@ -32,6 +32,7 @@ import org.apache.james.backends.cassandra.CassandraClusterExtension;
 import org.apache.james.backends.cassandra.StatementRecorder;
 import org.apache.james.backends.cassandra.init.configuration.CassandraConfiguration;
 import org.apache.james.core.Username;
+import org.apache.james.junit.categories.Unstable;
 import org.apache.james.mailbox.MailboxSession;
 import org.apache.james.mailbox.MailboxSessionUtil;
 import org.apache.james.mailbox.MessageManager;
@@ -46,6 +47,7 @@ import org.apache.james.mailbox.store.mail.model.MessageIdMapperTest;
 import org.apache.james.util.streams.Limit;
 import org.assertj.core.api.SoftAssertions;
 import org.junit.jupiter.api.Nested;
+import org.junit.jupiter.api.Tag;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.RegisterExtension;
 
@@ -90,6 +92,14 @@ class CassandraMessageIdMapperTest extends MessageIdMapperTest {
     }
 
     @Test
+    @Tag(Unstable.TAG)
+    /*
+    https://builds.apache.org/blue/organizations/jenkins/james%2FApacheJames/detail/PR-264/5/tests
+    Error
+    Could not send request, session is closed
+    Stacktrace
+    java.lang.IllegalStateException: Could not send request, session is closed
+     */
     void setFlagsShouldMinimizeMessageReads(CassandraCluster cassandra) throws Exception {
         CassandraMessageId.Factory messageIdFactory = new CassandraMessageId.Factory();
         CassandraMailboxSessionMapperFactory mapperFactory = TestCassandraMailboxSessionMapperFactory.forTests(
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 4282efa..881822f 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
@@ -32,6 +32,7 @@ import org.apache.james.backends.cassandra.CassandraClusterExtension;
 import org.apache.james.backends.cassandra.Scenario;
 import org.apache.james.backends.cassandra.components.CassandraModule;
 import org.apache.james.backends.cassandra.versions.CassandraSchemaVersionModule;
+import org.apache.james.junit.categories.Unstable;
 import org.apache.james.mailbox.MessageUid;
 import org.apache.james.mailbox.ModSeq;
 import org.apache.james.mailbox.cassandra.ids.CassandraId;
@@ -47,6 +48,7 @@ import org.apache.james.task.Task;
 import org.assertj.core.api.SoftAssertions;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Nested;
+import org.junit.jupiter.api.Tag;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.RegisterExtension;
 
@@ -638,7 +640,16 @@ public class SolveMessageInconsistenciesServiceTest {
                 .build());
     }
 
+    /*
+    Error
+    Cassandra timeout during SIMPLE write query at consistency QUORUM (1 replica were required but only 0 acknowledged the write)
+    Stacktrace
+    com.datastax.driver.core.exceptions.WriteTimeoutException: Cassandra timeout during SIMPLE write query at consistency QUORUM (1 replica were required but only 0 acknowledged the write)
+    Caused by: com.datastax.driver.core.exceptions.WriteTimeoutException: Cassandra timeout during SIMPLE write query at consistency QUORUM (1 replica were required but only 0 acknowledged the write)
+    https://builds.apache.org/blue/organizations/jenkins/james%2FApacheJames/detail/PR-268/39/tests
+    */
     @Test
+    @Tag(Unstable.TAG)
     void fixMailboxInconsistenciesShouldUpdateContextWhenDeleteError(CassandraCluster cassandra) {
         Context context = new Context();
 
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MailboxMapperACLTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MailboxMapperACLTest.java
index 2725022..f3e1382 100644
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MailboxMapperACLTest.java
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MailboxMapperACLTest.java
@@ -156,7 +156,7 @@ public abstract class MailboxMapperACLTest {
     }
 
     @Test
-    void updateAclShouldCombineStoredAclWhenAdd() {
+    protected void updateAclShouldCombineStoredAclWhenAdd() {
         EntryKey key = EntryKey.createUserEntryKey(USER);
         Rfc4314Rights rights = new Rfc4314Rights(Right.Administer, Right.PerformExpunge, Right.Write, Right.WriteSeenFlag);
         Rfc4314Rights newRights = new Rfc4314Rights(Right.WriteSeenFlag, Right.CreateMailbox, Right.Administer, Right.PerformExpunge, Right.DeleteMessages);
diff --git a/metrics/metrics-tests/src/test/java/org/apache/james/metrics/tests/RecordingMetricFactoryTest.java b/metrics/metrics-tests/src/test/java/org/apache/james/metrics/tests/RecordingMetricFactoryTest.java
index b8d001f..0afd5be 100644
--- a/metrics/metrics-tests/src/test/java/org/apache/james/metrics/tests/RecordingMetricFactoryTest.java
+++ b/metrics/metrics-tests/src/test/java/org/apache/james/metrics/tests/RecordingMetricFactoryTest.java
@@ -25,6 +25,7 @@ import java.time.Duration;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.atomic.AtomicInteger;
 
+import org.apache.james.junit.categories.Unstable;
 import org.apache.james.metrics.api.Metric;
 import org.apache.james.metrics.api.MetricFactory;
 import org.apache.james.metrics.api.MetricFactoryContract;
@@ -33,6 +34,7 @@ import org.apache.james.util.concurrency.ConcurrentTestRunner;
 import org.awaitility.Awaitility;
 import org.awaitility.core.ConditionFactory;
 import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Tag;
 import org.junit.jupiter.api.Test;
 
 import reactor.core.publisher.Mono;
@@ -126,6 +128,7 @@ class RecordingMetricFactoryTest implements MetricFactoryContract {
     }
 
     @Test
+    @Tag(Unstable.TAG)
     void decoratePublisherWithTimerMetricShouldRecordANewValueForEachRetry() {
         Duration duration = Duration.ofMillis(100);
         Mono.from(testee.decoratePublisherWithTimerMetric("any", Mono.delay(duration)))
@@ -139,6 +142,7 @@ class RecordingMetricFactoryTest implements MetricFactoryContract {
     }
 
     @Test
+    @Tag(Unstable.TAG)
     void decoratePublisherWithTimerMetricLogP99ShouldRecordANewValueForEachRetry() {
         Duration duration = Duration.ofMillis(100);
         Mono.from(testee.decoratePublisherWithTimerMetricLogP99("any", Mono.delay(duration)))
diff --git a/server/container/guice/guice-common/src/test/java/org/apache/james/MailsShouldBeWellReceived.java b/server/container/guice/guice-common/src/test/java/org/apache/james/MailsShouldBeWellReceived.java
index 98c910a..4834cc9 100644
--- a/server/container/guice/guice-common/src/test/java/org/apache/james/MailsShouldBeWellReceived.java
+++ b/server/container/guice/guice-common/src/test/java/org/apache/james/MailsShouldBeWellReceived.java
@@ -36,6 +36,7 @@ import javax.mail.internet.MimeMessage;
 import javax.mail.search.FlagTerm;
 
 import org.apache.james.core.Domain;
+import org.apache.james.junit.categories.Unstable;
 import org.apache.james.mailbox.DefaultMailboxes;
 import org.apache.james.modules.MailboxProbeImpl;
 import org.apache.james.modules.protocols.ImapGuiceProbe;
@@ -49,6 +50,7 @@ import org.apache.james.utils.TestIMAPClient;
 import org.apache.mailet.base.test.FakeMail;
 import org.awaitility.Awaitility;
 import org.awaitility.core.ConditionFactory;
+import org.junit.jupiter.api.Tag;
 import org.junit.jupiter.api.Test;
 
 import com.github.fge.lambdas.Throwing;
@@ -82,6 +84,10 @@ interface MailsShouldBeWellReceived {
     }
 
     @Test
+    @Tag(Unstable.TAG)
+    /*
+    Condition with lambda expression in org.apache.james.MailsShouldBeWellReceived that uses org.apache.james.GuiceJamesServer was not fulfilled within 10 seconds.
+     */
     default void mailsContentWithUnicodeCharactersShouldBeKeptUnChanged(GuiceJamesServer server) throws Exception {
         server.getProbe(DataProbeImpl.class).fluent()
             .addDomain(DOMAIN)
diff --git a/server/protocols/jmap-draft-integration-testing/memory-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/memory/MemorySpamAssassinContractTest.java b/server/protocols/jmap-draft-integration-testing/memory-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/memory/MemorySpamAssassinContractTest.java
index 7298fcf..a0f3afe 100644
--- a/server/protocols/jmap-draft-integration-testing/memory-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/memory/MemorySpamAssassinContractTest.java
+++ b/server/protocols/jmap-draft-integration-testing/memory-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/memory/MemorySpamAssassinContractTest.java
@@ -18,12 +18,16 @@
  ****************************************************************/
 package org.apache.james.jmap.memory;
 
+import org.apache.james.GuiceJamesServer;
 import org.apache.james.JamesServerBuilder;
 import org.apache.james.JamesServerExtension;
 import org.apache.james.MemoryJamesServerMain;
 import org.apache.james.jmap.draft.methods.integration.SpamAssassinContract;
 import org.apache.james.jmap.draft.methods.integration.SpamAssassinModuleExtension;
+import org.apache.james.junit.categories.Unstable;
 import org.apache.james.modules.TestJMAPServerModule;
+import org.apache.james.spamassassin.SpamAssassinExtension;
+import org.junit.jupiter.api.Tag;
 import org.junit.jupiter.api.extension.RegisterExtension;
 
 class MemorySpamAssassinContractTest implements SpamAssassinContract {
@@ -33,4 +37,46 @@ class MemorySpamAssassinContractTest implements SpamAssassinContract {
         .server(configuration -> MemoryJamesServerMain.createServer(configuration)
             .overrideWith(new TestJMAPServerModule()))
         .build();
+
+    @Override
+    @Tag(Unstable.TAG)
+    public void spamShouldBeDeliveredInSpamMailboxWhenSameMessageHasAlreadyBeenMovedToSpam(GuiceJamesServer jamesServer, SpamAssassinExtension.SpamAssassin spamAssassin) throws Exception {
+        SpamAssassinContract.super.spamShouldBeDeliveredInSpamMailboxWhenSameMessageHasAlreadyBeenMovedToSpam(jamesServer, spamAssassin);
+    }
+
+    @Override
+    @Tag(Unstable.TAG)
+    public void spamShouldBeDeliveredInSpamMailboxOrInboxWhenMultipleRecipientsConfigurations(GuiceJamesServer jamesServer, SpamAssassinExtension.SpamAssassin spamAssassin) throws Exception {
+        SpamAssassinContract.super.spamShouldBeDeliveredInSpamMailboxOrInboxWhenMultipleRecipientsConfigurations(jamesServer, spamAssassin);
+    }
+
+    @Override
+    @Tag(Unstable.TAG)
+    public void movingAMailToTrashShouldNotImpactSpamassassinLearning(GuiceJamesServer jamesServer, SpamAssassinExtension.SpamAssassin spamAssassin) throws Exception {
+        SpamAssassinContract.super.movingAMailToTrashShouldNotImpactSpamassassinLearning(jamesServer, spamAssassin);
+    }
+
+    @Override
+    @Tag(Unstable.TAG)
+    public void expungingSpamMessageShouldNotImpactSpamAssassinState(GuiceJamesServer jamesServer, SpamAssassinExtension.SpamAssassin spamAssassin) throws Exception {
+        SpamAssassinContract.super.expungingSpamMessageShouldNotImpactSpamAssassinState(jamesServer, spamAssassin);
+    }
+
+    @Override
+    @Tag(Unstable.TAG)
+    public void imapMovesToSpamMailboxShouldBeConsideredAsSpam(GuiceJamesServer jamesServer, SpamAssassinExtension.SpamAssassin spamAssassin) throws Exception {
+        SpamAssassinContract.super.imapMovesToSpamMailboxShouldBeConsideredAsSpam(jamesServer, spamAssassin);
+    }
+
+    @Override
+    @Tag(Unstable.TAG)
+    public void imapCopiesToSpamMailboxShouldBeConsideredAsSpam(GuiceJamesServer jamesServer, SpamAssassinExtension.SpamAssassin spamAssassin) throws Exception {
+        SpamAssassinContract.super.imapCopiesToSpamMailboxShouldBeConsideredAsSpam(jamesServer, spamAssassin);
+    }
+
+    @Override
+    @Tag(Unstable.TAG)
+    public void deletingSpamMessageShouldNotImpactSpamAssassinState(GuiceJamesServer jamesServer, SpamAssassinExtension.SpamAssassin spamAssassin) throws Exception {
+        SpamAssassinContract.super.deletingSpamMessageShouldNotImpactSpamAssassinState(jamesServer, spamAssassin);
+    }
 }
diff --git a/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/pom.xml b/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/pom.xml
index 7cdd223..29e4ec5 100644
--- a/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/pom.xml
+++ b/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/pom.xml
@@ -165,6 +165,7 @@
                     <!-- Fail tests longer than 20 minutes, prevent form random locking tests -->
                     <forkedProcessTimeoutInSeconds>1200</forkedProcessTimeoutInSeconds>
                     <groups combine.self="override">org.apache.james.junit.categories.BasicFeature,org.apache.james.jmap.categories.EnableCucumber</groups>
+                    <excludedGroups>org.apache.james.junit.categories.Unstable</excludedGroups>
                 </configuration>
             </plugin>
         </plugins>
@@ -181,7 +182,7 @@
                             <version>2.22.2</version>
                             <configuration>
                                 <excludedGroups></excludedGroups>
-                                <groups combine.self="override">unstable</groups>
+                                <groups combine.self="override">org.apache.james.junit.categories.Unstable</groups>
                             </configuration>
                         </plugin>
                     </plugins>
diff --git a/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/RabbitMQAwsS3JmapAuthenticationTest.java b/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/RabbitMQAwsS3JmapAuthenticationTest.java
index 86857c8..8bfbfea 100644
--- a/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/RabbitMQAwsS3JmapAuthenticationTest.java
+++ b/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/RabbitMQAwsS3JmapAuthenticationTest.java
@@ -25,9 +25,12 @@ import org.apache.james.DockerCassandraRule;
 import org.apache.james.GuiceJamesServer;
 import org.apache.james.jmap.FixedDateZonedDateTimeProvider;
 import org.apache.james.jmap.JMAPAuthenticationTest;
+import org.apache.james.junit.categories.Unstable;
 import org.apache.james.util.date.ZonedDateTimeProvider;
 import org.junit.Rule;
+import org.junit.experimental.categories.Category;
 
+@Category(Unstable.class)
 public class RabbitMQAwsS3JmapAuthenticationTest extends JMAPAuthenticationTest {
 
     @Rule
diff --git a/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/RabbitMQAwsS3SetMailboxesMethodTest.java b/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/RabbitMQAwsS3SetMailboxesMethodTest.java
index 7450656..4392b89 100644
--- a/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/RabbitMQAwsS3SetMailboxesMethodTest.java
+++ b/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/RabbitMQAwsS3SetMailboxesMethodTest.java
@@ -25,8 +25,11 @@ import org.apache.james.CassandraRabbitMQAwsS3JmapTestRule;
 import org.apache.james.DockerCassandraRule;
 import org.apache.james.GuiceJamesServer;
 import org.apache.james.jmap.draft.methods.integration.SetMailboxesMethodTest;
+import org.apache.james.junit.categories.Unstable;
 import org.junit.Rule;
+import org.junit.experimental.categories.Category;
 
+@Category(Unstable.class)
 public class RabbitMQAwsS3SetMailboxesMethodTest extends SetMailboxesMethodTest {
     @Rule
     public DockerCassandraRule cassandra = new DockerCassandraRule();
diff --git a/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/cucumber/awss3/RabbitMQDownloadCucumberTest.java b/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/cucumber/awss3/RabbitMQDownloadCucumberTest.java
index edc3842..cbab08f 100644
--- a/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/cucumber/awss3/RabbitMQDownloadCucumberTest.java
+++ b/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/cucumber/awss3/RabbitMQDownloadCucumberTest.java
@@ -20,6 +20,7 @@
 package org.apache.james.jmap.rabbitmq.cucumber.awss3;
 
 import org.apache.james.jmap.categories.EnableCucumber;
+import org.apache.james.junit.categories.Unstable;
 import org.junit.experimental.categories.Category;
 import org.junit.runner.RunWith;
 
@@ -31,6 +32,6 @@ import cucumber.api.junit.Cucumber;
                 glue = {"org.apache.james.jmap.draft.methods.integration", "org.apache.james.jmap.rabbitmq.cucumber.awss3"},
                 tags = {"not @Ignore", "@BasicFeature"},
                 strict = true)
-@Category(EnableCucumber.class)
+@Category({EnableCucumber.class, Unstable.class})
 public class RabbitMQDownloadCucumberTest {
 }
diff --git a/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/cucumber/awss3/RabbitMQGetMessagesMethodTest.java b/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/cucumber/awss3/RabbitMQGetMessagesMethodTest.java
index faf7374..9ecab7d 100644
--- a/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/cucumber/awss3/RabbitMQGetMessagesMethodTest.java
+++ b/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/cucumber/awss3/RabbitMQGetMessagesMethodTest.java
@@ -20,6 +20,7 @@
 package org.apache.james.jmap.rabbitmq.cucumber.awss3;
 
 import org.apache.james.jmap.categories.EnableCucumber;
+import org.apache.james.junit.categories.Unstable;
 import org.junit.experimental.categories.Category;
 import org.junit.runner.RunWith;
 
@@ -31,6 +32,6 @@ import cucumber.api.junit.Cucumber;
                 glue = {"org.apache.james.jmap.draft.methods.integration", "org.apache.james.jmap.rabbitmq.cucumber.awss3"},
                 tags = {"not @Ignore", "@BasicFeature"},
                 strict = true)
-@Category(EnableCucumber.class)
+@Category({EnableCucumber.class, Unstable.class})
 public class RabbitMQGetMessagesMethodTest {
 }
diff --git a/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/cucumber/awss3/RabbitMQMailboxSharingTest.java b/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/cucumber/awss3/RabbitMQMailboxSharingTest.java
index 4fce27a..46efe3f 100644
--- a/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/cucumber/awss3/RabbitMQMailboxSharingTest.java
+++ b/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/cucumber/awss3/RabbitMQMailboxSharingTest.java
@@ -20,6 +20,7 @@
 package org.apache.james.jmap.rabbitmq.cucumber.awss3;
 
 import org.apache.james.jmap.categories.EnableCucumber;
+import org.apache.james.junit.categories.Unstable;
 import org.junit.experimental.categories.Category;
 import org.junit.runner.RunWith;
 
@@ -38,6 +39,6 @@ import cucumber.api.junit.Cucumber;
     glue = { "org.apache.james.jmap.draft.methods.integration", "org.apache.james.jmap.rabbitmq.cucumber.awss3" },
     tags = {"not @Ignore", "@BasicFeature"},
     strict = true)
-@Category(EnableCucumber.class)
+@Category({EnableCucumber.class, Unstable.class})
 public class RabbitMQMailboxSharingTest {
 }
diff --git a/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/cucumber/awss3/RabbitMQMessageSharingTest.java b/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/cucumber/awss3/RabbitMQMessageSharingTest.java
index 9dc7fb2..e169391 100644
--- a/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/cucumber/awss3/RabbitMQMessageSharingTest.java
+++ b/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/cucumber/awss3/RabbitMQMessageSharingTest.java
@@ -20,6 +20,7 @@
 package org.apache.james.jmap.rabbitmq.cucumber.awss3;
 
 import org.apache.james.jmap.categories.EnableCucumber;
+import org.apache.james.junit.categories.Unstable;
 import org.junit.experimental.categories.Category;
 import org.junit.runner.RunWith;
 
@@ -39,6 +40,6 @@ import cucumber.api.junit.Cucumber;
     glue = { "org.apache.james.jmap.draft.methods.integration", "org.apache.james.jmap.rabbitmq.cucumber.awss3" },
     tags = {"not @Ignore", "@BasicFeature"},
     strict = true)
-@Category(EnableCucumber.class)
+@Category({EnableCucumber.class, Unstable.class})
 public class RabbitMQMessageSharingTest {
-}
+}
\ No newline at end of file
diff --git a/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/cucumber/awss3/RabbitMQSetMailboxesMethodCucumberTest.java b/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/cucumber/awss3/RabbitMQSetMailboxesMethodCucumberTest.java
index 8afa80b..32191e6 100644
--- a/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/cucumber/awss3/RabbitMQSetMailboxesMethodCucumberTest.java
+++ b/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/cucumber/awss3/RabbitMQSetMailboxesMethodCucumberTest.java
@@ -20,6 +20,7 @@
 package org.apache.james.jmap.rabbitmq.cucumber.awss3;
 
 import org.apache.james.jmap.categories.EnableCucumber;
+import org.apache.james.junit.categories.Unstable;
 import org.junit.experimental.categories.Category;
 import org.junit.runner.RunWith;
 
@@ -31,6 +32,6 @@ import cucumber.api.junit.Cucumber;
                 glue = { "org.apache.james.jmap.draft.methods.integration", "org.apache.james.jmap.rabbitmq.cucumber.awss3" },
                 tags = {"not @Ignore", "@BasicFeature"},
                 strict = true)
-@Category(EnableCucumber.class)
+@Category({EnableCucumber.class, Unstable.class})
 public class RabbitMQSetMailboxesMethodCucumberTest {
 }
diff --git a/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/cucumber/awss3/RabbitMQSetMessagesMethodCucumberTest.java b/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/cucumber/awss3/RabbitMQSetMessagesMethodCucumberTest.java
index 481f1b8..774957a 100644
--- a/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/cucumber/awss3/RabbitMQSetMessagesMethodCucumberTest.java
+++ b/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/cucumber/awss3/RabbitMQSetMessagesMethodCucumberTest.java
@@ -20,6 +20,7 @@
 package org.apache.james.jmap.rabbitmq.cucumber.awss3;
 
 import org.apache.james.jmap.categories.EnableCucumber;
+import org.apache.james.junit.categories.Unstable;
 import org.junit.experimental.categories.Category;
 import org.junit.runner.RunWith;
 
@@ -31,6 +32,6 @@ import cucumber.api.junit.Cucumber;
                 glue = {"org.apache.james.jmap.draft.methods.integration", "org.apache.james.jmap.rabbitmq.cucumber.awss3"},
                 tags = {"not @Ignore", "@BasicFeature"},
                 strict = true)
-@Category(EnableCucumber.class)
+@Category({EnableCucumber.class, Unstable.class})
 public class RabbitMQSetMessagesMethodCucumberTest {
 }
diff --git a/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/cucumber/awss3/RabbitMQUploadCucumberTest.java b/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/cucumber/awss3/RabbitMQUploadCucumberTest.java
index 8324ef4..73d780f 100644
--- a/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/cucumber/awss3/RabbitMQUploadCucumberTest.java
+++ b/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/cucumber/awss3/RabbitMQUploadCucumberTest.java
@@ -20,6 +20,7 @@
 package org.apache.james.jmap.rabbitmq.cucumber.awss3;
 
 import org.apache.james.jmap.categories.EnableCucumber;
+import org.apache.james.junit.categories.Unstable;
 import org.junit.experimental.categories.Category;
 import org.junit.runner.RunWith;
 
@@ -31,6 +32,6 @@ import cucumber.api.junit.Cucumber;
                 glue = {"org.apache.james.jmap.draft.methods.integration", "org.apache.james.jmap.rabbitmq.cucumber.awss3"},
                 tags = {"not @Ignore", "@BasicFeature"},
                 strict = true)
-@Category(EnableCucumber.class)
+@Category({EnableCucumber.class, Unstable.class})
 public class RabbitMQUploadCucumberTest {
 }
diff --git a/server/protocols/jmap-rfc-8621-integration-tests/memory-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/memory/MemoryEmailQueryMethodNoViewTest.java b/server/protocols/jmap-rfc-8621-integration-tests/memory-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/memory/MemoryEmailQueryMethodNoViewTest.java
index 8cbe04a..6e9ed34 100644
--- a/server/protocols/jmap-rfc-8621-integration-tests/memory-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/memory/MemoryEmailQueryMethodNoViewTest.java
+++ b/server/protocols/jmap-rfc-8621-integration-tests/memory-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/memory/MemoryEmailQueryMethodNoViewTest.java
@@ -26,8 +26,10 @@ import org.apache.james.JamesServerBuilder;
 import org.apache.james.JamesServerExtension;
 import org.apache.james.jmap.JMAPConfiguration;
 import org.apache.james.jmap.rfc8621.contract.EmailQueryMethodContract;
+import org.apache.james.junit.categories.Unstable;
 import org.apache.james.modules.TestJMAPServerModule;
 import org.junit.jupiter.api.Disabled;
+import org.junit.jupiter.api.Tag;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.RegisterExtension;
 
@@ -55,4 +57,18 @@ public class MemoryEmailQueryMethodNoViewTest implements EmailQueryMethodContrac
     @Disabled("JAMES-3377 Not supported for in-memory test" +
         "In memory do not attempt message parsing a performs a full match on the raw message content")
     public void emailQueryFilterByTextShouldIgnoreAttachmentContent(GuiceJamesServer server) {}
+
+    @Override
+    @Tag(Unstable.TAG)
+    public void shouldListMailsReceivedBeforeADate(GuiceJamesServer server) {
+        EmailQueryMethodContract.super.shouldListMailsReceivedBeforeADate(server);
+    }
+
+    @Override
+    @Tag(Unstable.TAG)
+    public void shouldListMailsReceivedAfterADate(GuiceJamesServer server) {
+        EmailQueryMethodContract.super.shouldListMailsReceivedAfterADate(server);
+    }
+
+
 }
diff --git a/server/protocols/jmap-rfc-8621-integration-tests/memory-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/memory/MemoryEmailQueryMethodTest.java b/server/protocols/jmap-rfc-8621-integration-tests/memory-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/memory/MemoryEmailQueryMethodTest.java
index 9782f60..99116a9 100644
--- a/server/protocols/jmap-rfc-8621-integration-tests/memory-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/memory/MemoryEmailQueryMethodTest.java
+++ b/server/protocols/jmap-rfc-8621-integration-tests/memory-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/memory/MemoryEmailQueryMethodTest.java
@@ -25,8 +25,10 @@ import org.apache.james.GuiceJamesServer;
 import org.apache.james.JamesServerBuilder;
 import org.apache.james.JamesServerExtension;
 import org.apache.james.jmap.rfc8621.contract.EmailQueryMethodContract;
+import org.apache.james.junit.categories.Unstable;
 import org.apache.james.modules.TestJMAPServerModule;
 import org.junit.jupiter.api.Disabled;
+import org.junit.jupiter.api.Tag;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.RegisterExtension;
 
@@ -48,4 +50,17 @@ public class MemoryEmailQueryMethodTest implements EmailQueryMethodContract {
     @Disabled("JAMES-3377 Not supported for in-memory test" +
         "In memory do not attempt message parsing a performs a full match on the raw message content")
     public void emailQueryFilterByTextShouldIgnoreAttachmentContent(GuiceJamesServer server) {}
+
+    @Override
+    @Tag(Unstable.TAG)
+    public void shouldListMailsReceivedBeforeADate(GuiceJamesServer server) {
+        EmailQueryMethodContract.super.shouldListMailsReceivedBeforeADate(server);
+    }
+
+    @Override
+    @Tag(Unstable.TAG)
+    public void shouldListMailsReceivedAfterADate(GuiceJamesServer server) {
+        EmailQueryMethodContract.super.shouldListMailsReceivedAfterADate(server);
+    }
+
 }
diff --git a/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/rabbitmq/FixingGhostMailboxTest.java b/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/rabbitmq/FixingGhostMailboxTest.java
index 83ed90a..fce1e7d 100644
--- a/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/rabbitmq/FixingGhostMailboxTest.java
+++ b/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/rabbitmq/FixingGhostMailboxTest.java
@@ -58,6 +58,7 @@ import org.apache.james.core.Username;
 import org.apache.james.jmap.AccessToken;
 import org.apache.james.jmap.draft.JmapGuiceProbe;
 import org.apache.james.junit.categories.BasicFeature;
+import org.apache.james.junit.categories.Unstable;
 import org.apache.james.mailbox.MessageManager.AppendCommand;
 import org.apache.james.mailbox.cassandra.mail.task.MailboxMergingTask;
 import org.apache.james.mailbox.cassandra.table.CassandraMailboxPathV3Table;
@@ -241,7 +242,16 @@ class FixingGhostMailboxTest {
                     .body(ARGUMENTS + ".messageIds", contains(message2.getMessageId().serialize())));
     }
 
+
+    /*
+     * 1 expectation failed.
+     * JSON path [0][1].messageIds doesn't match.
+     * Expected: a collection with size <2>
+     *   Actual: [95b42310-47b7-11eb-90b1-f5389ace5056]
+     * https://builds.apache.org/blue/organizations/jenkins/james%2FApacheJames/detail/PR-268/44/tests
+     */
     @Test
+    @Tag(Unstable.TAG)
     void webadminCanMergeTwoMailboxes() {
         MailboxId newAliceInbox = mailboxProbe.getMailboxId(MailboxConstants.USER_NAMESPACE, ALICE, MailboxConstants.INBOX);
 
diff --git a/server/testing/src/main/java/org/apache/james/junit/categories/Unstable.java b/testing/base/src/main/java/org/apache/james/junit/categories/Unstable.java
similarity index 100%
rename from server/testing/src/main/java/org/apache/james/junit/categories/Unstable.java
rename to testing/base/src/main/java/org/apache/james/junit/categories/Unstable.java
diff --git a/third-party/spamassassin/src/test/java/org/apache/james/spamassassin/SpamAssassinInvokerTest.java b/third-party/spamassassin/src/test/java/org/apache/james/spamassassin/SpamAssassinInvokerTest.java
index eee554c..caad9a7 100644
--- a/third-party/spamassassin/src/test/java/org/apache/james/spamassassin/SpamAssassinInvokerTest.java
+++ b/third-party/spamassassin/src/test/java/org/apache/james/spamassassin/SpamAssassinInvokerTest.java
@@ -26,6 +26,7 @@ import java.nio.charset.StandardCharsets;
 import javax.mail.internet.MimeMessage;
 
 import org.apache.james.core.Username;
+import org.apache.james.junit.categories.Unstable;
 import org.apache.james.metrics.tests.RecordingMetricFactory;
 import org.apache.james.spamassassin.SpamAssassinExtension.SpamAssassin;
 import org.apache.james.util.MimeMessageUtil;
@@ -33,10 +34,12 @@ import org.apache.mailet.Attribute;
 import org.apache.mailet.AttributeValue;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Disabled;
+import org.junit.jupiter.api.Tag;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.ExtendWith;
 
 @ExtendWith(SpamAssassinExtension.class)
+@Tag(Unstable.TAG)
 public class SpamAssassinInvokerTest {
 
     public static final Username USERNAME = Username.of("any@james");


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