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:21 UTC
[geode] 01/01: GEODE-8781: Added ReconnectListener to
PeerToPeerSessionCache
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();
+ }
}