You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@geode.apache.org by "Owen Nichols (JIRA)" <ji...@apache.org> on 2019/04/24 22:23:21 UTC

[jira] [Closed] (GEODE-6287) When a client connects, registers interest and disconnects normally, its ClientProxyMembershipID is not cleaned up and a memory leak occurs

     [ https://issues.apache.org/jira/browse/GEODE-6287?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Owen Nichols closed GEODE-6287.
-------------------------------

> 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
>             Fix For: 1.9.0
>
>          Time Spent: 0.5h
>  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)