[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