You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by bt...@apache.org on 2019/12/18 11:29:50 UTC

[james-project] 03/06: JAMES-2993 Not stopping MemoryTaskManager results in deadlock

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

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

commit 44175bfbbfabd50eee4d7db79b906be216796f7f
Author: Benoit Tellier <bt...@linagora.com>
AuthorDate: Mon Dec 16 19:27:12 2019 +0700

    JAMES-2993 Not stopping MemoryTaskManager results in deadlock
    
    This results in Reactor boundedElastic thread exaustion
---
 .../james/webadmin/routes/MailboxesRoutesTest.java |  4 +++-
 .../james/webadmin/routes/MessageRoutesTest.java   | 12 +++--------
 .../webadmin/routes/UserMailboxesRoutesTest.java   | 24 +++++++++++++---------
 3 files changed, 20 insertions(+), 20 deletions(-)

diff --git a/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/MailboxesRoutesTest.java b/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/MailboxesRoutesTest.java
index 67b0043..5f0a977 100644
--- a/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/MailboxesRoutesTest.java
+++ b/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/MailboxesRoutesTest.java
@@ -74,11 +74,12 @@ class MailboxesRoutesTest {
     private WebAdminServer webAdminServer;
     private ListeningMessageSearchIndex searchIndex;
     private InMemoryMailboxManager mailboxManager;
+    private MemoryTaskManager taskManager;
 
     @BeforeEach
     void beforeEach() {
         mailboxManager = InMemoryIntegrationResources.defaultResources().getMailboxManager();
-        MemoryTaskManager taskManager = new MemoryTaskManager(new Hostname("foo"));
+        taskManager = new MemoryTaskManager(new Hostname("foo"));
         InMemoryId.Factory mailboxIdFactory = new InMemoryId.Factory();
         searchIndex = mock(ListeningMessageSearchIndex.class);
         ReIndexerPerformer reIndexerPerformer = new ReIndexerPerformer(
@@ -108,6 +109,7 @@ class MailboxesRoutesTest {
     @AfterEach
     void tearDown() {
         webAdminServer.destroy();
+        taskManager.stop();
     }
 
     @Nested
diff --git a/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/MessageRoutesTest.java b/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/MessageRoutesTest.java
index 6d068fb..46ef7e6 100644
--- a/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/MessageRoutesTest.java
+++ b/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/MessageRoutesTest.java
@@ -32,8 +32,6 @@ import static org.mockito.Mockito.verifyNoMoreInteractions;
 import org.apache.james.core.Username;
 import org.apache.james.mailbox.MailboxSession;
 import org.apache.james.mailbox.MessageManager;
-import org.apache.james.mailbox.indexer.ReIndexer;
-import org.apache.james.mailbox.inmemory.InMemoryId;
 import org.apache.james.mailbox.inmemory.InMemoryMailboxManager;
 import org.apache.james.mailbox.inmemory.InMemoryMessageId;
 import org.apache.james.mailbox.inmemory.manager.InMemoryIntegrationResources;
@@ -50,7 +48,6 @@ import org.apache.james.webadmin.utils.ErrorResponder;
 import org.apache.james.webadmin.utils.JsonTransformer;
 import org.apache.mailbox.tools.indexer.MessageIdReIndexerImpl;
 import org.apache.mailbox.tools.indexer.MessageIdReIndexingTask;
-import org.apache.mailbox.tools.indexer.ReIndexerImpl;
 import org.apache.mailbox.tools.indexer.ReIndexerPerformer;
 import org.eclipse.jetty.http.HttpStatus;
 import org.junit.jupiter.api.AfterEach;
@@ -68,21 +65,17 @@ class MessageRoutesTest {
     private WebAdminServer webAdminServer;
     private ListeningMessageSearchIndex searchIndex;
     private InMemoryMailboxManager mailboxManager;
+    private MemoryTaskManager taskManager;
 
     @BeforeEach
     void beforeEach() {
+        taskManager = new MemoryTaskManager(new Hostname("foo"));
         mailboxManager = InMemoryIntegrationResources.defaultResources().getMailboxManager();
-        MemoryTaskManager taskManager = new MemoryTaskManager(new Hostname("foo"));
-        InMemoryId.Factory mailboxIdFactory = new InMemoryId.Factory();
         searchIndex = mock(ListeningMessageSearchIndex.class);
         ReIndexerPerformer reIndexerPerformer = new ReIndexerPerformer(
             mailboxManager,
             searchIndex,
             mailboxManager.getMapperFactory());
-        ReIndexer reIndexer = new ReIndexerImpl(
-            reIndexerPerformer,
-            mailboxManager,
-            mailboxManager.getMapperFactory());
         JsonTransformer jsonTransformer = new JsonTransformer();
 
         webAdminServer = WebAdminUtils.createWebAdminServer(
@@ -100,6 +93,7 @@ class MessageRoutesTest {
     @AfterEach
     void tearDown() {
         webAdminServer.destroy();
+        taskManager.stop();
     }
 
     @Nested
diff --git a/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/UserMailboxesRoutesTest.java b/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/UserMailboxesRoutesTest.java
index b33bafb..c73e71e 100644
--- a/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/UserMailboxesRoutesTest.java
+++ b/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/UserMailboxesRoutesTest.java
@@ -39,6 +39,7 @@ import java.util.List;
 import java.util.Map;
 
 import org.apache.james.core.Username;
+import org.apache.james.mailbox.MailboxManager;
 import org.apache.james.mailbox.MailboxSession;
 import org.apache.james.mailbox.MailboxSessionUtil;
 import org.apache.james.mailbox.MessageManager;
@@ -55,6 +56,7 @@ import org.apache.james.mailbox.model.MailboxId;
 import org.apache.james.mailbox.model.MailboxMetaData;
 import org.apache.james.mailbox.model.MailboxPath;
 import org.apache.james.mailbox.model.search.MailboxQuery;
+import org.apache.james.mailbox.store.MailboxSessionMapperFactory;
 import org.apache.james.mailbox.store.mail.model.MailboxMessage;
 import org.apache.james.mailbox.store.search.ListeningMessageSearchIndex;
 import org.apache.james.task.Hostname;
@@ -89,23 +91,23 @@ class UserMailboxesRoutesTest {
     private WebAdminServer webAdminServer;
     private UsersRepository usersRepository;
     private ListeningMessageSearchIndex searchIndex;
+    private MemoryTaskManager taskManager;
 
-    private void createServer(InMemoryMailboxManager mailboxManager) throws Exception {
+    private void createServer(MailboxManager mailboxManager, MailboxSessionMapperFactory mapperFactory) throws Exception {
         usersRepository = mock(UsersRepository.class);
         when(usersRepository.contains(USERNAME)).thenReturn(true);
 
 
-        MemoryTaskManager taskManager = new MemoryTaskManager(new Hostname("foo"));
-        InMemoryId.Factory mailboxIdFactory = new InMemoryId.Factory();
+        taskManager = new MemoryTaskManager(new Hostname("foo"));
         searchIndex = mock(ListeningMessageSearchIndex.class);
         ReIndexerPerformer reIndexerPerformer = new ReIndexerPerformer(
             mailboxManager,
             searchIndex,
-            mailboxManager.getMapperFactory());
+            mapperFactory);
         ReIndexer reIndexer = new ReIndexerImpl(
             reIndexerPerformer,
             mailboxManager,
-            mailboxManager.getMapperFactory());
+            mapperFactory);
 
         webAdminServer = WebAdminUtils.createWebAdminServer(
                 new UserMailboxesRoutes(new UserMailboxesService(mailboxManager, usersRepository), new JsonTransformer(),
@@ -121,6 +123,7 @@ class UserMailboxesRoutesTest {
     @AfterEach
     void tearDown() {
         webAdminServer.destroy();
+        taskManager.stop();
     }
 
     @Nested
@@ -128,7 +131,8 @@ class UserMailboxesRoutesTest {
 
         @BeforeEach
         void setUp() throws Exception {
-            createServer(InMemoryIntegrationResources.defaultResources().getMailboxManager());
+            InMemoryMailboxManager mailboxManager = InMemoryIntegrationResources.defaultResources().getMailboxManager();
+            createServer(mailboxManager, mailboxManager.getMapperFactory());
         }
 
         @Test
@@ -769,14 +773,14 @@ class UserMailboxesRoutesTest {
 
     @Nested
     class ExceptionHandling {
-        private InMemoryMailboxManager mailboxManager;
+        private MailboxManager mailboxManager;
 
         @BeforeEach
         void setUp() throws Exception {
-            mailboxManager = mock(InMemoryMailboxManager.class);
+            mailboxManager = mock(MailboxManager.class);
             when(mailboxManager.createSystemSession(any())).thenReturn(MailboxSessionUtil.create(USERNAME));
 
-            createServer(mailboxManager);
+            createServer(mailboxManager, mock(MailboxSessionMapperFactory.class));
         }
 
         @Test
@@ -1034,7 +1038,7 @@ class UserMailboxesRoutesTest {
         @BeforeEach
         void setUp() throws Exception {
             mailboxManager = InMemoryIntegrationResources.defaultResources().getMailboxManager();
-            createServer(mailboxManager);
+            createServer(mailboxManager, mailboxManager.getMapperFactory());
         }
 
         @Nested


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