You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@geode.apache.org by "Mario Ivanac (Jira)" <ji...@apache.org> on 2021/02/22 10:57:00 UTC
[jira] [Assigned] (GEODE-8956) LocatorMembershipListenerImpl has
unconstrained thread creation that can crash a machine
[ https://issues.apache.org/jira/browse/GEODE-8956?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Mario Ivanac reassigned GEODE-8956:
-----------------------------------
Assignee: Mario Ivanac
> LocatorMembershipListenerImpl has unconstrained thread creation that can crash a machine
> ----------------------------------------------------------------------------------------
>
> Key: GEODE-8956
> URL: https://issues.apache.org/jira/browse/GEODE-8956
> Project: Geode
> Issue Type: Bug
> Components: wan
> Reporter: Bruce J Schuchardt
> Assignee: Mario Ivanac
> Priority: Major
>
> In reviewing PR 6013 I found that a simple change meant to resolve a difficult problem lead to unrestrained thread growth, sometimes topping out at over 5000 threads, in a locator that often crashed the host machine. The thread growth was due to this method in LocatorMembershipListenerImpl:
> {code:java}
> Thread buildLocatorsDistributorThread(DistributionLocatorId localLocatorId,
> Map<Integer, Set<DistributionLocatorId>> remoteLocators, DistributionLocatorId joiningLocator,
> int joiningLocatorDistributedSystemId) {
> Runnable distributeLocatorsRunnable =
> new DistributeLocatorsRunnable(config.getMemberTimeout(), tcpClient, localLocatorId,
> remoteLocators, joiningLocator, joiningLocatorDistributedSystemId);
> ThreadFactory threadFactory = new LoggingThreadFactory(LOCATORS_DISTRIBUTOR_THREAD_NAME, true);
> return threadFactory.newThread(distributeLocatorsRunnable);
> }
> {code}
> This should probably be performed in an Executor with a reasonable max-threads limit based on the number of local and remote-locators in the DistributionConfig.
--
This message was sent by Atlassian Jira
(v8.3.4#803005)