Repository: james-project Updated Branches: refs/heads/master 16e4d9f93 -> f121dd8d4
JAMES-2619 Make sure to name all Executors and Threads Project: http://git-wip-us.apache.org/repos/asf/james-project/repo Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/e96b5cbb Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/e96b5cbb Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/e96b5cbb Branch: refs/heads/master Commit: e96b5cbb38ebdbe03b1733c8cb835609591cca1e Parents: b0ebfb6 Author: Matthieu Baechler <matth...@apache.org> Authored: Tue Dec 4 18:21:36 2018 +0100 Committer: Benoit Tellier <btell...@linagora.com> Committed: Thu Dec 6 15:03:57 2018 +0700 ---------------------------------------------------------------------- .../cassandra/migration/CassandraMigrationServiceTest.java | 4 +++- .../apache/james/backends/es/ElasticSearchIndexerTest.java | 6 +++++- .../backend/rabbitmq/RabbitMQConnectionFactoryTest.java | 4 +++- .../org/apache/james/backend/rabbitmq/RabbitMQExtension.java | 5 ++++- .../org/apache/james/mailbox/MailboxManagerStressTest.java | 5 ++++- .../james/mailbox/cassandra/mail/CassandraACLMapperTest.java | 5 ++++- .../mailbox/elasticsearch/ElasticSearchIntegrationTest.java | 6 ++++-- .../ElasticSearchQuotaSearchTestSystemExtension.java | 5 ++++- .../events/ElasticSearchQuotaMailboxListenerTest.java | 5 ++++- .../james/mailbox/store/event/AsynchronousEventDelivery.java | 5 ++++- .../elasticsearch/host/ElasticSearchHostSystem.java | 5 ++++- .../java/org/apache/james/imap/processor/IdleProcessor.java | 5 ++++- .../james/imap/processor/base/SelectedMailboxImplTest.java | 5 ++++- .../apache/james/protocols/netty/AbstractAsyncServer.java | 8 ++++++-- .../modules/mailbox/ScheduledExecutorServiceProvider.java | 6 +++++- .../org/apache/james/JamesServerWithRetryConnectionTest.java | 5 ++++- .../james/modules/server/AsyncTasksExecutorModule.java | 6 +++++- .../apache/james/util/concurrency/ConcurrentTestRunner.java | 5 ++++- .../org/apache/james/util/CompletableFutureUtilTest.java | 5 ++++- .../org/apache/james/util/retry/RetryExecutorUtilTest.java | 5 ++++- .../org/apache/james/transport/mailets/RemoteDelivery.java | 5 ++++- .../webadmin/routes/ElasticSearchQuotaSearchExtension.java | 5 ++++- .../main/java/org/apache/james/queue/file/FileMailQueue.java | 3 ++- .../main/java/org/apache/james/queue/rabbitmq/Dequeuer.java | 5 ++++- .../main/java/org/apache/james/task/MemoryTaskManager.java | 5 ++++- .../main/java/org/apache/james/junit/ExecutorExtension.java | 5 ++++- .../apache/james/spamassassin/mock/MockSpamdTestRule.java | 3 ++- 27 files changed, 107 insertions(+), 29 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/james-project/blob/e96b5cbb/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/migration/CassandraMigrationServiceTest.java ---------------------------------------------------------------------- diff --git a/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/migration/CassandraMigrationServiceTest.java b/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/migration/CassandraMigrationServiceTest.java index 7730e80..7631f4b 100644 --- a/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/migration/CassandraMigrationServiceTest.java +++ b/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/migration/CassandraMigrationServiceTest.java @@ -39,6 +39,7 @@ import org.apache.commons.lang.NotImplementedException; import org.apache.james.backends.cassandra.versions.CassandraSchemaVersionDAO; import org.apache.james.backends.cassandra.versions.SchemaVersion; import org.apache.james.task.Task; +import org.apache.james.util.concurrent.NamedThreadFactory; import org.junit.After; import org.junit.Before; import org.junit.Rule; @@ -74,7 +75,8 @@ public class CassandraMigrationServiceTest { .put(LATEST_VERSION, successfulMigration) .build(); testee = new CassandraMigrationService(schemaVersionDAO, allMigrationClazz, LATEST_VERSION); - executorService = Executors.newFixedThreadPool(2); + executorService = Executors.newFixedThreadPool(2, + NamedThreadFactory.withClassName(getClass())); } @After http://git-wip-us.apache.org/repos/asf/james-project/blob/e96b5cbb/backends-common/elasticsearch/src/test/java/org/apache/james/backends/es/ElasticSearchIndexerTest.java ---------------------------------------------------------------------- diff --git a/backends-common/elasticsearch/src/test/java/org/apache/james/backends/es/ElasticSearchIndexerTest.java b/backends-common/elasticsearch/src/test/java/org/apache/james/backends/es/ElasticSearchIndexerTest.java index fa51c8f..0654a78 100644 --- a/backends-common/elasticsearch/src/test/java/org/apache/james/backends/es/ElasticSearchIndexerTest.java +++ b/backends-common/elasticsearch/src/test/java/org/apache/james/backends/es/ElasticSearchIndexerTest.java @@ -24,8 +24,10 @@ import static org.assertj.core.api.Assertions.assertThatThrownBy; import static org.elasticsearch.index.query.QueryBuilders.termQuery; import java.util.concurrent.Executors; +import java.util.concurrent.ThreadFactory; import org.apache.james.backends.es.utils.TestingClientProvider; +import org.apache.james.util.concurrent.NamedThreadFactory; import org.elasticsearch.action.search.SearchResponse; import org.elasticsearch.client.Client; import org.elasticsearch.index.query.QueryBuilders; @@ -61,7 +63,9 @@ public class ElasticSearchIndexerTest { .useIndex(INDEX_NAME) .addAlias(ALIAS_NAME) .createIndexAndAliases(clientProvider.get()); - testee = new ElasticSearchIndexer(clientProvider.get(), Executors.newSingleThreadExecutor(), ALIAS_NAME, TYPE_NAME, MINIMUM_BATCH_SIZE); + testee = new ElasticSearchIndexer(clientProvider.get(), + Executors.newSingleThreadExecutor(NamedThreadFactory.withClassName(getClass())), + ALIAS_NAME, TYPE_NAME, MINIMUM_BATCH_SIZE); } @Test http://git-wip-us.apache.org/repos/asf/james-project/blob/e96b5cbb/backends-common/rabbitmq/src/test/java/org/apache/james/backend/rabbitmq/RabbitMQConnectionFactoryTest.java ---------------------------------------------------------------------- diff --git a/backends-common/rabbitmq/src/test/java/org/apache/james/backend/rabbitmq/RabbitMQConnectionFactoryTest.java b/backends-common/rabbitmq/src/test/java/org/apache/james/backend/rabbitmq/RabbitMQConnectionFactoryTest.java index 489f557f..87d9904 100644 --- a/backends-common/rabbitmq/src/test/java/org/apache/james/backend/rabbitmq/RabbitMQConnectionFactoryTest.java +++ b/backends-common/rabbitmq/src/test/java/org/apache/james/backend/rabbitmq/RabbitMQConnectionFactoryTest.java @@ -24,7 +24,9 @@ import static org.assertj.core.api.Assertions.assertThatThrownBy; import java.net.URI; import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; +import java.util.concurrent.ThreadFactory; +import org.apache.james.util.concurrent.NamedThreadFactory; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -36,7 +38,7 @@ class RabbitMQConnectionFactoryTest { @BeforeEach void setUp() throws Exception { - scheduledExecutor = Executors.newSingleThreadScheduledExecutor(); + scheduledExecutor = Executors.newSingleThreadScheduledExecutor(NamedThreadFactory.withClassName(getClass())); } @Test http://git-wip-us.apache.org/repos/asf/james-project/blob/e96b5cbb/backends-common/rabbitmq/src/test/java/org/apache/james/backend/rabbitmq/RabbitMQExtension.java ---------------------------------------------------------------------- diff --git a/backends-common/rabbitmq/src/test/java/org/apache/james/backend/rabbitmq/RabbitMQExtension.java b/backends-common/rabbitmq/src/test/java/org/apache/james/backend/rabbitmq/RabbitMQExtension.java index acf1a2c..d6d2ead 100644 --- a/backends-common/rabbitmq/src/test/java/org/apache/james/backend/rabbitmq/RabbitMQExtension.java +++ b/backends-common/rabbitmq/src/test/java/org/apache/james/backend/rabbitmq/RabbitMQExtension.java @@ -22,7 +22,9 @@ import static org.apache.james.backend.rabbitmq.RabbitMQFixture.DEFAULT_MANAGEME import java.net.URISyntaxException; import java.util.concurrent.Executors; +import java.util.concurrent.ThreadFactory; +import org.apache.james.util.concurrent.NamedThreadFactory; import org.junit.jupiter.api.extension.AfterAllCallback; import org.junit.jupiter.api.extension.AfterEachCallback; import org.junit.jupiter.api.extension.BeforeAllCallback; @@ -91,8 +93,9 @@ public class RabbitMQExtension implements BeforeAllCallback, BeforeEachCallback, .minDelay(ONE_HUNDRED_MILLISECONDS) .build(); + ThreadFactory threadFactory = NamedThreadFactory.withClassName(getClass()); return new RabbitMQConnectionFactory( rabbitMQConfiguration, - new AsyncRetryExecutor(Executors.newSingleThreadScheduledExecutor())); + new AsyncRetryExecutor(Executors.newSingleThreadScheduledExecutor(threadFactory))); } } http://git-wip-us.apache.org/repos/asf/james-project/blob/e96b5cbb/mailbox/api/src/test/java/org/apache/james/mailbox/MailboxManagerStressTest.java ---------------------------------------------------------------------- diff --git a/mailbox/api/src/test/java/org/apache/james/mailbox/MailboxManagerStressTest.java b/mailbox/api/src/test/java/org/apache/james/mailbox/MailboxManagerStressTest.java index 9f13dec..21dbb71 100644 --- a/mailbox/api/src/test/java/org/apache/james/mailbox/MailboxManagerStressTest.java +++ b/mailbox/api/src/test/java/org/apache/james/mailbox/MailboxManagerStressTest.java @@ -28,6 +28,7 @@ import java.util.concurrent.ConcurrentLinkedDeque; import java.util.concurrent.CountDownLatch; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; +import java.util.concurrent.ThreadFactory; import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicBoolean; @@ -36,6 +37,7 @@ import org.apache.james.mailbox.model.ComposedMessageId; import org.apache.james.mailbox.model.MailboxId; import org.apache.james.mailbox.model.MailboxPath; import org.apache.james.mime4j.dom.Message; +import org.apache.james.util.concurrent.NamedThreadFactory; import org.junit.Test; import com.google.common.collect.ImmutableSet; @@ -55,9 +57,10 @@ public abstract class MailboxManagerStressTest { @Test public void testStressTest() throws InterruptedException, MailboxException { + ThreadFactory threadFactory = NamedThreadFactory.withClassName(getClass()); final CountDownLatch latch = new CountDownLatch(APPEND_OPERATIONS); - final ExecutorService pool = Executors.newFixedThreadPool(APPEND_OPERATIONS / 20); + final ExecutorService pool = Executors.newFixedThreadPool(APPEND_OPERATIONS / 20, threadFactory); final Collection<MessageUid> uList = new ConcurrentLinkedDeque<>(); final String username = "username"; MailboxSession session = mailboxManager.createSystemSession(username); http://git-wip-us.apache.org/repos/asf/james-project/blob/e96b5cbb/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraACLMapperTest.java ---------------------------------------------------------------------- diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraACLMapperTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraACLMapperTest.java index cdea6fa..d9f7c89 100644 --- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraACLMapperTest.java +++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraACLMapperTest.java @@ -27,6 +27,7 @@ import java.util.concurrent.ExecutionException; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.Future; +import java.util.concurrent.ThreadFactory; import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeoutException; @@ -40,6 +41,7 @@ import org.apache.james.mailbox.cassandra.modules.CassandraAclModule; import org.apache.james.mailbox.cassandra.table.CassandraACLTable; import org.apache.james.mailbox.exception.MailboxException; import org.apache.james.mailbox.model.MailboxACL; +import org.apache.james.util.concurrent.NamedThreadFactory; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -59,7 +61,8 @@ class CassandraACLMapperTest { void setUp(CassandraCluster cassandra) { cassandraACLMapper = GuiceUtils.testInjector(cassandra) .getInstance(CassandraACLMapper.class); - executor = Executors.newFixedThreadPool(2); + ThreadFactory threadFactory = NamedThreadFactory.withClassName(getClass()); + executor = Executors.newFixedThreadPool(2, threadFactory); } @AfterEach http://git-wip-us.apache.org/repos/asf/james-project/blob/e96b5cbb/mailbox/elasticsearch/src/test/java/org/apache/james/mailbox/elasticsearch/ElasticSearchIntegrationTest.java ---------------------------------------------------------------------- diff --git a/mailbox/elasticsearch/src/test/java/org/apache/james/mailbox/elasticsearch/ElasticSearchIntegrationTest.java b/mailbox/elasticsearch/src/test/java/org/apache/james/mailbox/elasticsearch/ElasticSearchIntegrationTest.java index 666177d..4dc236e 100644 --- a/mailbox/elasticsearch/src/test/java/org/apache/james/mailbox/elasticsearch/ElasticSearchIntegrationTest.java +++ b/mailbox/elasticsearch/src/test/java/org/apache/james/mailbox/elasticsearch/ElasticSearchIntegrationTest.java @@ -24,6 +24,7 @@ import static org.assertj.core.api.Assertions.assertThat; import java.nio.charset.StandardCharsets; import java.time.ZoneId; import java.util.concurrent.Executors; +import java.util.concurrent.ThreadFactory; import org.apache.james.backends.es.ElasticSearchConfiguration; import org.apache.james.backends.es.ElasticSearchIndexer; @@ -50,6 +51,7 @@ import org.apache.james.mailbox.tika.TikaHttpClientImpl; import org.apache.james.mailbox.tika.TikaTextExtractor; import org.apache.james.metrics.api.NoopMetricFactory; import org.apache.james.mime4j.dom.Message; +import org.apache.james.util.concurrent.NamedThreadFactory; import org.elasticsearch.client.Client; import org.junit.ClassRule; import org.junit.Rule; @@ -99,11 +101,11 @@ public class ElasticSearchIntegrationTest extends AbstractMessageSearchIndexTest storeMailboxManager = new InMemoryIntegrationResources() .createMailboxManager(new SimpleGroupMembershipResolver()); - + ThreadFactory threadFactory = NamedThreadFactory.withClassName(getClass()); ElasticSearchListeningMessageSearchIndex elasticSearchListeningMessageSearchIndex = new ElasticSearchListeningMessageSearchIndex( storeMailboxManager.getMapperFactory(), new ElasticSearchIndexer(client, - Executors.newSingleThreadExecutor(), + Executors.newSingleThreadExecutor(threadFactory), MailboxElasticSearchConstants.DEFAULT_MAILBOX_WRITE_ALIAS, MailboxElasticSearchConstants.MESSAGE_TYPE, BATCH_SIZE), http://git-wip-us.apache.org/repos/asf/james-project/blob/e96b5cbb/mailbox/plugin/quota-search-elasticsearch/src/test/java/org/apache/james/quota/search/elasticsearch/ElasticSearchQuotaSearchTestSystemExtension.java ---------------------------------------------------------------------- diff --git a/mailbox/plugin/quota-search-elasticsearch/src/test/java/org/apache/james/quota/search/elasticsearch/ElasticSearchQuotaSearchTestSystemExtension.java b/mailbox/plugin/quota-search-elasticsearch/src/test/java/org/apache/james/quota/search/elasticsearch/ElasticSearchQuotaSearchTestSystemExtension.java index 2d511cf..872cf33 100644 --- a/mailbox/plugin/quota-search-elasticsearch/src/test/java/org/apache/james/quota/search/elasticsearch/ElasticSearchQuotaSearchTestSystemExtension.java +++ b/mailbox/plugin/quota-search-elasticsearch/src/test/java/org/apache/james/quota/search/elasticsearch/ElasticSearchQuotaSearchTestSystemExtension.java @@ -22,6 +22,7 @@ package org.apache.james.quota.search.elasticsearch; import static org.mockito.Mockito.mock; import java.util.concurrent.Executors; +import java.util.concurrent.ThreadFactory; import org.apache.james.backends.es.ElasticSearchConfiguration; import org.apache.james.backends.es.ElasticSearchIndexer; @@ -36,6 +37,7 @@ import org.apache.james.quota.search.QuotaSearchTestSystem; import org.apache.james.quota.search.elasticsearch.events.ElasticSearchQuotaMailboxListener; import org.apache.james.quota.search.elasticsearch.json.QuotaRatioToElasticSearchJson; import org.apache.james.user.memory.MemoryUsersRepository; +import org.apache.james.util.concurrent.NamedThreadFactory; import org.elasticsearch.client.Client; import org.junit.jupiter.api.extension.AfterEachCallback; import org.junit.jupiter.api.extension.BeforeEachCallback; @@ -69,8 +71,9 @@ public class ElasticSearchQuotaSearchTestSystemExtension implements ParameterRes MemoryDomainList domainList = new MemoryDomainList(dnsService); usersRepository.setDomainList(domainList); + ThreadFactory threadFactory = NamedThreadFactory.withClassName(getClass()); ElasticSearchQuotaMailboxListener listener = new ElasticSearchQuotaMailboxListener( - new ElasticSearchIndexer(client, Executors.newSingleThreadExecutor(), + new ElasticSearchIndexer(client, Executors.newSingleThreadExecutor(threadFactory), QuotaRatioElasticSearchConstants.DEFAULT_QUOTA_RATIO_WRITE_ALIAS, QuotaRatioElasticSearchConstants.QUOTA_RATIO_TYPE), new QuotaRatioToElasticSearchJson()); http://git-wip-us.apache.org/repos/asf/james-project/blob/e96b5cbb/mailbox/plugin/quota-search-elasticsearch/src/test/java/org/apache/james/quota/search/elasticsearch/events/ElasticSearchQuotaMailboxListenerTest.java ---------------------------------------------------------------------- diff --git a/mailbox/plugin/quota-search-elasticsearch/src/test/java/org/apache/james/quota/search/elasticsearch/events/ElasticSearchQuotaMailboxListenerTest.java b/mailbox/plugin/quota-search-elasticsearch/src/test/java/org/apache/james/quota/search/elasticsearch/events/ElasticSearchQuotaMailboxListenerTest.java index 4ea8e30..dabec13 100644 --- a/mailbox/plugin/quota-search-elasticsearch/src/test/java/org/apache/james/quota/search/elasticsearch/events/ElasticSearchQuotaMailboxListenerTest.java +++ b/mailbox/plugin/quota-search-elasticsearch/src/test/java/org/apache/james/quota/search/elasticsearch/events/ElasticSearchQuotaMailboxListenerTest.java @@ -26,6 +26,7 @@ import static org.assertj.core.api.Assertions.assertThat; import static org.elasticsearch.index.query.QueryBuilders.matchAllQuery; import java.util.concurrent.Executors; +import java.util.concurrent.ThreadFactory; import org.apache.james.backends.es.ElasticSearchConfiguration; import org.apache.james.backends.es.ElasticSearchIndexer; @@ -39,6 +40,7 @@ import org.apache.james.mailbox.quota.QuotaFixture.Sizes; import org.apache.james.quota.search.elasticsearch.QuotaRatioElasticSearchConstants; import org.apache.james.quota.search.elasticsearch.QuotaSearchIndexCreationUtil; import org.apache.james.quota.search.elasticsearch.json.QuotaRatioToElasticSearchJson; +import org.apache.james.util.concurrent.NamedThreadFactory; import org.elasticsearch.action.search.SearchResponse; import org.elasticsearch.client.Client; import org.junit.Before; @@ -66,9 +68,10 @@ public class ElasticSearchQuotaMailboxListenerTest { client = QuotaSearchIndexCreationUtil.prepareDefaultClient( new TestingClientProvider(embeddedElasticSearch.getNode()).get(), ElasticSearchConfiguration.DEFAULT_CONFIGURATION); + ThreadFactory threadFactory = NamedThreadFactory.withClassName(getClass()); quotaMailboxListener = new ElasticSearchQuotaMailboxListener( new ElasticSearchIndexer(client, - Executors.newSingleThreadExecutor(), + Executors.newSingleThreadExecutor(threadFactory), QuotaRatioElasticSearchConstants.DEFAULT_QUOTA_RATIO_WRITE_ALIAS, QuotaRatioElasticSearchConstants.QUOTA_RATIO_TYPE, BATCH_SIZE), http://git-wip-us.apache.org/repos/asf/james-project/blob/e96b5cbb/mailbox/store/src/main/java/org/apache/james/mailbox/store/event/AsynchronousEventDelivery.java ---------------------------------------------------------------------- diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/event/AsynchronousEventDelivery.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/event/AsynchronousEventDelivery.java index 9ca9824..593de54 100644 --- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/event/AsynchronousEventDelivery.java +++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/event/AsynchronousEventDelivery.java @@ -21,11 +21,13 @@ package org.apache.james.mailbox.store.event; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; +import java.util.concurrent.ThreadFactory; import javax.annotation.PreDestroy; import org.apache.james.mailbox.Event; import org.apache.james.mailbox.MailboxListener; +import org.apache.james.util.concurrent.NamedThreadFactory; public class AsynchronousEventDelivery implements EventDelivery { @@ -33,7 +35,8 @@ public class AsynchronousEventDelivery implements EventDelivery { private final SynchronousEventDelivery synchronousEventDelivery; public AsynchronousEventDelivery(int threadPoolSize, SynchronousEventDelivery synchronousEventDelivery) { - this.threadPoolExecutor = Executors.newFixedThreadPool(threadPoolSize); + ThreadFactory threadFactory = NamedThreadFactory.withClassName(getClass()); + this.threadPoolExecutor = Executors.newFixedThreadPool(threadPoolSize, threadFactory); this.synchronousEventDelivery = synchronousEventDelivery; } http://git-wip-us.apache.org/repos/asf/james-project/blob/e96b5cbb/mpt/impl/imap-mailbox/elasticsearch/src/test/java/org/apache/james/mpt/imapmailbox/elasticsearch/host/ElasticSearchHostSystem.java ---------------------------------------------------------------------- diff --git a/mpt/impl/imap-mailbox/elasticsearch/src/test/java/org/apache/james/mpt/imapmailbox/elasticsearch/host/ElasticSearchHostSystem.java b/mpt/impl/imap-mailbox/elasticsearch/src/test/java/org/apache/james/mpt/imapmailbox/elasticsearch/host/ElasticSearchHostSystem.java index 2404f25..4186ee9 100644 --- a/mpt/impl/imap-mailbox/elasticsearch/src/test/java/org/apache/james/mpt/imapmailbox/elasticsearch/host/ElasticSearchHostSystem.java +++ b/mpt/impl/imap-mailbox/elasticsearch/src/test/java/org/apache/james/mpt/imapmailbox/elasticsearch/host/ElasticSearchHostSystem.java @@ -23,6 +23,7 @@ import java.nio.file.Files; import java.nio.file.Path; import java.time.ZoneId; import java.util.concurrent.Executors; +import java.util.concurrent.ThreadFactory; import org.apache.commons.io.FileUtils; import org.apache.commons.lang.NotImplementedException; @@ -61,6 +62,7 @@ import org.apache.james.metrics.logger.DefaultMetricFactory; import org.apache.james.mpt.api.ImapFeatures; import org.apache.james.mpt.api.ImapFeatures.Feature; import org.apache.james.mpt.host.JamesImapHostSystem; +import org.apache.james.util.concurrent.NamedThreadFactory; import org.elasticsearch.client.Client; public class ElasticSearchHostSystem extends JamesImapHostSystem { @@ -96,10 +98,11 @@ public class ElasticSearchHostSystem extends JamesImapHostSystem { InMemoryMailboxSessionMapperFactory factory = new InMemoryMailboxSessionMapperFactory(); InMemoryMessageId.Factory messageIdFactory = new InMemoryMessageId.Factory(); + ThreadFactory threadFactory = NamedThreadFactory.withClassName(getClass()); ElasticSearchListeningMessageSearchIndex searchIndex = new ElasticSearchListeningMessageSearchIndex( factory, new ElasticSearchIndexer(client, - Executors.newSingleThreadExecutor(), + Executors.newSingleThreadExecutor(threadFactory), MailboxElasticSearchConstants.DEFAULT_MAILBOX_WRITE_ALIAS, MailboxElasticSearchConstants.MESSAGE_TYPE), new ElasticSearchSearcher(client, http://git-wip-us.apache.org/repos/asf/james-project/blob/e96b5cbb/protocols/imap/src/main/java/org/apache/james/imap/processor/IdleProcessor.java ---------------------------------------------------------------------- diff --git a/protocols/imap/src/main/java/org/apache/james/imap/processor/IdleProcessor.java b/protocols/imap/src/main/java/org/apache/james/imap/processor/IdleProcessor.java index 0018458..7700d28 100644 --- a/protocols/imap/src/main/java/org/apache/james/imap/processor/IdleProcessor.java +++ b/protocols/imap/src/main/java/org/apache/james/imap/processor/IdleProcessor.java @@ -26,6 +26,7 @@ import java.util.List; import java.util.Locale; import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; +import java.util.concurrent.ThreadFactory; import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicBoolean; @@ -49,6 +50,7 @@ import org.apache.james.mailbox.MailboxSession; import org.apache.james.mailbox.exception.MailboxException; import org.apache.james.metrics.api.MetricFactory; import org.apache.james.util.MDCBuilder; +import org.apache.james.util.concurrent.NamedThreadFactory; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -78,7 +80,8 @@ public class IdleProcessor extends AbstractMailboxProcessor<IdleRequest> impleme this.heartbeatIntervalUnit = imapConfiguration.getIdleTimeIntervalUnit(); this.enableIdle = imapConfiguration.isEnableIdle(); if (enableIdle) { - this.heartbeatExecutor = Executors.newScheduledThreadPool(DEFAULT_SCHEDULED_POOL_CORE_SIZE); + ThreadFactory threadFactory = NamedThreadFactory.withClassName(getClass()); + this.heartbeatExecutor = Executors.newScheduledThreadPool(DEFAULT_SCHEDULED_POOL_CORE_SIZE, threadFactory); } } http://git-wip-us.apache.org/repos/asf/james-project/blob/e96b5cbb/protocols/imap/src/test/java/org/apache/james/imap/processor/base/SelectedMailboxImplTest.java ---------------------------------------------------------------------- diff --git a/protocols/imap/src/test/java/org/apache/james/imap/processor/base/SelectedMailboxImplTest.java b/protocols/imap/src/test/java/org/apache/james/imap/processor/base/SelectedMailboxImplTest.java index e923b2a..ef8d5b9 100644 --- a/protocols/imap/src/test/java/org/apache/james/imap/processor/base/SelectedMailboxImplTest.java +++ b/protocols/imap/src/test/java/org/apache/james/imap/processor/base/SelectedMailboxImplTest.java @@ -31,6 +31,7 @@ import java.util.Iterator; import java.util.TreeMap; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; +import java.util.concurrent.ThreadFactory; import java.util.concurrent.atomic.AtomicInteger; import javax.mail.Flags; @@ -51,6 +52,7 @@ import org.apache.james.mailbox.store.SimpleMessageMetaData; import org.apache.james.mailbox.store.event.EventFactory; import org.apache.james.mailbox.store.mail.model.DefaultMessageId; import org.apache.james.mailbox.store.mail.model.Mailbox; +import org.apache.james.util.concurrent.NamedThreadFactory; import org.junit.After; import org.junit.Before; import org.junit.Test; @@ -79,7 +81,8 @@ public class SelectedMailboxImplTest { @Before public void setUp() throws Exception { - executorService = Executors.newFixedThreadPool(1); + ThreadFactory threadFactory = NamedThreadFactory.withClassName(getClass()); + executorService = Executors.newFixedThreadPool(1, threadFactory); mailboxPath = MailboxPath.forUser("tell...@linagora.com", MailboxConstants.INBOX); mailboxManager = mock(MailboxManager.class); messageManager = mock(MessageManager.class); http://git-wip-us.apache.org/repos/asf/james-project/blob/e96b5cbb/protocols/netty/src/main/java/org/apache/james/protocols/netty/AbstractAsyncServer.java ---------------------------------------------------------------------- diff --git a/protocols/netty/src/main/java/org/apache/james/protocols/netty/AbstractAsyncServer.java b/protocols/netty/src/main/java/org/apache/james/protocols/netty/AbstractAsyncServer.java index faddde6..ef8554d 100644 --- a/protocols/netty/src/main/java/org/apache/james/protocols/netty/AbstractAsyncServer.java +++ b/protocols/netty/src/main/java/org/apache/james/protocols/netty/AbstractAsyncServer.java @@ -23,8 +23,10 @@ import java.util.ArrayList; import java.util.List; import java.util.concurrent.Executor; import java.util.concurrent.Executors; +import java.util.concurrent.ThreadFactory; import org.apache.james.protocols.api.ProtocolServer; +import org.apache.james.util.concurrent.NamedThreadFactory; import org.jboss.netty.bootstrap.ServerBootstrap; import org.jboss.netty.channel.Channel; import org.jboss.netty.channel.ChannelPipelineFactory; @@ -203,7 +205,8 @@ public abstract class AbstractAsyncServer implements ProtocolServer { * @return bossExecutor */ protected Executor createBossExecutor() { - return Executors.newCachedThreadPool(); + ThreadFactory threadFactory = NamedThreadFactory.withClassName(getClass()); + return Executors.newCachedThreadPool(threadFactory); } /** @@ -212,7 +215,8 @@ public abstract class AbstractAsyncServer implements ProtocolServer { * @return workerExecutor */ protected Executor createWorkerExecutor() { - return Executors.newCachedThreadPool(); + ThreadFactory threadFactory = NamedThreadFactory.withClassName(getClass()); + return Executors.newCachedThreadPool(threadFactory); } http://git-wip-us.apache.org/repos/asf/james-project/blob/e96b5cbb/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/ScheduledExecutorServiceProvider.java ---------------------------------------------------------------------- diff --git a/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/ScheduledExecutorServiceProvider.java b/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/ScheduledExecutorServiceProvider.java index 48fe3f1..56ec923 100644 --- a/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/ScheduledExecutorServiceProvider.java +++ b/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/ScheduledExecutorServiceProvider.java @@ -21,9 +21,12 @@ package org.apache.james.modules.mailbox; import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; +import java.util.concurrent.ThreadFactory; import javax.annotation.PreDestroy; +import org.apache.james.util.concurrent.NamedThreadFactory; + import com.google.common.annotations.VisibleForTesting; import com.google.inject.Provider; @@ -34,7 +37,8 @@ class ScheduledExecutorServiceProvider implements Provider<ScheduledExecutorServ @VisibleForTesting ScheduledExecutorServiceProvider() { - scheduler = Executors.newSingleThreadScheduledExecutor(); + ThreadFactory threadFactory = NamedThreadFactory.withClassName(getClass()); + scheduler = Executors.newSingleThreadScheduledExecutor(threadFactory); } @Override http://git-wip-us.apache.org/repos/asf/james-project/blob/e96b5cbb/server/container/guice/cassandra-guice/src/test/java/org/apache/james/JamesServerWithRetryConnectionTest.java ---------------------------------------------------------------------- diff --git a/server/container/guice/cassandra-guice/src/test/java/org/apache/james/JamesServerWithRetryConnectionTest.java b/server/container/guice/cassandra-guice/src/test/java/org/apache/james/JamesServerWithRetryConnectionTest.java index 5b5b33f..69954af 100644 --- a/server/container/guice/cassandra-guice/src/test/java/org/apache/james/JamesServerWithRetryConnectionTest.java +++ b/server/container/guice/cassandra-guice/src/test/java/org/apache/james/JamesServerWithRetryConnectionTest.java @@ -29,6 +29,7 @@ import java.nio.channels.SocketChannel; import java.nio.charset.Charset; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; +import java.util.concurrent.ThreadFactory; import java.util.concurrent.TimeUnit; import org.apache.james.backends.es.ElasticSearchConfiguration; @@ -37,6 +38,7 @@ import org.apache.james.mailbox.store.search.PDFTextExtractor; import org.apache.james.modules.TestJMAPServerModule; import org.apache.james.modules.protocols.ImapGuiceProbe; import org.apache.james.util.Host; +import org.apache.james.util.concurrent.NamedThreadFactory; import org.apache.james.util.docker.Images; import org.apache.james.util.docker.SwarmGenericContainer; import org.junit.jupiter.api.AfterEach; @@ -104,7 +106,8 @@ class JamesServerWithRetryConnectionTest { @BeforeEach void setUp() throws IOException { - executorService = Executors.newFixedThreadPool(1); + ThreadFactory threadFactory = NamedThreadFactory.withClassName(getClass()); + executorService = Executors.newFixedThreadPool(1, threadFactory); socketChannel = SocketChannel.open(); } http://git-wip-us.apache.org/repos/asf/james-project/blob/e96b5cbb/server/container/guice/guice-common/src/main/java/org/apache/james/modules/server/AsyncTasksExecutorModule.java ---------------------------------------------------------------------- diff --git a/server/container/guice/guice-common/src/main/java/org/apache/james/modules/server/AsyncTasksExecutorModule.java b/server/container/guice/guice-common/src/main/java/org/apache/james/modules/server/AsyncTasksExecutorModule.java index b8e42fe..fc30b12 100644 --- a/server/container/guice/guice-common/src/main/java/org/apache/james/modules/server/AsyncTasksExecutorModule.java +++ b/server/container/guice/guice-common/src/main/java/org/apache/james/modules/server/AsyncTasksExecutorModule.java @@ -20,9 +20,12 @@ package org.apache.james.modules.server; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; +import java.util.concurrent.ThreadFactory; import javax.annotation.PreDestroy; +import org.apache.james.util.concurrent.NamedThreadFactory; + import com.google.inject.AbstractModule; import com.google.inject.Provider; import com.google.inject.name.Names; @@ -33,9 +36,10 @@ public class AsyncTasksExecutorModule extends AbstractModule { @Override protected void configure() { + ThreadFactory threadFactory = NamedThreadFactory.withClassName(getClass()); bind(ExecutorService.class).annotatedWith(Names.named("AsyncExecutor")) .toProvider(new LifecycleAwareExecutorServiceProvider( - Executors.newFixedThreadPool(THREAD_POOL_SIZE))); + Executors.newFixedThreadPool(THREAD_POOL_SIZE, threadFactory))); } public static class LifecycleAwareExecutorServiceProvider implements Provider<ExecutorService> { http://git-wip-us.apache.org/repos/asf/james-project/blob/e96b5cbb/server/container/util/src/main/java/org/apache/james/util/concurrency/ConcurrentTestRunner.java ---------------------------------------------------------------------- diff --git a/server/container/util/src/main/java/org/apache/james/util/concurrency/ConcurrentTestRunner.java b/server/container/util/src/main/java/org/apache/james/util/concurrency/ConcurrentTestRunner.java index 8411d40..eec20c0 100644 --- a/server/container/util/src/main/java/org/apache/james/util/concurrency/ConcurrentTestRunner.java +++ b/server/container/util/src/main/java/org/apache/james/util/concurrency/ConcurrentTestRunner.java @@ -28,8 +28,10 @@ import java.util.concurrent.ExecutionException; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.Future; +import java.util.concurrent.ThreadFactory; import java.util.concurrent.TimeUnit; +import org.apache.james.util.concurrent.NamedThreadFactory; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -141,7 +143,8 @@ public class ConcurrentTestRunner { this.operationCount = operationCount; this.countDownLatch = new CountDownLatch(threadCount); this.biConsumer = biConsumer; - this.executorService = Executors.newFixedThreadPool(threadCount); + ThreadFactory threadFactory = NamedThreadFactory.withClassName(getClass()); + this.executorService = Executors.newFixedThreadPool(threadCount, threadFactory); this.futures = new ArrayList<>(); } http://git-wip-us.apache.org/repos/asf/james-project/blob/e96b5cbb/server/container/util/src/test/java/org/apache/james/util/CompletableFutureUtilTest.java ---------------------------------------------------------------------- diff --git a/server/container/util/src/test/java/org/apache/james/util/CompletableFutureUtilTest.java b/server/container/util/src/test/java/org/apache/james/util/CompletableFutureUtilTest.java index bf136ca..cdfce5e 100644 --- a/server/container/util/src/test/java/org/apache/james/util/CompletableFutureUtilTest.java +++ b/server/container/util/src/test/java/org/apache/james/util/CompletableFutureUtilTest.java @@ -27,11 +27,13 @@ import java.util.concurrent.CompletableFuture; import java.util.concurrent.ConcurrentLinkedDeque; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; +import java.util.concurrent.ThreadFactory; import java.util.concurrent.atomic.AtomicInteger; import java.util.stream.Collectors; import java.util.stream.IntStream; import java.util.stream.Stream; +import org.apache.james.util.concurrent.NamedThreadFactory; import org.junit.After; import org.junit.Before; import org.junit.Test; @@ -44,7 +46,8 @@ public class CompletableFutureUtilTest { @Before public void setUp() { - executorService = Executors.newFixedThreadPool(4); + ThreadFactory threadFactory = NamedThreadFactory.withClassName(getClass()); + executorService = Executors.newFixedThreadPool(4, threadFactory); } @After http://git-wip-us.apache.org/repos/asf/james-project/blob/e96b5cbb/server/container/util/src/test/java/org/apache/james/util/retry/RetryExecutorUtilTest.java ---------------------------------------------------------------------- diff --git a/server/container/util/src/test/java/org/apache/james/util/retry/RetryExecutorUtilTest.java b/server/container/util/src/test/java/org/apache/james/util/retry/RetryExecutorUtilTest.java index 81c2f11..28307fb 100644 --- a/server/container/util/src/test/java/org/apache/james/util/retry/RetryExecutorUtilTest.java +++ b/server/container/util/src/test/java/org/apache/james/util/retry/RetryExecutorUtilTest.java @@ -27,7 +27,9 @@ import java.util.concurrent.CompletableFuture; import java.util.concurrent.ExecutionException; import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; +import java.util.concurrent.ThreadFactory; +import org.apache.james.util.concurrent.NamedThreadFactory; import org.junit.After; import org.junit.Before; import org.junit.Test; @@ -49,7 +51,8 @@ public class RetryExecutorUtilTest { @Before public void setUp() throws Exception { MockitoAnnotations.initMocks(this); - scheduledExecutor = Executors.newSingleThreadScheduledExecutor(); + ThreadFactory threadFactory = NamedThreadFactory.withClassName(getClass()); + scheduledExecutor = Executors.newSingleThreadScheduledExecutor(threadFactory); } @After http://git-wip-us.apache.org/repos/asf/james-project/blob/e96b5cbb/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/RemoteDelivery.java ---------------------------------------------------------------------- diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/RemoteDelivery.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/RemoteDelivery.java index 48bcf65..4e5d68f 100644 --- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/RemoteDelivery.java +++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/RemoteDelivery.java @@ -24,6 +24,7 @@ import java.util.Collection; import java.util.Map; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; +import java.util.concurrent.ThreadFactory; import java.util.concurrent.atomic.AtomicBoolean; import javax.inject.Inject; @@ -42,6 +43,7 @@ import org.apache.james.transport.mailets.remote.delivery.Bouncer; import org.apache.james.transport.mailets.remote.delivery.DeliveryRunnable; import org.apache.james.transport.mailets.remote.delivery.RemoteDeliveryConfiguration; import org.apache.james.transport.mailets.remote.delivery.RemoteDeliverySocketFactory; +import org.apache.james.util.concurrent.NamedThreadFactory; import org.apache.mailet.Mail; import org.apache.mailet.base.GenericMailet; import org.slf4j.Logger; @@ -171,7 +173,8 @@ public class RemoteDelivery extends GenericMailet { } private void initDeliveryThreads() { - executor = Executors.newFixedThreadPool(configuration.getWorkersThreadCount()); + ThreadFactory threadFactory = NamedThreadFactory.withClassName(getClass()); + executor = Executors.newFixedThreadPool(configuration.getWorkersThreadCount(), threadFactory); for (int a = 0; a < configuration.getWorkersThreadCount(); a++) { executor.execute( new DeliveryRunnable(queue, http://git-wip-us.apache.org/repos/asf/james-project/blob/e96b5cbb/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/ElasticSearchQuotaSearchExtension.java ---------------------------------------------------------------------- diff --git a/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/ElasticSearchQuotaSearchExtension.java b/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/ElasticSearchQuotaSearchExtension.java index 2eddc4c..2e9c409 100644 --- a/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/ElasticSearchQuotaSearchExtension.java +++ b/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/ElasticSearchQuotaSearchExtension.java @@ -22,6 +22,7 @@ package org.apache.james.webadmin.routes; import static org.mockito.Mockito.mock; import java.util.concurrent.Executors; +import java.util.concurrent.ThreadFactory; import org.apache.james.backends.es.ElasticSearchConfiguration; import org.apache.james.backends.es.ElasticSearchIndexer; @@ -39,6 +40,7 @@ import org.apache.james.quota.search.elasticsearch.QuotaSearchIndexCreationUtil; import org.apache.james.quota.search.elasticsearch.events.ElasticSearchQuotaMailboxListener; import org.apache.james.quota.search.elasticsearch.json.QuotaRatioToElasticSearchJson; import org.apache.james.user.memory.MemoryUsersRepository; +import org.apache.james.util.concurrent.NamedThreadFactory; import org.elasticsearch.client.Client; import org.junit.jupiter.api.extension.AfterEachCallback; import org.junit.jupiter.api.extension.BeforeEachCallback; @@ -72,8 +74,9 @@ public class ElasticSearchQuotaSearchExtension implements ParameterResolver, Bef MemoryDomainList domainList = new MemoryDomainList(dnsService); usersRepository.setDomainList(domainList); + ThreadFactory threadFactory = NamedThreadFactory.withClassName(getClass()); ElasticSearchQuotaMailboxListener listener = new ElasticSearchQuotaMailboxListener( - new ElasticSearchIndexer(client, Executors.newSingleThreadExecutor(), + new ElasticSearchIndexer(client, Executors.newSingleThreadExecutor(threadFactory), QuotaRatioElasticSearchConstants.DEFAULT_QUOTA_RATIO_WRITE_ALIAS, QuotaRatioElasticSearchConstants.QUOTA_RATIO_TYPE), new QuotaRatioToElasticSearchJson()); http://git-wip-us.apache.org/repos/asf/james-project/blob/e96b5cbb/server/queue/queue-file/src/main/java/org/apache/james/queue/file/FileMailQueue.java ---------------------------------------------------------------------- diff --git a/server/queue/queue-file/src/main/java/org/apache/james/queue/file/FileMailQueue.java b/server/queue/queue-file/src/main/java/org/apache/james/queue/file/FileMailQueue.java index cc82148..a4d851a 100644 --- a/server/queue/queue-file/src/main/java/org/apache/james/queue/file/FileMailQueue.java +++ b/server/queue/queue-file/src/main/java/org/apache/james/queue/file/FileMailQueue.java @@ -53,6 +53,7 @@ import org.apache.james.queue.api.MailQueueItemDecoratorFactory; import org.apache.james.queue.api.ManageableMailQueue; import org.apache.james.server.core.MimeMessageCopyOnWriteProxy; import org.apache.james.server.core.MimeMessageSource; +import org.apache.james.util.concurrent.NamedThreadFactory; import org.apache.mailet.Mail; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -70,7 +71,7 @@ public class FileMailQueue implements ManageableMailQueue { private final Map<String, FileItem> keyMappings = Collections.synchronizedMap(new LinkedHashMap<>()); private final BlockingQueue<String> inmemoryQueue = new LinkedBlockingQueue<>(); - private final ScheduledExecutorService scheduler = Executors.newSingleThreadScheduledExecutor(); + private final ScheduledExecutorService scheduler = Executors.newSingleThreadScheduledExecutor(NamedThreadFactory.withClassName(getClass())); private static final AtomicLong COUNTER = new AtomicLong(); private final String queueDirName; private final File queueDir; http://git-wip-us.apache.org/repos/asf/james-project/blob/e96b5cbb/server/queue/queue-rabbitmq/src/main/java/org/apache/james/queue/rabbitmq/Dequeuer.java ---------------------------------------------------------------------- diff --git a/server/queue/queue-rabbitmq/src/main/java/org/apache/james/queue/rabbitmq/Dequeuer.java b/server/queue/queue-rabbitmq/src/main/java/org/apache/james/queue/rabbitmq/Dequeuer.java index 4354a50..6caef63 100644 --- a/server/queue/queue-rabbitmq/src/main/java/org/apache/james/queue/rabbitmq/Dequeuer.java +++ b/server/queue/queue-rabbitmq/src/main/java/org/apache/james/queue/rabbitmq/Dequeuer.java @@ -24,6 +24,7 @@ import static org.apache.james.queue.api.MailQueue.DEQUEUED_METRIC_NAME_PREFIX; import java.io.IOException; import java.util.concurrent.CompletableFuture; import java.util.concurrent.Executors; +import java.util.concurrent.ThreadFactory; import java.util.function.Consumer; import java.util.function.Function; @@ -32,6 +33,7 @@ import org.apache.james.metrics.api.MetricFactory; import org.apache.james.queue.api.MailQueue; import org.apache.james.queue.rabbitmq.view.api.DeleteCondition; import org.apache.james.queue.rabbitmq.view.api.MailQueueView; +import org.apache.james.util.concurrent.NamedThreadFactory; import org.apache.mailet.Mail; import com.github.fge.lambdas.Throwing; @@ -125,7 +127,8 @@ class Dequeuer { } private CompletableFuture<GetResponse> pollChannel() { - return new AsyncRetryExecutor(Executors.newSingleThreadScheduledExecutor()) + ThreadFactory threadFactory = NamedThreadFactory.withClassName(getClass()); + return new AsyncRetryExecutor(Executors.newSingleThreadScheduledExecutor(threadFactory)) .withFixedRate() .withMinDelay(TEN_MS) .retryOn(NoMailYetException.class) http://git-wip-us.apache.org/repos/asf/james-project/blob/e96b5cbb/server/task/src/main/java/org/apache/james/task/MemoryTaskManager.java ---------------------------------------------------------------------- diff --git a/server/task/src/main/java/org/apache/james/task/MemoryTaskManager.java b/server/task/src/main/java/org/apache/james/task/MemoryTaskManager.java index e0cbcc2..e26e173 100644 --- a/server/task/src/main/java/org/apache/james/task/MemoryTaskManager.java +++ b/server/task/src/main/java/org/apache/james/task/MemoryTaskManager.java @@ -25,11 +25,13 @@ import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.Future; +import java.util.concurrent.ThreadFactory; import java.util.function.Consumer; import javax.annotation.PreDestroy; import org.apache.james.util.MDCBuilder; +import org.apache.james.util.concurrent.NamedThreadFactory; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -49,7 +51,8 @@ public class MemoryTaskManager implements TaskManager { public MemoryTaskManager() { idToExecutionDetails = new ConcurrentHashMap<>(); idToFuture = new ConcurrentHashMap<>(); - executor = Executors.newSingleThreadExecutor(); + ThreadFactory threadFactory = NamedThreadFactory.withClassName(getClass()); + executor = Executors.newSingleThreadExecutor(threadFactory); } @Override http://git-wip-us.apache.org/repos/asf/james-project/blob/e96b5cbb/server/testing/src/main/java/org/apache/james/junit/ExecutorExtension.java ---------------------------------------------------------------------- diff --git a/server/testing/src/main/java/org/apache/james/junit/ExecutorExtension.java b/server/testing/src/main/java/org/apache/james/junit/ExecutorExtension.java index c9b9545..53b87f3 100644 --- a/server/testing/src/main/java/org/apache/james/junit/ExecutorExtension.java +++ b/server/testing/src/main/java/org/apache/james/junit/ExecutorExtension.java @@ -21,7 +21,9 @@ package org.apache.james.junit; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; +import java.util.concurrent.ThreadFactory; +import org.apache.james.util.concurrent.NamedThreadFactory; import org.junit.jupiter.api.extension.AfterEachCallback; import org.junit.jupiter.api.extension.BeforeEachCallback; import org.junit.jupiter.api.extension.ExtensionContext; @@ -35,7 +37,8 @@ public class ExecutorExtension implements ParameterResolver, BeforeEachCallback, @Override public void beforeEach(ExtensionContext context) throws Exception { - executorService = Executors.newWorkStealingPool(); + ThreadFactory threadFactory = NamedThreadFactory.withClassName(getClass()); + executorService = Executors.newCachedThreadPool(threadFactory); } @Override http://git-wip-us.apache.org/repos/asf/james-project/blob/e96b5cbb/third-party/spamassassin/src/test/java/org/apache/james/spamassassin/mock/MockSpamdTestRule.java ---------------------------------------------------------------------- diff --git a/third-party/spamassassin/src/test/java/org/apache/james/spamassassin/mock/MockSpamdTestRule.java b/third-party/spamassassin/src/test/java/org/apache/james/spamassassin/mock/MockSpamdTestRule.java index 9712a42..7364d86 100644 --- a/third-party/spamassassin/src/test/java/org/apache/james/spamassassin/mock/MockSpamdTestRule.java +++ b/third-party/spamassassin/src/test/java/org/apache/james/spamassassin/mock/MockSpamdTestRule.java @@ -22,11 +22,12 @@ package org.apache.james.spamassassin.mock; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; +import org.apache.james.util.concurrent.NamedThreadFactory; import org.junit.rules.ExternalResource; public class MockSpamdTestRule extends ExternalResource { - private ExecutorService executor = Executors.newSingleThreadExecutor(); + private ExecutorService executor = Executors.newSingleThreadExecutor(NamedThreadFactory.withClassName(getClass())); private MockSpamd spamd = new MockSpamd(); @Override --------------------------------------------------------------------- To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org