From 8fff424ff19d0caa0e8e73a6aebe009ee20632a2 Mon Sep 17 00:00:00 2001 From: Benoit TELLIER Date: Tue, 28 Nov 2023 11:19:22 +0100 Subject: [PATCH 1/2] Switch PostgreSQL to NoPathLocker --- .../james/mailbox/postgres/openjpa/OpenJPAMailboxManager.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mailbox/postgres/src/main/java/org/apache/james/mailbox/postgres/openjpa/OpenJPAMailboxManager.java b/mailbox/postgres/src/main/java/org/apache/james/mailbox/postgres/openjpa/OpenJPAMailboxManager.java index ef172d4fdff..ebd617cef63 100644 --- a/mailbox/postgres/src/main/java/org/apache/james/mailbox/postgres/openjpa/OpenJPAMailboxManager.java +++ b/mailbox/postgres/src/main/java/org/apache/james/mailbox/postgres/openjpa/OpenJPAMailboxManager.java @@ -30,8 +30,8 @@ import org.apache.james.mailbox.model.Mailbox; import org.apache.james.mailbox.model.MessageId; import org.apache.james.mailbox.postgres.PostgresMailboxSessionMapperFactory; -import org.apache.james.mailbox.store.JVMMailboxPathLocker; import org.apache.james.mailbox.store.MailboxManagerConfiguration; +import org.apache.james.mailbox.store.NoMailboxPathLocker; import org.apache.james.mailbox.store.PreDeletionHooks; import org.apache.james.mailbox.store.StoreMailboxAnnotationManager; import org.apache.james.mailbox.store.StoreMailboxManager; @@ -63,7 +63,7 @@ public OpenJPAMailboxManager(PostgresMailboxSessionMapperFactory mapperFactory, MessageSearchIndex index, ThreadIdGuessingAlgorithm threadIdGuessingAlgorithm, Clock clock) { - super(mapperFactory, sessionProvider, new JVMMailboxPathLocker(), + super(mapperFactory, sessionProvider, new NoMailboxPathLocker(), messageParser, messageIdFactory, annotationManager, eventBus, storeRightManager, quotaComponents, index, MailboxManagerConfiguration.DEFAULT, PreDeletionHooks.NO_PRE_DELETION_HOOK, threadIdGuessingAlgorithm, clock); From a65d33b31d6a9c2ef7be4c6a83d58ecced4f6fd5 Mon Sep 17 00:00:00 2001 From: Benoit TELLIER Date: Tue, 28 Nov 2023 11:21:16 +0100 Subject: [PATCH 2/2] Renames: JPA -> Postgres --- ...nager.java => PostgresMailboxManager.java} | 26 +++++++++---------- .../postgres/JpaMailboxManagerProvider.java | 6 ++--- ... => PostgresMailboxManagerStressTest.java} | 8 +++--- ...t.java => PostgresMailboxManagerTest.java} | 10 +++---- .../postgres/host/PostgresHostSystem.java | 6 ++--- .../modules/mailbox/JPAMailboxModule.java | 10 +++---- 6 files changed, 33 insertions(+), 33 deletions(-) rename mailbox/postgres/src/main/java/org/apache/james/mailbox/postgres/openjpa/{OpenJPAMailboxManager.java => PostgresMailboxManager.java} (80%) rename mailbox/postgres/src/test/java/org/apache/james/mailbox/postgres/{JpaMailboxManagerStressTest.java => PostgresMailboxManagerStressTest.java} (88%) rename mailbox/postgres/src/test/java/org/apache/james/mailbox/postgres/{JPAMailboxManagerTest.java => PostgresMailboxManagerTest.java} (89%) diff --git a/mailbox/postgres/src/main/java/org/apache/james/mailbox/postgres/openjpa/OpenJPAMailboxManager.java b/mailbox/postgres/src/main/java/org/apache/james/mailbox/postgres/openjpa/PostgresMailboxManager.java similarity index 80% rename from mailbox/postgres/src/main/java/org/apache/james/mailbox/postgres/openjpa/OpenJPAMailboxManager.java rename to mailbox/postgres/src/main/java/org/apache/james/mailbox/postgres/openjpa/PostgresMailboxManager.java index ebd617cef63..b7ca18331d5 100644 --- a/mailbox/postgres/src/main/java/org/apache/james/mailbox/postgres/openjpa/OpenJPAMailboxManager.java +++ b/mailbox/postgres/src/main/java/org/apache/james/mailbox/postgres/openjpa/PostgresMailboxManager.java @@ -43,26 +43,26 @@ import org.apache.james.mailbox.store.search.MessageSearchIndex; /** - * OpenJPA implementation of MailboxManager + * PostgreSQL implementation of MailboxManager */ -public class OpenJPAMailboxManager extends StoreMailboxManager { +public class PostgresMailboxManager extends StoreMailboxManager { public static final EnumSet MAILBOX_CAPABILITIES = EnumSet.of(MailboxCapabilities.UserFlag, MailboxCapabilities.Namespace, MailboxCapabilities.Move, MailboxCapabilities.Annotation); @Inject - public OpenJPAMailboxManager(PostgresMailboxSessionMapperFactory mapperFactory, - SessionProvider sessionProvider, - MessageParser messageParser, - MessageId.Factory messageIdFactory, - EventBus eventBus, - StoreMailboxAnnotationManager annotationManager, - StoreRightManager storeRightManager, - QuotaComponents quotaComponents, - MessageSearchIndex index, - ThreadIdGuessingAlgorithm threadIdGuessingAlgorithm, - Clock clock) { + public PostgresMailboxManager(PostgresMailboxSessionMapperFactory mapperFactory, + SessionProvider sessionProvider, + MessageParser messageParser, + MessageId.Factory messageIdFactory, + EventBus eventBus, + StoreMailboxAnnotationManager annotationManager, + StoreRightManager storeRightManager, + QuotaComponents quotaComponents, + MessageSearchIndex index, + ThreadIdGuessingAlgorithm threadIdGuessingAlgorithm, + Clock clock) { super(mapperFactory, sessionProvider, new NoMailboxPathLocker(), messageParser, messageIdFactory, annotationManager, eventBus, storeRightManager, quotaComponents, diff --git a/mailbox/postgres/src/test/java/org/apache/james/mailbox/postgres/JpaMailboxManagerProvider.java b/mailbox/postgres/src/test/java/org/apache/james/mailbox/postgres/JpaMailboxManagerProvider.java index d6100b2ade8..67e56156e0d 100644 --- a/mailbox/postgres/src/test/java/org/apache/james/mailbox/postgres/JpaMailboxManagerProvider.java +++ b/mailbox/postgres/src/test/java/org/apache/james/mailbox/postgres/JpaMailboxManagerProvider.java @@ -36,7 +36,7 @@ import org.apache.james.mailbox.acl.UnionMailboxACLResolver; import org.apache.james.mailbox.postgres.mail.JPAModSeqProvider; import org.apache.james.mailbox.postgres.mail.JPAUidProvider; -import org.apache.james.mailbox.postgres.openjpa.OpenJPAMailboxManager; +import org.apache.james.mailbox.postgres.openjpa.PostgresMailboxManager; import org.apache.james.mailbox.store.SessionProviderImpl; import org.apache.james.mailbox.store.StoreMailboxAnnotationManager; import org.apache.james.mailbox.store.StoreRightManager; @@ -55,7 +55,7 @@ public class JpaMailboxManagerProvider { private static final int LIMIT_ANNOTATIONS = 3; private static final int LIMIT_ANNOTATION_SIZE = 30; - public static OpenJPAMailboxManager provideMailboxManager(JpaTestCluster jpaTestCluster, PostgresExtension postgresExtension) { + public static PostgresMailboxManager provideMailboxManager(JpaTestCluster jpaTestCluster, PostgresExtension postgresExtension) { EntityManagerFactory entityManagerFactory = jpaTestCluster.getEntityManagerFactory(); JPAConfiguration jpaConfiguration = JPAConfiguration.builder() @@ -81,7 +81,7 @@ public static OpenJPAMailboxManager provideMailboxManager(JpaTestCluster jpaTest QuotaComponents quotaComponents = QuotaComponents.disabled(sessionProvider, mf); MessageSearchIndex index = new SimpleMessageSearchIndex(mf, mf, new DefaultTextExtractor(), new JPAAttachmentContentLoader()); - return new OpenJPAMailboxManager(mf, sessionProvider, + return new PostgresMailboxManager(mf, sessionProvider, messageParser, new DefaultMessageId.Factory(), eventBus, annotationManager, storeRightManager, quotaComponents, index, new NaiveThreadIdGuessingAlgorithm(), new UpdatableTickingClock(Instant.now())); diff --git a/mailbox/postgres/src/test/java/org/apache/james/mailbox/postgres/JpaMailboxManagerStressTest.java b/mailbox/postgres/src/test/java/org/apache/james/mailbox/postgres/PostgresMailboxManagerStressTest.java similarity index 88% rename from mailbox/postgres/src/test/java/org/apache/james/mailbox/postgres/JpaMailboxManagerStressTest.java rename to mailbox/postgres/src/test/java/org/apache/james/mailbox/postgres/PostgresMailboxManagerStressTest.java index ea1ce952e42..751be0683aa 100644 --- a/mailbox/postgres/src/test/java/org/apache/james/mailbox/postgres/JpaMailboxManagerStressTest.java +++ b/mailbox/postgres/src/test/java/org/apache/james/mailbox/postgres/PostgresMailboxManagerStressTest.java @@ -25,21 +25,21 @@ import org.apache.james.backends.postgres.PostgresExtension; import org.apache.james.events.EventBus; import org.apache.james.mailbox.MailboxManagerStressContract; -import org.apache.james.mailbox.postgres.openjpa.OpenJPAMailboxManager; +import org.apache.james.mailbox.postgres.openjpa.PostgresMailboxManager; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.extension.RegisterExtension; -class JpaMailboxManagerStressTest implements MailboxManagerStressContract { +class PostgresMailboxManagerStressTest implements MailboxManagerStressContract { @RegisterExtension static PostgresExtension postgresExtension = PostgresExtension.withoutRowLevelSecurity(PostgresMailboxAggregateModule.MODULE); static final JpaTestCluster JPA_TEST_CLUSTER = JpaTestCluster.create(JPAMailboxFixture.MAILBOX_PERSISTANCE_CLASSES); - Optional openJPAMailboxManager = Optional.empty(); + Optional openJPAMailboxManager = Optional.empty(); @Override - public OpenJPAMailboxManager getManager() { + public PostgresMailboxManager getManager() { return openJPAMailboxManager.get(); } diff --git a/mailbox/postgres/src/test/java/org/apache/james/mailbox/postgres/JPAMailboxManagerTest.java b/mailbox/postgres/src/test/java/org/apache/james/mailbox/postgres/PostgresMailboxManagerTest.java similarity index 89% rename from mailbox/postgres/src/test/java/org/apache/james/mailbox/postgres/JPAMailboxManagerTest.java rename to mailbox/postgres/src/test/java/org/apache/james/mailbox/postgres/PostgresMailboxManagerTest.java index bc98c13a50c..4576e51c479 100644 --- a/mailbox/postgres/src/test/java/org/apache/james/mailbox/postgres/JPAMailboxManagerTest.java +++ b/mailbox/postgres/src/test/java/org/apache/james/mailbox/postgres/PostgresMailboxManagerTest.java @@ -25,7 +25,7 @@ import org.apache.james.events.EventBus; import org.apache.james.mailbox.MailboxManagerTest; import org.apache.james.mailbox.SubscriptionManager; -import org.apache.james.mailbox.postgres.openjpa.OpenJPAMailboxManager; +import org.apache.james.mailbox.postgres.openjpa.PostgresMailboxManager; import org.apache.james.mailbox.store.StoreSubscriptionManager; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.Disabled; @@ -33,7 +33,7 @@ import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.RegisterExtension; -class JPAMailboxManagerTest extends MailboxManagerTest { +class PostgresMailboxManagerTest extends MailboxManagerTest { @Disabled("JPAMailboxManager is using DefaultMessageId which doesn't support full feature of a messageId, which is an essential" + " element of the Vault") @@ -45,10 +45,10 @@ class HookTests { static PostgresExtension postgresExtension = PostgresExtension.withoutRowLevelSecurity(PostgresMailboxAggregateModule.MODULE); static final JpaTestCluster JPA_TEST_CLUSTER = JpaTestCluster.create(JPAMailboxFixture.MAILBOX_PERSISTANCE_CLASSES); - Optional openJPAMailboxManager = Optional.empty(); + Optional openJPAMailboxManager = Optional.empty(); @Override - protected OpenJPAMailboxManager provideMailboxManager() { + protected PostgresMailboxManager provideMailboxManager() { if (!openJPAMailboxManager.isPresent()) { openJPAMailboxManager = Optional.of(JpaMailboxManagerProvider.provideMailboxManager(JPA_TEST_CLUSTER, postgresExtension)); } @@ -79,7 +79,7 @@ class SaveDateTests { } @Override - protected EventBus retrieveEventBus(OpenJPAMailboxManager mailboxManager) { + protected EventBus retrieveEventBus(PostgresMailboxManager mailboxManager) { return mailboxManager.getEventBus(); } } diff --git a/mpt/impl/imap-mailbox/postgres/src/test/java/org/apache/james/mpt/imapmailbox/postgres/host/PostgresHostSystem.java b/mpt/impl/imap-mailbox/postgres/src/test/java/org/apache/james/mpt/imapmailbox/postgres/host/PostgresHostSystem.java index 9fc4823f9a3..f59ebdc29c2 100644 --- a/mpt/impl/imap-mailbox/postgres/src/test/java/org/apache/james/mpt/imapmailbox/postgres/host/PostgresHostSystem.java +++ b/mpt/impl/imap-mailbox/postgres/src/test/java/org/apache/james/mpt/imapmailbox/postgres/host/PostgresHostSystem.java @@ -45,7 +45,7 @@ import org.apache.james.mailbox.postgres.PostgresMailboxSessionMapperFactory; import org.apache.james.mailbox.postgres.mail.JPAModSeqProvider; import org.apache.james.mailbox.postgres.mail.JPAUidProvider; -import org.apache.james.mailbox.postgres.openjpa.OpenJPAMailboxManager; +import org.apache.james.mailbox.postgres.openjpa.PostgresMailboxManager; import org.apache.james.mailbox.postgres.quota.JPAPerUserMaxQuotaDAO; import org.apache.james.mailbox.postgres.quota.JPAPerUserMaxQuotaManager; import org.apache.james.mailbox.postgres.quota.JpaCurrentQuotaManager; @@ -95,7 +95,7 @@ static PostgresHostSystem build(PostgresExtension postgresExtension) { } private JPAPerUserMaxQuotaManager maxQuotaManager; - private OpenJPAMailboxManager mailboxManager; + private PostgresMailboxManager mailboxManager; private final PostgresExtension postgresExtension; public PostgresHostSystem(PostgresExtension postgresExtension) { this.postgresExtension = postgresExtension; @@ -134,7 +134,7 @@ public void beforeTest() throws Exception { AttachmentContentLoader attachmentContentLoader = null; MessageSearchIndex index = new SimpleMessageSearchIndex(mapperFactory, mapperFactory, new DefaultTextExtractor(), attachmentContentLoader); - mailboxManager = new OpenJPAMailboxManager(mapperFactory, sessionProvider, messageParser, new DefaultMessageId.Factory(), + mailboxManager = new PostgresMailboxManager(mapperFactory, sessionProvider, messageParser, new DefaultMessageId.Factory(), eventBus, annotationManager, storeRightManager, quotaComponents, index, new NaiveThreadIdGuessingAlgorithm(), new UpdatableTickingClock(Instant.now())); eventBus.register(quotaUpdater); diff --git a/server/container/guice/mailbox-postgres/src/main/java/org/apache/james/modules/mailbox/JPAMailboxModule.java b/server/container/guice/mailbox-postgres/src/main/java/org/apache/james/modules/mailbox/JPAMailboxModule.java index 8f92d0e27cb..6ed2a5cca34 100644 --- a/server/container/guice/mailbox-postgres/src/main/java/org/apache/james/modules/mailbox/JPAMailboxModule.java +++ b/server/container/guice/mailbox-postgres/src/main/java/org/apache/james/modules/mailbox/JPAMailboxModule.java @@ -46,7 +46,7 @@ import org.apache.james.mailbox.postgres.PostgresMailboxSessionMapperFactory; import org.apache.james.mailbox.postgres.mail.JPAModSeqProvider; import org.apache.james.mailbox.postgres.mail.JPAUidProvider; -import org.apache.james.mailbox.postgres.openjpa.OpenJPAMailboxManager; +import org.apache.james.mailbox.postgres.openjpa.PostgresMailboxManager; import org.apache.james.mailbox.store.JVMMailboxPathLocker; import org.apache.james.mailbox.store.MailboxManagerConfiguration; import org.apache.james.mailbox.store.MailboxSessionMapperFactory; @@ -84,7 +84,7 @@ protected void configure() { install(new JPAEntityManagerModule()); bind(PostgresMailboxSessionMapperFactory.class).in(Scopes.SINGLETON); - bind(OpenJPAMailboxManager.class).in(Scopes.SINGLETON); + bind(PostgresMailboxManager.class).in(Scopes.SINGLETON); bind(JVMMailboxPathLocker.class).in(Scopes.SINGLETON); bind(StoreSubscriptionManager.class).in(Scopes.SINGLETON); bind(JPAModSeqProvider.class).in(Scopes.SINGLETON); @@ -110,8 +110,8 @@ protected void configure() { bind(SubscriptionManager.class).to(StoreSubscriptionManager.class); bind(MailboxPathLocker.class).to(JVMMailboxPathLocker.class); bind(Authenticator.class).to(UserRepositoryAuthenticator.class); - bind(MailboxManager.class).to(OpenJPAMailboxManager.class); - bind(StoreMailboxManager.class).to(OpenJPAMailboxManager.class); + bind(MailboxManager.class).to(PostgresMailboxManager.class); + bind(StoreMailboxManager.class).to(PostgresMailboxManager.class); bind(SessionProvider.class).to(SessionProviderImpl.class); bind(Authorizator.class).to(UserRepositoryAuthorizator.class); bind(MailboxId.Factory.class).to(JPAId.Factory.class); @@ -145,7 +145,7 @@ protected void configure() { @Singleton private static class JPAMailboxManagerDefinition extends MailboxManagerDefinition { @Inject - private JPAMailboxManagerDefinition(OpenJPAMailboxManager manager) { + private JPAMailboxManagerDefinition(PostgresMailboxManager manager) { super("jpa-mailboxmanager", manager); } }