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)

Reply via email to