Fix bug in Region expiration configuration to properly handle Session expiration.

This commit is contained in:
John Blum
2018-08-20 21:53:56 -07:00
parent c0c3ade687
commit 125877df89
2 changed files with 41 additions and 22 deletions

View File

@@ -376,8 +376,8 @@ public class GemFireHttpSessionConfiguration extends AbstractGemFireHttpSessionC
AnnotationAttributes.fromMap(importMetadata.getAnnotationAttributes( AnnotationAttributes.fromMap(importMetadata.getAnnotationAttributes(
EnableGemFireHttpSession.class.getName())); EnableGemFireHttpSession.class.getName()));
ClientRegionShortcut defaultClientRegionShortcut = ClientRegionShortcut.class ClientRegionShortcut defaultClientRegionShortcut =
.cast(enableGemFireHttpSessionAttributes.getEnum("clientRegionShortcut")); enableGemFireHttpSessionAttributes.getEnum("clientRegionShortcut");
setClientRegionShortcut(resolveProperty(clientRegionShortcutPropertyName(), setClientRegionShortcut(resolveProperty(clientRegionShortcutPropertyName(),
ClientRegionShortcut.class, defaultClientRegionShortcut)); ClientRegionShortcut.class, defaultClientRegionShortcut));
@@ -402,8 +402,8 @@ public class GemFireHttpSessionConfiguration extends AbstractGemFireHttpSessionC
setSessionRegionName(resolveProperty(sessionRegionNamePropertyName(), defaultSessionRegionName)); setSessionRegionName(resolveProperty(sessionRegionNamePropertyName(), defaultSessionRegionName));
RegionShortcut defaultServerRegionShortcut = RegionShortcut.class RegionShortcut defaultServerRegionShortcut =
.cast(enableGemFireHttpSessionAttributes.getEnum("serverRegionShortcut")); enableGemFireHttpSessionAttributes.getEnum("serverRegionShortcut");
setServerRegionShortcut(resolveProperty(serverRegionShortcutPropertyName(), setServerRegionShortcut(resolveProperty(serverRegionShortcutPropertyName(),
RegionShortcut.class, defaultServerRegionShortcut)); RegionShortcut.class, defaultServerRegionShortcut));
@@ -597,9 +597,9 @@ public class GemFireHttpSessionConfiguration extends AbstractGemFireHttpSessionC
*/ */
boolean isExpirationAllowed(GemFireCache gemfireCache) { boolean isExpirationAllowed(GemFireCache gemfireCache) {
return !GemFireUtils.isClient(gemfireCache) return !(GemFireUtils.isClient(gemfireCache)
? GemFireUtils.isProxy(getClientRegionShortcut()) ? GemFireUtils.isProxy(getClientRegionShortcut())
: GemFireUtils.isProxy(getServerRegionShortcut()); : GemFireUtils.isProxy(getServerRegionShortcut()));
} }
/** /**

View File

@@ -494,49 +494,68 @@ public class GemFireHttpSessionConfigurationTests {
assertThat(entryIdleTimeoutExpiration.getAction()).isEqualTo(ExpirationAction.INVALIDATE); assertThat(entryIdleTimeoutExpiration.getAction()).isEqualTo(ExpirationAction.INVALIDATE);
assertThat(entryIdleTimeoutExpiration.getTimeout()).isEqualTo(0); assertThat(entryIdleTimeoutExpiration.getTimeout()).isEqualTo(0);
} }
@Test @Test
public void expirationIsAllowed() {
Cache mockCache = mock(Cache.class); public void clientExpirationIsAllowed() {
ClientCache mockClientCache = mock(ClientCache.class); ClientCache mockClientCache = mock(ClientCache.class);
this.gemfireConfiguration.setClientRegionShortcut(ClientRegionShortcut.PROXY);
this.gemfireConfiguration.setServerRegionShortcut(RegionShortcut.REPLICATE);
assertThat(this.gemfireConfiguration.isExpirationAllowed(mockCache)).isTrue();
this.gemfireConfiguration.setServerRegionShortcut(RegionShortcut.PARTITION_REDUNDANT_PERSISTENT_OVERFLOW);
assertThat(this.gemfireConfiguration.isExpirationAllowed(mockCache)).isTrue();
this.gemfireConfiguration.setClientRegionShortcut(ClientRegionShortcut.CACHING_PROXY); this.gemfireConfiguration.setClientRegionShortcut(ClientRegionShortcut.CACHING_PROXY);
this.gemfireConfiguration.setServerRegionShortcut(RegionShortcut.PARTITION_PROXY); this.gemfireConfiguration.setServerRegionShortcut(RegionShortcut.PARTITION_PROXY);
assertThat(this.gemfireConfiguration.isExpirationAllowed(mockClientCache)).isTrue(); assertThat(this.gemfireConfiguration.isExpirationAllowed(mockClientCache)).isTrue();
this.gemfireConfiguration.setClientRegionShortcut(ClientRegionShortcut.LOCAL_PERSISTENT_OVERFLOW); this.gemfireConfiguration.setClientRegionShortcut(ClientRegionShortcut.LOCAL_PERSISTENT_OVERFLOW);
this.gemfireConfiguration.setServerRegionShortcut(RegionShortcut.REPLICATE_PROXY); this.gemfireConfiguration.setServerRegionShortcut(RegionShortcut.REPLICATE);
assertThat(this.gemfireConfiguration.isExpirationAllowed(mockClientCache)).isTrue(); assertThat(this.gemfireConfiguration.isExpirationAllowed(mockClientCache)).isTrue();
} }
@Test @Test
public void expirationIsNotAllowed() { public void serverExpirationIsAllowed() {
Cache mockCache = mock(Cache.class); Cache mockCache = mock(Cache.class);
this.gemfireConfiguration.setClientRegionShortcut(ClientRegionShortcut.PROXY);
this.gemfireConfiguration.setServerRegionShortcut(RegionShortcut.REPLICATE);
assertThat(this.gemfireConfiguration.isExpirationAllowed(mockCache)).isTrue();
this.gemfireConfiguration.setClientRegionShortcut(ClientRegionShortcut.LOCAL);
this.gemfireConfiguration.setServerRegionShortcut(RegionShortcut.PARTITION_REDUNDANT_PERSISTENT_OVERFLOW);
assertThat(this.gemfireConfiguration.isExpirationAllowed(mockCache)).isTrue();
}
@Test
public void clientExpirationIsNotAllowed() {
ClientCache mockClientCache = mock(ClientCache.class); ClientCache mockClientCache = mock(ClientCache.class);
this.gemfireConfiguration.setClientRegionShortcut(ClientRegionShortcut.PROXY); this.gemfireConfiguration.setClientRegionShortcut(ClientRegionShortcut.PROXY);
this.gemfireConfiguration.setServerRegionShortcut(RegionShortcut.PARTITION); this.gemfireConfiguration.setServerRegionShortcut(RegionShortcut.PARTITION_PROXY);
assertThat(this.gemfireConfiguration.isExpirationAllowed(mockClientCache)).isFalse(); assertThat(this.gemfireConfiguration.isExpirationAllowed(mockClientCache)).isFalse();
this.gemfireConfiguration.setClientRegionShortcut(ClientRegionShortcut.LOCAL); this.gemfireConfiguration.setClientRegionShortcut(ClientRegionShortcut.PROXY);
this.gemfireConfiguration.setServerRegionShortcut(RegionShortcut.REPLICATE);
assertThat(this.gemfireConfiguration.isExpirationAllowed(mockClientCache)).isFalse();
}
@Test
public void serverExpirationIsNotAllowed() {
Cache mockCache = mock(Cache.class);
this.gemfireConfiguration.setClientRegionShortcut(ClientRegionShortcut.PROXY);
this.gemfireConfiguration.setServerRegionShortcut(RegionShortcut.PARTITION_PROXY); this.gemfireConfiguration.setServerRegionShortcut(RegionShortcut.PARTITION_PROXY);
assertThat(this.gemfireConfiguration.isExpirationAllowed(mockCache)).isFalse(); assertThat(this.gemfireConfiguration.isExpirationAllowed(mockCache)).isFalse();
this.gemfireConfiguration.setClientRegionShortcut(ClientRegionShortcut.LOCAL);
this.gemfireConfiguration.setServerRegionShortcut(RegionShortcut.REPLICATE_PROXY);
assertThat(this.gemfireConfiguration.isExpirationAllowed(mockCache)).isFalse();
} }
} }