This is an automated email from the ASF dual-hosted git repository. boglesby pushed a commit to branch feature/GEODE-8781 in repository https://gitbox.apache.org/repos/asf/geode.git
commit f8b2cae2376c944064ff03bcc2260694d801ca85 Author: Barry Oglesby <[email protected]> AuthorDate: Thu Dec 10 14:17:35 2020 -0800 GEODE-8781: Added ReconnectListener to PeerToPeerSessionCache --- .../modules/session/catalina/DeltaSessionManager.java | 6 +++++- .../session/catalina/PeerToPeerSessionCache.java | 19 +++++++++++++++++++ 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/extensions/geode-modules/src/main/java/org/apache/geode/modules/session/catalina/DeltaSessionManager.java b/extensions/geode-modules/src/main/java/org/apache/geode/modules/session/catalina/DeltaSessionManager.java index a42b0d8..997c424 100644 --- a/extensions/geode-modules/src/main/java/org/apache/geode/modules/session/catalina/DeltaSessionManager.java +++ b/extensions/geode-modules/src/main/java/org/apache/geode/modules/session/catalina/DeltaSessionManager.java @@ -551,7 +551,11 @@ public abstract class DeltaSessionManager<CommitSessionValveT extends AbstractCo TimerTask task = new TimerTask() { @Override public void run() { - int currentActiveSessions = getSessionCache().size(); + int currentActiveSessions = 0; + try { + currentActiveSessions = getSessionCache().size(); + } catch (Exception ignore) { + } if (currentActiveSessions > getMaxActive()) { setMaxActive(currentActiveSessions); if (getLogger().isDebugEnabled()) { diff --git a/extensions/geode-modules/src/main/java/org/apache/geode/modules/session/catalina/PeerToPeerSessionCache.java b/extensions/geode-modules/src/main/java/org/apache/geode/modules/session/catalina/PeerToPeerSessionCache.java index d5031c1..04e197d 100644 --- a/extensions/geode-modules/src/main/java/org/apache/geode/modules/session/catalina/PeerToPeerSessionCache.java +++ b/extensions/geode-modules/src/main/java/org/apache/geode/modules/session/catalina/PeerToPeerSessionCache.java @@ -27,6 +27,8 @@ import org.apache.geode.cache.execute.Execution; import org.apache.geode.cache.execute.Function; import org.apache.geode.cache.execute.FunctionService; import org.apache.geode.cache.execute.ResultCollector; +import org.apache.geode.distributed.internal.InternalDistributedSystem; +import org.apache.geode.internal.cache.InternalCache; import org.apache.geode.modules.session.catalina.callback.LocalSessionCacheLoader; import org.apache.geode.modules.session.catalina.callback.LocalSessionCacheWriter; import org.apache.geode.modules.session.catalina.callback.SessionExpirationCacheListener; @@ -47,6 +49,7 @@ public class PeerToPeerSessionCache extends AbstractSessionCache { public PeerToPeerSessionCache(SessionManager sessionManager, Cache cache) { super(sessionManager); this.cache = cache; + addReconnectListener(); } @Override @@ -242,4 +245,20 @@ public class PeerToPeerSessionCache extends AbstractSessionCache { Execution getExecutionForFunctionOnMembersWithArguments(Object[] arguments) { return FunctionService.onMembers().setArguments(arguments); } + + private void addReconnectListener() { + InternalDistributedSystem.addReconnectListener( + new InternalDistributedSystem.ReconnectListener() { + @Override + public void onReconnect(InternalDistributedSystem oldSystem, + InternalDistributedSystem newSystem) { + reinitialize(newSystem.getCache()); + } + }); + } + + private void reinitialize(InternalCache reconnectedCache) { + this.cache = reconnectedCache; + initialize(); + } }
