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

eshu11 pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/geode.git


The following commit(s) were added to refs/heads/develop by this push:
     new f53fa75  GEODE-8779: Register interest only when local cache is 
enabled. (#5836)
f53fa75 is described below

commit f53fa752e6d322d6fd24237212a3b958a5b882b8
Author: Eric Shu <e...@pivotal.io>
AuthorDate: Mon Dec 14 17:42:00 2020 -0800

    GEODE-8779: Register interest only when local cache is enabled. (#5836)
---
 .../internal/common/ClientServerSessionCache.java  |  9 ++++--
 .../session/catalina/ClientServerSessionCache.java | 12 +++++---
 .../session/catalina/AbstractSessionCacheTest.java |  4 ++-
 .../catalina/ClientServerSessionCacheTest.java     | 35 ++++++++++++++++++++--
 4 files changed, 51 insertions(+), 9 deletions(-)

diff --git 
a/extensions/geode-modules-session-internal/src/main/java/org/apache/geode/modules/session/internal/common/ClientServerSessionCache.java
 
b/extensions/geode-modules-session-internal/src/main/java/org/apache/geode/modules/session/internal/common/ClientServerSessionCache.java
index 603248a..7633f36 100644
--- 
a/extensions/geode-modules-session-internal/src/main/java/org/apache/geode/modules/session/internal/common/ClientServerSessionCache.java
+++ 
b/extensions/geode-modules-session-internal/src/main/java/org/apache/geode/modules/session/internal/common/ClientServerSessionCache.java
@@ -23,6 +23,7 @@ import javax.servlet.http.HttpSession;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import org.apache.geode.cache.DataPolicy;
 import org.apache.geode.cache.GemFireCache;
 import org.apache.geode.cache.InterestResultPolicy;
 import org.apache.geode.cache.Region;
@@ -127,7 +128,9 @@ public class ClientServerSessionCache extends 
AbstractSessionCache {
       LOG.debug("Retrieved session region: " + this.sessionRegion);
 
       // Register interest in case users provide their own client cache region
-      sessionRegion.registerInterestForAllKeys(InterestResultPolicy.KEYS);
+      if (sessionRegion.getAttributes().getDataPolicy() != DataPolicy.EMPTY) {
+        sessionRegion.registerInterestForAllKeys(InterestResultPolicy.KEYS);
+      }
     }
   }
 
@@ -175,7 +178,9 @@ public class ClientServerSessionCache extends 
AbstractSessionCache {
     // Create the region
     Region region = factory.create(regionName);
 
-    region.registerInterestForAllKeys(InterestResultPolicy.KEYS);
+    if (enableLocalCache) {
+      region.registerInterestForAllKeys(InterestResultPolicy.KEYS);
+    }
     return region;
   }
 }
diff --git 
a/extensions/geode-modules/src/main/java/org/apache/geode/modules/session/catalina/ClientServerSessionCache.java
 
b/extensions/geode-modules/src/main/java/org/apache/geode/modules/session/catalina/ClientServerSessionCache.java
index 107fb32..8f54abd 100644
--- 
a/extensions/geode-modules/src/main/java/org/apache/geode/modules/session/catalina/ClientServerSessionCache.java
+++ 
b/extensions/geode-modules/src/main/java/org/apache/geode/modules/session/catalina/ClientServerSessionCache.java
@@ -20,6 +20,7 @@ import java.util.Set;
 
 import javax.servlet.http.HttpSession;
 
+import org.apache.geode.cache.DataPolicy;
 import org.apache.geode.cache.GemFireCache;
 import org.apache.geode.cache.InterestResultPolicy;
 import org.apache.geode.cache.Region;
@@ -189,7 +190,9 @@ public class ClientServerSessionCache extends 
AbstractSessionCache {
         sessionRegion.getAttributesMutator().addCacheListener(new 
SessionExpirationCacheListener());
       }
 
-      sessionRegion.registerInterestForAllKeys(InterestResultPolicy.KEYS);
+      if (sessionRegion.getAttributes().getDataPolicy() != DataPolicy.EMPTY) {
+        sessionRegion.registerInterestForAllKeys(InterestResultPolicy.KEYS);
+      }
     }
   }
 
