[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