[ 
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)

Reply via email to