Fix bug in Region expiration configuration to properly handle Session expiration.
This commit is contained in:
@@ -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()));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -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();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user