Darrel Schneider created GEODE-10285:
----------------------------------------

             Summary: the auto reconnect after a forced disconnect uses more 
memory than needed
                 Key: GEODE-10285
                 URL: https://issues.apache.org/jira/browse/GEODE-10285
             Project: Geode
          Issue Type: Improvement
          Components: core
            Reporter: Darrel Schneider


When a member is forced out of the distributed system, if 
disable-auto-reconnect=false (the default), then it will attempt to close its 
cache, disconnect from the cluster, and then reconnect and create a new cache. 
Because of the way this is implemented, the old cache is kept in memory while 
the new cache is being created. This can end up causing reconnect to use much 
more memory then it needs. That memory will be freed after the reconnect 
completes, but it is possible for this to cause the JVM to run out of memory 
during the reconnect.
So far I have found two places that keep the old cache around:
1. InternalDistributedSystem.tryReconnect is passed the old cache as a 
parameter. Only one caller exists and only a small block of code in 
tryReconnect needs the old cache. So it would be easy to fix this by not 
passing it in as a parameter.
2. InternalDistributedSystem.reconnect (called by tryReconnect) keeps the old 
cache in a local variable "cache". It only needs it to initialize "cacheXML" 
and "cacheServerCreation". So once those are initialized it would be easy to 
drop this ref. But cacheServerCreation also contains references to the old 
cache through the "cache" instance variable on CacheServerCreation. 



--
This message was sent by Atlassian Jira
(v8.20.7#820007)

Reply via email to