[jboss-cvs] JBossAS SVN: r107963 - in branches/infinispan-int: tomcat/src/main/java/org/jboss/web/tomcat/service/session and 1 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Thu Sep 2 15:48:20 EDT 2010
Author: pferraro
Date: 2010-09-02 15:48:20 -0400 (Thu, 02 Sep 2010)
New Revision: 107963
Modified:
branches/infinispan-int/testsuite/src/main/org/jboss/test/cluster/web/mocks/MockClusteredManager.java
branches/infinispan-int/testsuite/src/main/org/jboss/test/cluster/web/mocks/MockDistributedCacheManager.java
branches/infinispan-int/testsuite/src/main/org/jboss/test/cluster/web/mocks/MockJBossManager.java
branches/infinispan-int/tomcat/src/main/java/org/jboss/web/tomcat/service/session/AbstractJBossManager.java
branches/infinispan-int/tomcat/src/main/java/org/jboss/web/tomcat/service/session/JBossCacheManager.java
branches/infinispan-int/tomcat/src/main/java/org/jboss/web/tomcat/service/session/JvmRouteValve.java
branches/infinispan-int/tomcat/src/main/java/org/jboss/web/tomcat/service/session/persistent/PersistentStoreDistributedCacheManager.java
branches/infinispan-int/tomcat/src/main/java/org/jboss/web/tomcat/service/session/persistent/PersistentStoreDistributedCacheManagerFactory.java
Log:
JBAS-7853 Migrate sessions that use jvmRoute to nodes where they are local cached
Modified: branches/infinispan-int/testsuite/src/main/org/jboss/test/cluster/web/mocks/MockClusteredManager.java
===================================================================
--- branches/infinispan-int/testsuite/src/main/org/jboss/test/cluster/web/mocks/MockClusteredManager.java 2010-09-02 18:39:37 UTC (rev 107962)
+++ branches/infinispan-int/testsuite/src/main/org/jboss/test/cluster/web/mocks/MockClusteredManager.java 2010-09-02 19:48:20 UTC (rev 107963)
@@ -275,7 +275,10 @@
{
return true;
}
-
-
+ @Override
+ public String locate(String sessionId)
+ {
+ return this.jvmRoute;
+ }
}
Modified: branches/infinispan-int/testsuite/src/main/org/jboss/test/cluster/web/mocks/MockDistributedCacheManager.java
===================================================================
--- branches/infinispan-int/testsuite/src/main/org/jboss/test/cluster/web/mocks/MockDistributedCacheManager.java 2010-09-02 18:39:37 UTC (rev 107962)
+++ branches/infinispan-int/testsuite/src/main/org/jboss/test/cluster/web/mocks/MockDistributedCacheManager.java 2010-09-02 19:48:20 UTC (rev 107963)
@@ -168,14 +168,22 @@
// no-op
}
- public SessionOwnershipSupport getSessionOwnershipSupport() {
+ public SessionOwnershipSupport getSessionOwnershipSupport()
+ {
return null;
}
- public boolean isLocal(String realId) {
+ public boolean isLocal(String realId)
+ {
return false;
}
+ @Override
+ public String locate(String sessionId)
+ {
+ return null;
+ }
+
private static class MockBatchingManager implements BatchingManager
{
private static final MockBatchingManager INSTANCE = new MockBatchingManager();
Modified: branches/infinispan-int/testsuite/src/main/org/jboss/test/cluster/web/mocks/MockJBossManager.java
===================================================================
--- branches/infinispan-int/testsuite/src/main/org/jboss/test/cluster/web/mocks/MockJBossManager.java 2010-09-02 18:39:37 UTC (rev 107962)
+++ branches/infinispan-int/testsuite/src/main/org/jboss/test/cluster/web/mocks/MockJBossManager.java 2010-09-02 19:48:20 UTC (rev 107963)
@@ -111,4 +111,9 @@
// no-op
}
+ @Override
+ public String locate(String sessionId)
+ {
+ return this.getJvmRoute();
+ }
}
Modified: branches/infinispan-int/tomcat/src/main/java/org/jboss/web/tomcat/service/session/AbstractJBossManager.java
===================================================================
--- branches/infinispan-int/tomcat/src/main/java/org/jboss/web/tomcat/service/session/AbstractJBossManager.java 2010-09-02 18:39:37 UTC (rev 107962)
+++ branches/infinispan-int/tomcat/src/main/java/org/jboss/web/tomcat/service/session/AbstractJBossManager.java 2010-09-02 19:48:20 UTC (rev 107963)
@@ -53,6 +53,13 @@
public String getJvmRoute();
/**
+ * Locate the most appropriate jvm route for the specified sessionId
+ * @param sessionId a session identifier
+ * @return a jvm route
+ */
+ public String locate(String sessionId);
+
+ /**
* Sets a new cookie for the given session id and response
*
* @param sessionId The session id
Modified: branches/infinispan-int/tomcat/src/main/java/org/jboss/web/tomcat/service/session/JBossCacheManager.java
===================================================================
--- branches/infinispan-int/tomcat/src/main/java/org/jboss/web/tomcat/service/session/JBossCacheManager.java 2010-09-02 18:39:37 UTC (rev 107962)
+++ branches/infinispan-int/tomcat/src/main/java/org/jboss/web/tomcat/service/session/JBossCacheManager.java 2010-09-02 19:48:20 UTC (rev 107963)
@@ -2810,6 +2810,12 @@
}
}
+ @Override
+ public String locate(String sessionId)
+ {
+ return this.proxy_.locate(sessionId);
+ }
+
/**
* {@inheritDoc}
* @see java.lang.Object#hashCode()
Modified: branches/infinispan-int/tomcat/src/main/java/org/jboss/web/tomcat/service/session/JvmRouteValve.java
===================================================================
--- branches/infinispan-int/tomcat/src/main/java/org/jboss/web/tomcat/service/session/JvmRouteValve.java 2010-09-02 18:39:37 UTC (rev 107962)
+++ branches/infinispan-int/tomcat/src/main/java/org/jboss/web/tomcat/service/session/JvmRouteValve.java 2010-09-02 19:48:20 UTC (rev 107963)
@@ -152,11 +152,12 @@
}
String base = sessionId.substring(0, index);
- newId = base + "." + jvmRoute;
+
+ newId = base + "." + this.manager_.locate(base);
}
// Fix the session's id
- resetSessionId(sessionId, newId);
+ resetSessionId(sessionId, newId);
}
// Now we know the session object has a correct id
@@ -182,10 +183,10 @@
if (log_.isTraceEnabled())
{
log_.trace("handleJvmRoute(): We have detected a failover with different jvmRoute." +
- " received one: " + requestedJvmRoute + " new one: " + jvmRoute + ". Will resent the session id.");
+ " received one: " + requestedJvmRoute + " new one: " + jvmRoute + ". Will reset the session id.");
}
String base = index > -1 ? sessionId.substring(0, index) : sessionId;
- newId = new StringBuilder(base).append('.').append(jvmRoute).toString();
+ newId = new StringBuilder(base).append('.').append(this.manager_.locate(base)).toString();
}
}
Modified: branches/infinispan-int/tomcat/src/main/java/org/jboss/web/tomcat/service/session/persistent/PersistentStoreDistributedCacheManager.java
===================================================================
--- branches/infinispan-int/tomcat/src/main/java/org/jboss/web/tomcat/service/session/persistent/PersistentStoreDistributedCacheManager.java 2010-09-02 18:39:37 UTC (rev 107962)
+++ branches/infinispan-int/tomcat/src/main/java/org/jboss/web/tomcat/service/session/persistent/PersistentStoreDistributedCacheManager.java 2010-09-02 19:48:20 UTC (rev 107963)
@@ -28,6 +28,7 @@
import org.jboss.web.tomcat.service.session.distributedcache.spi.BatchingManager;
import org.jboss.web.tomcat.service.session.distributedcache.spi.DistributableSessionMetadata;
import org.jboss.web.tomcat.service.session.distributedcache.spi.IncomingDistributableSessionData;
+import org.jboss.web.tomcat.service.session.distributedcache.spi.LocalDistributableSessionManager;
import org.jboss.web.tomcat.service.session.distributedcache.spi.OutgoingSessionGranularitySessionData;
import org.jboss.web.tomcat.service.session.distributedcache.spi.SessionOwnershipSupport;
@@ -43,17 +44,19 @@
private static final BatchingManager BATCH_MGR = new NoOpBatchingManager();
private final PersistentStore store;
+ private final LocalDistributableSessionManager manager;
/**
*
*/
- public PersistentStoreDistributedCacheManager(PersistentStore store)
+ public PersistentStoreDistributedCacheManager(LocalDistributableSessionManager manager, PersistentStore store)
{
if (store == null)
{
throw new IllegalArgumentException("Null store");
}
this.store = store;
+ this.manager = manager;
}
public BatchingManager getBatchingManager()
@@ -168,7 +171,7 @@
@Override
public String locate(String sessionId)
{
- return null;
+ return this.manager.getJvmRoute();
}
public static class NoOpBatchingManager implements BatchingManager
Modified: branches/infinispan-int/tomcat/src/main/java/org/jboss/web/tomcat/service/session/persistent/PersistentStoreDistributedCacheManagerFactory.java
===================================================================
--- branches/infinispan-int/tomcat/src/main/java/org/jboss/web/tomcat/service/session/persistent/PersistentStoreDistributedCacheManagerFactory.java 2010-09-02 18:39:37 UTC (rev 107962)
+++ branches/infinispan-int/tomcat/src/main/java/org/jboss/web/tomcat/service/session/persistent/PersistentStoreDistributedCacheManagerFactory.java 2010-09-02 19:48:20 UTC (rev 107963)
@@ -33,10 +33,8 @@
}
@SuppressWarnings("unchecked")
- public <T extends OutgoingDistributableSessionData> DistributedCacheManager<T> getDistributedCacheManager(
- LocalDistributableSessionManager localManager) throws ClusteringNotSupportedException
+ public <T extends OutgoingDistributableSessionData> DistributedCacheManager<T> getDistributedCacheManager(LocalDistributableSessionManager manager) throws ClusteringNotSupportedException
{
- return (DistributedCacheManager<T>) new PersistentStoreDistributedCacheManager(store);
+ return (DistributedCacheManager<T>) new PersistentStoreDistributedCacheManager(manager, store);
}
-
}
More information about the jboss-cvs-commits
mailing list