[jboss-cvs] JBossAS SVN: r109041 - 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
Mon Nov 1 11:48:57 EDT 2010


Author: pferraro
Date: 2010-11-01 11:48:56 -0400 (Mon, 01 Nov 2010)
New Revision: 109041

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/DistributedCacheManagerFactoryTest.java
   projects/cluster/ha-server-cache-ispn/trunk/src/test/java/org/jboss/web/tomcat/service/session/distributedcache/ispn/DistributedCacheManagerTest.java
Log:
Fix removal of cache manager listener on stop().

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-01 14:54:52 UTC (rev 109040)
+++ projects/cluster/ha-server-cache-ispn/trunk/src/main/java/org/jboss/web/tomcat/service/session/distributedcache/ispn/DistributedCacheManager.java	2010-11-01 15:48:56 UTC (rev 109041)
@@ -30,6 +30,7 @@
 import org.infinispan.AdvancedCache;
 import org.infinispan.Cache;
 import org.infinispan.config.CacheLoaderManagerConfig;
+import org.infinispan.config.Configuration;
 import org.infinispan.context.Flag;
 import org.infinispan.distribution.DistributionManager;
 import org.infinispan.manager.CacheContainer;
@@ -93,13 +94,14 @@
       return map;
    }
    
+   final SessionAttributeStorage<T> attributeStorage;
    private final LocalDistributableSessionManager manager;
    private final SharedLocalYieldingClusterLockManager lockManager;
-   final SessionAttributeStorage<T> attributeStorage;
    private final Cache<String, Map<Object, Object>> sessionCache;
    private final CacheInvoker invoker;
    private final BatchingManager batchingManager;
    private final boolean passivationEnabled;
