[ https://issues.apache.org/jira/browse/GEODE-6950?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17172695#comment-17172695 ]
ASF subversion and git services commented on GEODE-6950: -------------------------------------------------------- Commit 1a6e1927d88fe974d375097b3e10d357d9f2053a in geode's branch refs/heads/develop from Bruce Schuchardt [ https://gitbox.apache.org/repos/asf?p=geode.git;h=1a6e192 ] GEODE-6950: hot loop in PrimaryHandler.processRequest() (#5422) * GEODE-6950: Locator can't start if a lot of clients already started I've implemented the suggested fix & added unit tests. The "processRequest" test covers the fix. I added a couple of other tests to make sure the other primary paths through PrimaryHandler.processRequest() are covered. * altered the test to have a deterministic clock > Locator can't start if a lot of clients already started > ------------------------------------------------------- > > Key: GEODE-6950 > URL: https://issues.apache.org/jira/browse/GEODE-6950 > Project: Geode > Issue Type: Bug > Components: core, membership > Affects Versions: 1.7.0, 1.8.0, 1.9.0, 1.10.0, 1.11.0, 1.12.0 > Reporter: Eugene Nedzvetsky > Assignee: Bruce J Schuchardt > Priority: Major > Labels: pull-request-available > Attachments: 1.log > > > Locator can't start if a few hundred clients already started. > Steps to reproduce: > 1. Start Locator > 2. Start 300 Geode clients > 3. Stop Locator > 4. Start Locator again > Observe 100% CPU load and after some time Locator app crashes with timeout > exceptions in the log. > The problem is in the method > org.apache.geode.distributed.internal.InternalLocator.PrimaryHandler#processRequest > handlerMapping doesn't have handlers for LocatorListRequest and > ClientConnectionRequest requests on Locator startup and in this case work > code part with condition 'if(giveup == 0)'(InternalLocator:1185) > Pause Thread.sleep(1000) works only on the first iteration and after that > giveup>0 and CPU just spends resources on cycle execution without any pauses. > Call Thread.sleep(1000) should be after if(giveup>0) condition block. It > will be called on each iteration in this case. > -- This message was sent by Atlassian Jira (v8.3.4#803005)