[jboss-cvs] JBossAS SVN: r109250 - in projects/cluster/ha-server-cache-ispn/trunk/src: test/java/org/jboss/web/tomcat/service/session/distributedcache/ispn and 1 other directory.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Wed Nov 10 15:39:24 EST 2010
Author: pferraro
Date: 2010-11-10 15:39:23 -0500 (Wed, 10 Nov 2010)
New Revision: 109250
Modified:
projects/cluster/ha-server-cache-ispn/trunk/src/main/java/org/jboss/web/tomcat/service/session/distributedcache/ispn/DistributedCacheManager.java
projects/cluster/ha-server-cache-ispn/trunk/src/test/java/org/jboss/web/tomcat/service/session/distributedcache/ispn/DistributedCacheManagerTest.java
Log:
Can't create cache in init(), since session manager is not yet wired to the Context.
Create cache lazily.
Modified: projects/cluster/ha-server-cache-ispn/trunk/src/main/java/org/jboss/web/tomcat/service/session/distributedcache/ispn/DistributedCacheManager.java
===================================================================
--- projects/cluster/ha-server-cache-ispn/trunk/src/main/java/org/jboss/web/tomcat/service/session/distributedcache/ispn/DistributedCacheManager.java 2010-11-10 20:30:26 UTC (rev 109249)
+++ projects/cluster/ha-server-cache-ispn/trunk/src/main/java/org/jboss/web/tomcat/service/session/distributedcache/ispn/DistributedCacheManager.java 2010-11-10 20:39:23 UTC (rev 109250)
@@ -551,17 +551,17 @@
public static class JvmRouteHandler
{
private final LocalDistributableSessionManager manager;
- private final Cache<Address, String> cache;
+ private final CacheSource source;
- JvmRouteHandler(CacheSource cacheSource, LocalDistributableSessionManager manager)
+ JvmRouteHandler(CacheSource source, LocalDistributableSessionManager manager)
{
- this.cache = cacheSource.getCache(manager);
+ this.source = source;
this.manager = manager;
}
public Cache<Address, String> getCache()
{
- return this.cache;
+ return this.source.getCache(this.manager);
}
@ViewChanged
@@ -570,12 +570,14 @@
Collection<Address> oldMembers = event.getOldMembers();
Collection<Address> newMembers = event.getNewMembers();
+ Cache<Address, String> cache = this.getCache();
+
// Remove jvm route of crashed member
for (Address member: oldMembers)
{
if (!newMembers.contains(member))
{
- if (this.cache.remove(member) != null)
+ if (cache.remove(member) != null)
{
log.info("Removed stale jvm route entry from web session cache on behalf of member " + member);
}
@@ -589,7 +591,7 @@
Address localAddress = event.getLocalAddress();
if (!oldMembers.contains(localAddress) && newMembers.contains(localAddress))
{
- String oldJvmRoute = this.cache.put(localAddress, jvmRoute);
+ String oldJvmRoute = cache.put(localAddress, jvmRoute);
if (oldJvmRoute == null)
{
log.info("Adding missing jvm route entry to web session cache");
Modified: projects/cluster/ha-server-cache-ispn/trunk/src/test/java/org/jboss/web/tomcat/service/session/distributedcache/ispn/DistributedCacheManagerTest.java
===================================================================
--- projects/cluster/ha-server-cache-ispn/trunk/src/test/java/org/jboss/web/tomcat/service/session/distributedcache/ispn/DistributedCacheManagerTest.java 2010-11-10 20:30:26 UTC (rev 109249)
+++ projects/cluster/ha-server-cache-ispn/trunk/src/test/java/org/jboss/web/tomcat/service/session/distributedcache/ispn/DistributedCacheManagerTest.java 2010-11-10 20:39:23 UTC (rev 109250)
@@ -63,7 +63,7 @@
private LocalDistributableSessionManager sessionManager;
private SessionAttributeStorage<OutgoingDistributableSessionData> storage;
private AdvancedCache<String, Map<Object, Object>> sessionCache;
- private Cache<Address, String> jvmRouteCache;
+ private CacheSource jvmRouteCacheSource;
private SharedLocalYieldingClusterLockManager lockManager;
private BatchingManager batchingManager;
private CacheInvoker invoker;
@@ -77,21 +77,19 @@
this.sessionManager = this.control.createMock(LocalDistributableSessionManager.class);
this.storage = this.control.createMock(SessionAttributeStorage.class);
this.sessionCache = this.control.createMock(AdvancedCache.class);
- this.jvmRouteCache = this.control.createMock(Cache.class);
+ this.jvmRouteCacheSource = this.control.createMock(CacheSource.class);
this.lockManager = this.control.createMock(SharedLocalYieldingClusterLockManager.class);
this.batchingManager = this.control.createMock(BatchingManager.class);
this.invoker = this.control.createMock(CacheInvoker.class);
- CacheSource cacheSource = this.control.createMock(CacheSource.class);
Configuration configuration = new Configuration();
configuration.setCacheMode(CacheMode.DIST_SYNC);
EasyMock.expect(this.sessionCache.getConfiguration()).andReturn(configuration);
- EasyMock.expect(cacheSource.<Address, String>getCache(this.sessionManager)).andReturn(this.jvmRouteCache);
this.control.replay();
- this.manager = new DistributedCacheManager<OutgoingDistributableSessionData>(this.sessionManager, this.sessionCache, cacheSource, this.lockManager, this.storage, this.batchingManager, this.invoker);
+ this.manager = new DistributedCacheManager<OutgoingDistributableSessionData>(this.sessionManager, this.sessionCache, this.jvmRouteCacheSource, this.lockManager, this.storage, this.batchingManager, this.invoker);
this.control.verify();
this.control.reset();
@@ -112,6 +110,8 @@
{
EmbeddedCacheManager container = this.control.createMock(EmbeddedCacheManager.class);
Address address = this.control.createMock(Address.class);
+ @SuppressWarnings("unchecked")
+ Cache<Address, String> jvmRouteCache = this.control.createMock(Cache.class);
Capture<DistributedCacheManager.JvmRouteHandler> capturedJvmRouteHandler = new Capture<DistributedCacheManager.JvmRouteHandler>();
String jvmRoute = "node0";
@@ -130,7 +130,8 @@
EasyMock.expect(this.sessionManager.getJvmRoute()).andReturn(jvmRoute);
EasyMock.expect(container.getAddress()).andReturn(address);
- EasyMock.expect(this.jvmRouteCache.putIfAbsent(EasyMock.same(address), EasyMock.same(jvmRoute))).andReturn(null);
+ EasyMock.expect(this.jvmRouteCacheSource.<Address, String>getCache(this.sessionManager)).andReturn(jvmRouteCache);
+ EasyMock.expect(jvmRouteCache.putIfAbsent(EasyMock.same(address), EasyMock.same(jvmRoute))).andReturn(null);
this.control.replay();
@@ -729,20 +730,24 @@
public void viewChanged()
{
ViewChangedEvent event = this.control.createMock(ViewChangedEvent.class);
- Address newMember = EasyMock.createMock(Address.class);
- Address member = EasyMock.createMock(Address.class);
- Address oldMember = EasyMock.createMock(Address.class);
+ Address newMember = this.control.createMock(Address.class);
+ Address member = this.control.createMock(Address.class);
+ Address oldMember = this.control.createMock(Address.class);
+ @SuppressWarnings("unchecked")
+ Cache<Address, String> jvmRouteCache = this.control.createMock(Cache.class);
String jvmRoute = "node1";
DistributedCacheManager.JvmRouteHandler handler = this.start(ComponentStatus.RUNNING, false);
+ EasyMock.expect(this.jvmRouteCacheSource.<Address, String>getCache(this.sessionManager)).andReturn(jvmRouteCache);
+
EasyMock.expect(event.getOldMembers()).andReturn(Arrays.asList(member, oldMember));
EasyMock.expect(event.getNewMembers()).andReturn(Arrays.asList(member, newMember));
- EasyMock.expect(this.jvmRouteCache.remove(EasyMock.same(oldMember))).andReturn(null);
+ EasyMock.expect(jvmRouteCache.remove(EasyMock.same(oldMember))).andReturn(null);
EasyMock.expect(event.getLocalAddress()).andReturn(newMember);
EasyMock.expect(this.sessionManager.getJvmRoute()).andReturn(jvmRoute);
- EasyMock.expect(this.jvmRouteCache.put(EasyMock.same(newMember), EasyMock.same(jvmRoute))).andReturn(null);
+ EasyMock.expect(jvmRouteCache.put(EasyMock.same(newMember), EasyMock.same(jvmRoute))).andReturn(null);
this.control.replay();
@@ -806,6 +811,8 @@
DistributionManager distManager = this.control.createMock(DistributionManager.class);
+ @SuppressWarnings("unchecked")
+ Cache<Address, String> jvmRouteCache = this.control.createMock(Cache.class);
EasyMock.expect(this.sessionCache.getAdvancedCache()).andReturn(this.sessionCache);
EasyMock.expect(this.sessionCache.getDistributionManager()).andReturn(distManager);
@@ -831,8 +838,9 @@
EasyMock.expect(this.sessionCache.getDistributionManager()).andReturn(distManager);
EasyMock.expect(distManager.isRehashInProgress()).andReturn(false);
EasyMock.expect(distManager.locate(EasyMock.same(sessionId))).andReturn(Arrays.asList(address1, address2, address3));
- EasyMock.expect(this.jvmRouteCache.get(EasyMock.same(address1))).andReturn(null);
- EasyMock.expect(this.jvmRouteCache.get(EasyMock.same(address2))).andReturn(expected);
+ EasyMock.expect(this.jvmRouteCacheSource.<Address, String>getCache(this.sessionManager)).andReturn(jvmRouteCache);
+ EasyMock.expect(jvmRouteCache.get(EasyMock.same(address1))).andReturn(null);
+ EasyMock.expect(jvmRouteCache.get(EasyMock.same(address2))).andReturn(expected);
EasyMock.expect(this.sessionCache.withFlags(Flag.FORCE_SYNCHRONOUS)).andReturn(this.sessionCache);
this.control.replay();
More information about the jboss-cvs-commits
mailing list