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();
+ }
}