[ https://issues.apache.org/jira/browse/GEODE-6287?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16750365#comment-16750365 ]
ASF subversion and git services commented on GEODE-6287: -------------------------------------------------------- Commit 906955255a91601234c0f1dd5d367d47ecb611c4 in geode's branch refs/heads/feature/GEODE-6287 from Barry Oglesby [ https://gitbox.apache.org/repos/asf?p=geode.git;h=9069552 ] GEODE-6287: Cleaned up FilterProfile clientMap when client disconnects normally > When a client connects, registers interest and disconnects normally, its > ClientProxyMembershipID is not cleaned up and a memory leak occurs > ------------------------------------------------------------------------------------------------------------------------------------------- > > Key: GEODE-6287 > URL: https://issues.apache.org/jira/browse/GEODE-6287 > Project: Geode > Issue Type: Bug > Components: client queues, client/server > Reporter: Barry Oglesby > Assignee: Barry Oglesby > Priority: Major > Labels: pull-request-available > Time Spent: 10m > Remaining Estimate: 0h > > When a client connects to a distributed system and registers interest, the > Region's FilterProfile's clientMap (an IDMap) registers the > ClientProxyMembershipID in both the realIDs and wireIDs like: > {noformat} > realIDs={identity(192.168.2.12(client-register:52879:loner):63013:2327c553:client-register,connection=2=1}; > wireIDs={1=identity(192.168.2.12(client-register:52879:loner):63013:2327c553:client-register,connection=2} > {noformat} > When the client leaves normally, the UnregisterInterest command is invoked > which removes the interest and the region. Part of that behavior is to remove > the regionName from the set of regions. > {noformat} > this.regions.remove(regionName) > {noformat} > Then ClientInterestList.clearClientInterestList is then invoked which is > supposed to clear the FilterProfile for each region, but the regions are > already cleared by the UnregisterInterest command, so this method doesn't do > anything. > Then, LocalRegion.cleanupForClient is invoked which invokes > FilterProfile.cleanupForClient. This method currently only closes CQs (which > also cleans up the cqMap which is also an IDMap like the clientMap). > At the end of this, the clientMap's realIDs and wireIDs still contain the > ClientProxyMembershipID. > The cleanupForClient method could be changed to also clean up the clientMap. > Note: If the client is killed abnormally, the UnregisterInterest command is > not invoked, so the interest and the region is not cleaned up normally. When > ClientInterestList.clearClientInterestList is called, the set of regions > still contains the region, and the IDMap is cleaned up properly. -- This message was sent by Atlassian JIRA (v7.6.3#76005)