You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@geode.apache.org by bo...@apache.org on 2020/12/10 22:19:20 UTC

[geode] branch feature/GEODE-8781 created (now f8b2cae)

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

boglesby pushed a change to branch feature/GEODE-8781
in repository https://gitbox.apache.org/repos/asf/geode.git.


      at f8b2cae  GEODE-8781: Added ReconnectListener to PeerToPeerSessionCache

This branch includes the following new commits:

     new f8b2cae  GEODE-8781: Added ReconnectListener to PeerToPeerSessionCache

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.



[geode] 01/01: GEODE-8781: Added ReconnectListener to PeerToPeerSessionCache

Posted by bo...@apache.org.
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 <bo...@pivotal.io>
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();
+  }
 }