+   private final Object viewChangeListener;
    
    public DistributedCacheManager(LocalDistributableSessionManager manager,
          Cache<String, Map<Object, Object>> sessionCache, Cache<Address, String> jvmRouteCache,
@@ -113,9 +115,12 @@
       this.batchingManager = batchingManager;
       this.invoker = invoker;
       
-      CacheLoaderManagerConfig loaderManagerConfig = this.sessionCache.getConfiguration().getCacheLoaderManagerConfig();
+      Configuration configuration = this.sessionCache.getConfiguration();
+      CacheLoaderManagerConfig loaderManagerConfig = configuration.getCacheLoaderManagerConfig();
       
       this.passivationEnabled = (loaderManagerConfig != null) ? loaderManagerConfig.isPassivation().booleanValue() && !loaderManagerConfig.isShared().booleanValue() : false;
+      
+      this.viewChangeListener = configuration.getCacheMode().isDistributed() ? new ViewChangeListener(this.manager) : null;
    }
    
    /**
@@ -132,11 +137,11 @@
       
       this.sessionCache.addListener(this);
       
-      if (this.sessionCache.getConfiguration().getCacheMode().isDistributed())
+      if (this.viewChangeListener != null)
       {
          EmbeddedCacheManager container = (EmbeddedCacheManager) this.sessionCache.getCacheManager();
          
-         container.addListener(new ViewChangeListener(this.manager));
+         container.addListener(this.viewChangeListener);
          
          String jvmRoute = this.manager.getJvmRoute();
          
@@ -159,11 +164,11 @@
    @Override
    public void stop()
    {
-      if (this.sessionCache.getConfiguration().getCacheMode().isDistributed())
+      if (this.viewChangeListener != null)
       {
          EmbeddedCacheManager container = (EmbeddedCacheManager) this.sessionCache.getCacheManager();
          
-         container.removeListener(this);
+         container.removeListener(this.viewChangeListener);
       }
       
       this.sessionCache.removeListener(this);
@@ -446,6 +451,8 @@
       
       LockResult result = lockResultMap.get(this.lockManager.lock(this.getSessionLockKey(sessionId), container.getGlobalConfiguration().getDistributedSyncTimeout(), newLock));
       
+      trace("acquireSessionOwnership(%s, %s) = %s", sessionId, newLock, result);
+      
       return (result != null) ? result : LockResult.UNSUPPORTED;
    }
 

Modified: projects/cluster/ha-server-cache-ispn/trunk/src/test/java/org/jboss/web/tomcat/service/session/distributedcache/ispn/DistributedCacheManagerFactoryTest.java
===================================================================
--- projects/cluster/ha-server-cache-ispn/trunk/src/test/java/org/jboss/web/tomcat/service/session/distributedcache/ispn/DistributedCacheManagerFactoryTest.java	2010-11-01 14:54:52 UTC (rev 109040)
+++ projects/cluster/ha-server-cache-ispn/trunk/src/test/java/org/jboss/web/tomcat/service/session/distributedcache/ispn/DistributedCacheManagerFactoryTest.java	2010-11-01 15:48:56 UTC (rev 109041)
@@ -27,10 +27,7 @@
 import org.easymock.EasyMock;
 import org.easymock.IMocksControl;
 import org.infinispan.AdvancedCache;
-import org.infinispan.Cache;
 import org.infinispan.config.Configuration;
-import org.infinispan.manager.CacheContainer;
-import org.infinispan.remoting.transport.Address;
 import org.infinispan.transaction.tm.BatchModeTransactionManager;
 import org.jboss.ha.ispn.invoker.CacheInvoker;
 import org.jboss.metadata.web.jboss.ReplicationConfig;
@@ -87,10 +84,6 @@
    @Test
    public void getDistributedCacheManager() throws Exception
    {
-      CacheContainer container = this.control.createMock(CacheContainer.class);
-      @SuppressWarnings("unchecked")
-      Cache<Address, String> jvmRouteCache = this.control.createMock(Cache.class);
-      
       ReplicationConfig config = new ReplicationConfig();
       ReplicationGranularity granularity = ReplicationGranularity.SESSION;
       config.setReplicationGranularity(granularity);
@@ -105,9 +98,6 @@
       EasyMock.expect(this.manager.getReplicationConfig()).andReturn(config);
       EasyMock.expect(this.storageFactory.createStorage(granularity, this.marshaller)).andReturn(this.storage);
       
-//      EasyMock.expect(this.cache.getCacheManager()).andReturn(container);
-//      EasyMock.expect(this.manager.getEngineName()).andReturn("engine");
-//      EasyMock.expect(container.<Address, String>getCache("engine")).andReturn(jvmRouteCache);
       EasyMock.expect(this.cache.getAdvancedCache()).andReturn(this.cache);
       
       this.control.replay();

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-01 14:54:52 UTC (rev 109040)
+++ projects/cluster/ha-server-cache-ispn/trunk/src/test/java/org/jboss/web/tomcat/service/session/distributedcache/ispn/DistributedCacheManagerTest.java	2010-11-01 15:48:56 UTC (rev 109041)
@@ -39,7 +39,6 @@
 import org.infinispan.notifications.cachelistener.event.CacheEntryActivatedEvent;
 import org.infinispan.notifications.cachelistener.event.CacheEntryModifiedEvent;
 import org.infinispan.notifications.cachelistener.event.CacheEntryRemovedEvent;
-import org.infinispan.notifications.cachemanagerlistener.event.ViewChangedEvent;
 import org.infinispan.remoting.transport.Address;
 import org.jboss.ha.framework.server.lock.SharedLocalYieldingClusterLockManager;
 import org.jboss.ha.ispn.invoker.CacheInvoker;
@@ -63,7 +62,6 @@
    private LocalDistributableSessionManager sessionManager;
    private SessionAttributeStorage<OutgoingDistributableSessionData> storage;
    private AdvancedCache<String, Map<Object, Object>> sessionCache;
-//   private AdvancedCache<Address, String> jvmRouteCache;
    private SharedLocalYieldingClusterLockManager lockManager;
    private BatchingManager batchingManager;
    private CacheInvoker invoker;
@@ -77,12 +75,12 @@
       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(AdvancedCache.class);
       this.lockManager = this.control.createMock(SharedLocalYieldingClusterLockManager.class);
       this.batchingManager = this.control.createMock(BatchingManager.class);
       this.invoker = this.control.createMock(CacheInvoker.class);
       
       Configuration configuration = new Configuration();
+      configuration.setCacheMode(CacheMode.DIST_SYNC);
 
       EasyMock.expect(this.sessionCache.getConfiguration()).andReturn(configuration);
       
@@ -98,21 +96,14 @@
    public void start()
    {
       // Validate starting of cache per cache status
-      this.start(ComponentStatus.FAILED, true, CacheMode.REPL_ASYNC, false);
-      this.start(ComponentStatus.INITIALIZING, true, CacheMode.REPL_ASYNC, false);
-      this.start(ComponentStatus.RUNNING, false, CacheMode.REPL_ASYNC, false);
-      this.start(ComponentStatus.STOPPING, true, CacheMode.REPL_ASYNC, false);
-      this.start(ComponentStatus.TERMINATED, true, CacheMode.REPL_ASYNC, false);
-      
-      this.start(ComponentStatus.RUNNING, false, CacheMode.REPL_SYNC, false);
-      this.start(ComponentStatus.RUNNING, false, CacheMode.INVALIDATION_SYNC, false);
-      this.start(ComponentStatus.RUNNING, false, CacheMode.INVALIDATION_ASYNC, false);
-      this.start(ComponentStatus.RUNNING, false, CacheMode.DIST_SYNC, true);
-      this.start(ComponentStatus.RUNNING, false, CacheMode.DIST_ASYNC, true);
-      this.start(ComponentStatus.RUNNING, false, CacheMode.LOCAL, false);
+      this.start(ComponentStatus.FAILED, true);
+      this.start(ComponentStatus.INITIALIZING, true);
+      this.start(ComponentStatus.RUNNING, false);
+      this.start(ComponentStatus.STOPPING, true);
+      this.start(ComponentStatus.TERMINATED, true);
    }
    
-   private void start(ComponentStatus status, boolean startCache, CacheMode mode, boolean distributed)
+   private void start(ComponentStatus status, boolean startCache)
    {
       EmbeddedCacheManager container = this.control.createMock(EmbeddedCacheManager.class);
       @SuppressWarnings("unchecked")
@@ -120,9 +111,6 @@
       Address address = this.control.createMock(Address.class);
       String jvmRoute = "node0";
       
-      Configuration configuration = new Configuration();
-      configuration.setCacheMode(mode);
-      
       EasyMock.expect(this.sessionCache.getStatus()).andReturn(status);
       
       if (startCache)
@@ -132,22 +120,17 @@
       
       this.sessionCache.addListener(EasyMock.same(this.manager));
       
-      EasyMock.expect(this.sessionCache.getConfiguration()).andReturn(configuration);
+      EasyMock.expect(this.sessionCache.getCacheManager()).andReturn(container);
       
-      if (distributed)
-      {
-         EasyMock.expect(this.sessionCache.getCacheManager()).andReturn(container);
-         
-//         container.addListener(EasyMock.same(this.manager));
-         container.addListener(EasyMock.anyObject());
-         
-         EasyMock.expect(container.getAddress()).andReturn(address);
-         EasyMock.expect(this.sessionManager.getJvmRoute()).andReturn(jvmRoute);
-         EasyMock.expect(this.sessionManager.getEngineName()).andReturn("engine");
-         EasyMock.expect(container.<Address, String>getCache("engine")).andReturn(cache);
-         EasyMock.expect(cache.putIfAbsent(EasyMock.same(address), EasyMock.same(jvmRoute))).andReturn(null);
-      }
+//      container.addListener(EasyMock.same(this.manager));
+      container.addListener(EasyMock.anyObject());
       
+      EasyMock.expect(container.getAddress()).andReturn(address);
+      EasyMock.expect(this.sessionManager.getJvmRoute()).andReturn(jvmRoute);
+      EasyMock.expect(this.sessionManager.getEngineName()).andReturn("engine");
+      EasyMock.expect(container.<Address, String>getCache("engine")).andReturn(cache);
+      EasyMock.expect(cache.putIfAbsent(EasyMock.same(address), EasyMock.same(jvmRoute))).andReturn(null);
+      
       this.control.replay();
       
       this.manager.start();
@@ -159,30 +142,11 @@
    @Test
    public void stop()
    {
-      this.stop(CacheMode.REPL_ASYNC, false);
-      this.stop(CacheMode.REPL_SYNC, false);
-      this.stop(CacheMode.INVALIDATION_ASYNC, false);
-      this.stop(CacheMode.INVALIDATION_SYNC, false);
-      this.stop(CacheMode.DIST_ASYNC, true);
-      this.stop(CacheMode.DIST_SYNC, true);
-      this.stop(CacheMode.LOCAL, false);
-   }
-   
-   private void stop(CacheMode mode, boolean distributed)
-   {
       EmbeddedCacheManager container = this.control.createMock(EmbeddedCacheManager.class);
       
-      Configuration configuration = new Configuration();
-      configuration.setCacheMode(mode);
-
-      EasyMock.expect(this.sessionCache.getConfiguration()).andReturn(configuration);
+      EasyMock.expect(this.sessionCache.getCacheManager()).andReturn(container);
       
-      if (distributed)
-      {
-         EasyMock.expect(this.sessionCache.getCacheManager()).andReturn(container);
-         
-         container.removeListener(EasyMock.same(this.manager));
-      }
+      container.removeListener(EasyMock.anyObject());
       
       this.sessionCache.removeListener(EasyMock.same(this.manager));
       this.sessionCache.stop();
@@ -630,7 +594,8 @@
    @Test
    public void removed()
    {
-      CacheEntryRemovedEvent event = this.control.createMock(CacheEntryRemovedEvent.class);
+      @SuppressWarnings("unchecked")
+      CacheEntryRemovedEvent<String, Map<Object, Object>> event = this.control.createMock(CacheEntryRemovedEvent.class);
       
       EasyMock.expect(event.isPre()).andReturn(true);
       
@@ -669,7 +634,8 @@
    @Test
    public void modified()
    {
-      CacheEntryModifiedEvent event = this.control.createMock(CacheEntryModifiedEvent.class);
+      @SuppressWarnings("unchecked")
+      CacheEntryModifiedEvent<String, Map<Object, Object>> event = this.control.createMock(CacheEntryModifiedEvent.class);
       
       EasyMock.expect(event.isPre()).andReturn(true);
       
@@ -733,7 +699,8 @@
    @Test
    public void activated()
    {
-      CacheEntryActivatedEvent event = this.control.createMock(CacheEntryActivatedEvent.class);
+      @SuppressWarnings("unchecked")
+      CacheEntryActivatedEvent<String, Map<Object, Object>> event = this.control.createMock(CacheEntryActivatedEvent.class);
       
       EasyMock.expect(event.isPre()).andReturn(true);
       



More information about the jboss-cvs-commits mailing list