@@ -224,10 +227,11 @@ public class ClientServerSessionCache extends 
AbstractSessionCache {
   Region<String, HttpSession> createLocalSessionRegionWithRegisterInterest() {
     Region<String, HttpSession> region = createLocalSessionRegion();
 
-    // register interest are needed for proxy or caching-proxy client:
+    // register interest are needed for caching proxy client:
     // to get updates from server if local cache is enabled;
-    // to get callbacks for listener invocation for proxy client.
-    region.registerInterestForAllKeys(InterestResultPolicy.KEYS);
+    if (region.getAttributes().getDataPolicy() != DataPolicy.EMPTY) {
+      region.registerInterestForAllKeys(InterestResultPolicy.KEYS);
+    }
 
     return region;
   }
diff --git 
a/extensions/geode-modules/src/test/java/org/apache/geode/modules/session/catalina/AbstractSessionCacheTest.java
 
b/extensions/geode-modules/src/test/java/org/apache/geode/modules/session/catalina/AbstractSessionCacheTest.java
index 32cecd8..cfc1d6b 100644
--- 
a/extensions/geode-modules/src/test/java/org/apache/geode/modules/session/catalina/AbstractSessionCacheTest.java
+++ 
b/extensions/geode-modules/src/test/java/org/apache/geode/modules/session/catalina/AbstractSessionCacheTest.java
@@ -18,6 +18,7 @@ package org.apache.geode.modules.session.catalina;
 import static org.apache.geode.util.internal.UncheckedUtils.uncheckedCast;
 import static org.mockito.ArgumentMatchers.any;
 import static org.mockito.ArgumentMatchers.anyInt;
+import static org.mockito.Mockito.RETURNS_DEEP_STUBS;
 import static org.mockito.Mockito.doReturn;
 import static org.mockito.Mockito.doThrow;
 import static org.mockito.Mockito.mock;
@@ -51,7 +52,8 @@ public abstract class AbstractSessionCacheTest {
 
 
   protected SessionManager sessionManager = mock(SessionManager.class);
-  protected Region<String, HttpSession> sessionRegion = 
uncheckedCast(mock(Region.class));
+  protected Region<String, HttpSession> sessionRegion =
+      uncheckedCast(mock(Region.class, RETURNS_DEEP_STUBS));
   protected DistributedSystem distributedSystem = 
mock(DistributedSystem.class);
   protected Log logger = mock(Log.class);
   protected Execution<Object, Object, List<Object>> emptyExecution =
diff --git 
a/extensions/geode-modules/src/test/java/org/apache/geode/modules/session/catalina/ClientServerSessionCacheTest.java
 
b/extensions/geode-modules/src/test/java/org/apache/geode/modules/session/catalina/ClientServerSessionCacheTest.java
index d89901b..d3cd56b 100644
--- 
a/extensions/geode-modules/src/test/java/org/apache/geode/modules/session/catalina/ClientServerSessionCacheTest.java
+++ 
b/extensions/geode-modules/src/test/java/org/apache/geode/modules/session/catalina/ClientServerSessionCacheTest.java
@@ -19,10 +19,12 @@ import static org.apache.geode.cache.Region.SEPARATOR;
 import static org.apache.geode.util.internal.UncheckedUtils.uncheckedCast;
 import static org.assertj.core.api.Assertions.assertThat;
 import static org.assertj.core.api.Assertions.assertThatThrownBy;
+import static org.mockito.Mockito.RETURNS_DEEP_STUBS;
 import static org.mockito.Mockito.any;
 import static org.mockito.Mockito.doReturn;
 import static org.mockito.Mockito.doThrow;
 import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.never;
 import static org.mockito.Mockito.spy;
 import static org.mockito.Mockito.times;
 import static org.mockito.Mockito.verify;
@@ -234,7 +236,7 @@ public class ClientServerSessionCacheTest extends 
AbstractSessionCacheTest {
     doReturn(sessionRegion).when(cache).getRegion(sessionRegionName);
     doReturn(attributes).when(sessionRegion).getAttributes();
     doReturn(cacheListeners).when(attributes).getCacheListeners();
-    when(attributes.getDataPolicy()).thenReturn(DataPolicy.EMPTY);
+    when(attributes.getDataPolicy()).thenReturn(DataPolicy.DEFAULT);
 
     sessionCache.initialize();
 
@@ -242,6 +244,20 @@ public class ClientServerSessionCacheTest extends 
AbstractSessionCacheTest {
   }
 
   @Test
+  public void 
createOrRetrieveRegionWithNonNullSessionProxyRegionNotRegistersInterestIfEmpty()
 {
+    final CacheListener<String, HttpSession>[] cacheListeners =
+        uncheckedCast(new CacheListener[] {new 
SessionExpirationCacheListener()});
+    doReturn(sessionRegion).when(cache).getRegion(sessionRegionName);
+    doReturn(attributes).when(sessionRegion).getAttributes();
+    doReturn(cacheListeners).when(attributes).getCacheListeners();
+    when(attributes.getDataPolicy()).thenReturn(DataPolicy.EMPTY);
+
+    sessionCache.initialize();
+
+    verify(sessionRegion, 
never()).registerInterestForAllKeys(InterestResultPolicy.KEYS);
+  }
+
+  @Test
   public void 
touchSessionsInvokesPRFunctionForPRAndDoesNotThrowExceptionWhenFunctionDoesNotThrowException()
 {
     final Set<String> sessionIds = new HashSet<>();
 
@@ -325,7 +341,7 @@ public class ClientServerSessionCacheTest extends 
AbstractSessionCacheTest {
   public void registerInterestForSessionRegion() {
     final SessionManager manager = mock(SessionManager.class);
     final ClientCache clientCache = mock(ClientCache.class);
-    final Region region = mock(Region.class);
+    final Region<?, ?> region = mock(Region.class, RETURNS_DEEP_STUBS);
     final ClientServerSessionCache cache = spy(new 
ClientServerSessionCache(manager, clientCache));
     doReturn(region).when(cache).createLocalSessionRegion();
 
@@ -334,4 +350,19 @@ public class ClientServerSessionCacheTest extends 
AbstractSessionCacheTest {
     verify(region).registerInterestForAllKeys(InterestResultPolicy.KEYS);
   }
 
+  @Test
+  public void doesNotRegisterInterestIfLocalCacheNotEnabled() {
+    final SessionManager manager = mock(SessionManager.class);
+    final ClientCache clientCache = mock(ClientCache.class);
+    final Region<?, ?> region = mock(Region.class);
+    final RegionAttributes<?, ?> attributes = mock(RegionAttributes.class);
+    final ClientServerSessionCache cache = spy(new 
ClientServerSessionCache(manager, clientCache));
+    doReturn(region).when(cache).createLocalSessionRegion();
+    doReturn(attributes).when(region).getAttributes();
+    doReturn(DataPolicy.EMPTY).when(attributes).getDataPolicy();
+
+    cache.createLocalSessionRegionWithRegisterInterest();
+
+    verify(region, 
never()).registerInterestForAllKeys(InterestResultPolicy.KEYS);
+  }
 }

Reply via email to