[jboss-cvs] JBossAS SVN: r111475 - branches/JBPAPP_4_2_0_GA_CP/tomcat/src/main/org/jboss/web/tomcat/service/sso.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Fri May 27 17:06:42 EDT 2011


Author: dereed
Date: 2011-05-27 17:06:42 -0400 (Fri, 27 May 2011)
New Revision: 111475

Modified:
   branches/JBPAPP_4_2_0_GA_CP/tomcat/src/main/org/jboss/web/tomcat/service/sso/TreeCacheSSOClusterManager.java
Log:
[JBPAPP-5920] Fix UpgradeException when multiple requests with the same SSO ID create a session simultaneously


Modified: branches/JBPAPP_4_2_0_GA_CP/tomcat/src/main/org/jboss/web/tomcat/service/sso/TreeCacheSSOClusterManager.java
===================================================================
--- branches/JBPAPP_4_2_0_GA_CP/tomcat/src/main/org/jboss/web/tomcat/service/sso/TreeCacheSSOClusterManager.java	2011-05-27 19:31:46 UTC (rev 111474)
+++ branches/JBPAPP_4_2_0_GA_CP/tomcat/src/main/org/jboss/web/tomcat/service/sso/TreeCacheSSOClusterManager.java	2011-05-27 21:06:42 UTC (rev 111475)
@@ -373,6 +373,9 @@
          if(doTx)
             tm.begin();
 
+         // JBAS-8866 - force write lock to avoid UpgradeException for concurrent callers
+         putInTreeCache ( fqn, "LOCK", null, true );
+
          Set sessions = getSessionSet(fqn, true, false);
          sessions.add(new SessionAddress(getSessionAddressId(session), localAddress));
 
@@ -585,6 +588,9 @@
          if(doTx)
             tm.begin();
 
+         // JBAS-8866 - force write lock to avoid UpgradeException for concurrent callers
+         putInTreeCache ( fqn, "LOCK", null, true );
+
          Set sessions = getSessionSet(fqn, false, false);
          if (sessions != null)
          {
@@ -1152,7 +1158,12 @@
 
    private void putInTreeCache(Fqn fqn, Object data, boolean localOnly) throws Exception
    {
-      Object[] args = new Object[]{fqn, KEY, data, localOnly ? LOCAL_OPTION : GRAVITATE_OPTION};
+      putInTreeCache ( fqn, KEY, data, localOnly );
+   }
+
+   private void putInTreeCache(Fqn fqn, Object key, Object data, boolean localOnly) throws Exception
+   {
+      Object[] args = new Object[]{fqn, key, data, localOnly ? LOCAL_OPTION : GRAVITATE_OPTION};
       server.invoke(getCacheObjectName(), "put", args, PUT_SIGNATURE);
    }
 



More information about the jboss-cvs-commits mailing list