Bruce J Schuchardt created GEODE-8956:
-----------------------------------------
Summary: 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
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)