[jboss-cvs] JBossAS SVN: r107039 - in projects/cluster/ha-server-cache-ispn/trunk/src: test/java/org/jboss/ha/web/tomcat/service/session/distributedcache/impl and 1 other directory.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Thu Jul 22 17:21:23 EDT 2010


Author: pferraro
Date: 2010-07-22 17:21:23 -0400 (Thu, 22 Jul 2010)
New Revision: 107039

Modified:
   projects/cluster/ha-server-cache-ispn/trunk/src/main/java/org/jboss/ha/web/tomcat/service/session/distributedcache/impl/DistributedCacheManagerImpl.java
   projects/cluster/ha-server-cache-ispn/trunk/src/test/java/org/jboss/ha/web/tomcat/service/session/distributedcache/impl/DistributedCacheManagerTest.java
Log:
Check for error conditions in cache listener methods.

Modified: projects/cluster/ha-server-cache-ispn/trunk/src/main/java/org/jboss/ha/web/tomcat/service/session/distributedcache/impl/DistributedCacheManagerImpl.java
===================================================================
--- projects/cluster/ha-server-cache-ispn/trunk/src/main/java/org/jboss/ha/web/tomcat/service/session/distributedcache/impl/DistributedCacheManagerImpl.java	2010-07-22 21:02:04 UTC (rev 107038)
+++ projects/cluster/ha-server-cache-ispn/trunk/src/main/java/org/jboss/ha/web/tomcat/service/session/distributedcache/impl/DistributedCacheManagerImpl.java	2010-07-22 21:21:23 UTC (rev 107039)
@@ -378,6 +378,7 @@
    {
       if (event.isPre() || event.isOriginLocal()) return;
       
+      String sessionId = (String) event.getKey();
       @SuppressWarnings("unchecked")
       AtomicMap<Object, Object> data = (AtomicMap<Object, Object>) event.getValue();
       
@@ -385,12 +386,25 @@
       Long timestamp = AtomicMapEntry.TIMESTAMP.get(data);
       DistributableSessionMetadata metadata = AtomicMapEntry.METADATA.get(data);
       
-      this.manager.sessionChangedInDistributedCache((String) event.getKey(), null, version.intValue(), timestamp.longValue(), metadata);
+      if (timestamp == null)
+      {
+         log.warn(String.format("No timestamp attribute found in node modification event for session %s", mask(sessionId)));
+         return;
+      }
+      
+      boolean updated = this.manager.sessionChangedInDistributedCache(sessionId, null, version.intValue(), timestamp.longValue(), metadata);
+      
+      if (!updated)
+      {
+         log.warn(String.format("Possible concurrency problem: Replicated version id %d is less than or equal to in-memory version for session %s", version, mask(sessionId))); 
+      }
    }
    
    @CacheEntryActivated
    public void activated(CacheEntryActivatedEvent event)
    {
+      if (event.isPre()) return;
+      
       if (this.manager.isPassivationEnabled())
       {
          this.manager.sessionActivated();

Modified: projects/cluster/ha-server-cache-ispn/trunk/src/test/java/org/jboss/ha/web/tomcat/service/session/distributedcache/impl/DistributedCacheManagerTest.java
===================================================================
--- projects/cluster/ha-server-cache-ispn/trunk/src/test/java/org/jboss/ha/web/tomcat/service/session/distributedcache/impl/DistributedCacheManagerTest.java	2010-07-22 21:02:04 UTC (rev 107038)
+++ projects/cluster/ha-server-cache-ispn/trunk/src/test/java/org/jboss/ha/web/tomcat/service/session/distributedcache/impl/DistributedCacheManagerTest.java	2010-07-22 21:21:23 UTC (rev 107039)
@@ -722,14 +722,13 @@
       
       EasyMock.expect(event.isPre()).andReturn(false);
       EasyMock.expect(event.isOriginLocal()).andReturn(false);
+      EasyMock.expect(event.getKey()).andReturn("abc");
       EasyMock.expect(event.getValue()).andReturn(map);
       
       EasyMock.expect(map.get(Byte.valueOf((byte) AtomicMapEntry.VERSION.ordinal()))).andReturn(version);
       EasyMock.expect(map.get(Byte.valueOf((byte) AtomicMapEntry.TIMESTAMP.ordinal()))).andReturn(timestamp);
       EasyMock.expect(map.get(Byte.valueOf((byte) AtomicMapEntry.METADATA.ordinal()))).andReturn(metadata);
       
-      EasyMock.expect(event.getKey()).andReturn("abc");
-      
       EasyMock.expect(this.manager.sessionChangedInDistributedCache("abc", null, version.intValue(), timestamp.longValue(), metadata)).andReturn(false);
       
       EasyMock.replay(this.manager, this.container, this.storage, this.cache, this.invoker, event, map);
@@ -747,6 +746,16 @@
       
       DistributedCacheManagerImpl<OutgoingDistributableSessionData> manager = this.startDistributedCacheManager();
       
+      EasyMock.expect(event.isPre()).andReturn(true);
+      
+      EasyMock.replay(this.manager, this.container, this.storage, this.cache, this.invoker, event);
+      
+      manager.activated(event);
+      
+      EasyMock.verify(this.manager, this.container, this.storage, this.cache, this.invoker, event);
+      EasyMock.reset(this.manager, this.container, this.storage, this.cache, this.invoker, event);
+      
+      
       EasyMock.expect(this.manager.isPassivationEnabled()).andReturn(false);
       
       EasyMock.replay(this.manager, this.container, this.storage, this.cache, this.invoker, event);



More information about the jboss-cvs-commits mailing list