You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@geode.apache.org by sa...@apache.org on 2021/04/09 13:27:54 UTC

[geode] branch support/1.13 updated: GEODE-8781: Added ReconnectListener to PeerToPeerSessionCache

This is an automated email from the ASF dual-hosted git repository.

sabbey37 pushed a commit to branch support/1.13
in repository https://gitbox.apache.org/repos/asf/geode.git


The following commit(s) were added to refs/heads/support/1.13 by this push:
     new 4022403  GEODE-8781: Added ReconnectListener to PeerToPeerSessionCache
4022403 is described below

commit 4022403a996efd3235fa03cc62952c05675225c8
Author: Sarah <sa...@pivotal.io>
AuthorDate: Fri Apr 9 09:27:12 2021 -0400

    GEODE-8781: Added ReconnectListener to PeerToPeerSessionCache
    
    (cherry picked from commit bda0d3fbf13ebdf37db8d710cf7f4d4b892a1646)
    
    Co-authored-by: Barry Oglesby <bo...@users.noreply.github.com>
---
 .../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 2af36fe..e8fb0e2 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
@@ -550,7 +550,11 @@ public abstract class DeltaSessionManager extends ManagerBase
     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();
+  }
 }