You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by rj...@apache.org on 2014/11/26 19:17:00 UTC

svn commit: r1641876 - in /tomcat/sandbox/tomcat-oacc/trunk: docs/changelog.xml src/share/org/apache/catalina/cluster/session/DeltaManager.java src/share/org/apache/catalina/cluster/session/SimpleTcpReplicationManager.java

Author: rjung
Date: Wed Nov 26 18:16:59 2014
New Revision: 1641876

URL: http://svn.apache.org/r1641876
Log:
Note: technically, the actual patch differs from proposal (r1346675):
in Tomcat 7 the changes are in ManagerBase,
in Tomcat 6 the same code belongs to specific manager implementations.

Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=53230
Change ManagerBase to throw TooManyActiveSessionsException instead of
IllegalStateException to allow for custom error page.

Backport of r1353128 from TC 6.

Modified:
    tomcat/sandbox/tomcat-oacc/trunk/docs/changelog.xml
    tomcat/sandbox/tomcat-oacc/trunk/src/share/org/apache/catalina/cluster/session/DeltaManager.java
    tomcat/sandbox/tomcat-oacc/trunk/src/share/org/apache/catalina/cluster/session/SimpleTcpReplicationManager.java

Modified: tomcat/sandbox/tomcat-oacc/trunk/docs/changelog.xml
URL: http://svn.apache.org/viewvc/tomcat/sandbox/tomcat-oacc/trunk/docs/changelog.xml?rev=1641876&r1=1641875&r2=1641876&view=diff
==============================================================================
--- tomcat/sandbox/tomcat-oacc/trunk/docs/changelog.xml (original)
+++ tomcat/sandbox/tomcat-oacc/trunk/docs/changelog.xml Wed Nov 26 18:16:59 2014
@@ -31,6 +31,12 @@
 <body>
 <section name="Tomcat OACC 0.1 (rjung)">
   <subsection name="Cluster">
+      <update>
+        <bug>53230</bug>: Change session managers to throw
+        TooManyActiveSessionsException instead of IllegalStateException
+        when the maximum number of sessions has been exceeded and a new
+        session will not be created. (schultz/kkolinko)
+      </update>
       <fix>
         Replicate principal in ClusterSingleSignOn. (kfujino)
       </fix>

Modified: tomcat/sandbox/tomcat-oacc/trunk/src/share/org/apache/catalina/cluster/session/DeltaManager.java
URL: http://svn.apache.org/viewvc/tomcat/sandbox/tomcat-oacc/trunk/src/share/org/apache/catalina/cluster/session/DeltaManager.java?rev=1641876&r1=1641875&r2=1641876&view=diff
==============================================================================
--- tomcat/sandbox/tomcat-oacc/trunk/src/share/org/apache/catalina/cluster/session/DeltaManager.java (original)
+++ tomcat/sandbox/tomcat-oacc/trunk/src/share/org/apache/catalina/cluster/session/DeltaManager.java Wed Nov 26 18:16:59 2014
@@ -45,6 +45,7 @@ import org.apache.catalina.cluster.Clust
 import org.apache.catalina.cluster.Member;
 import org.apache.catalina.cluster.tcp.ReplicationValve;
 import org.apache.catalina.session.ManagerBase;
+import org.apache.catalina.session.TooManyActiveSessionsException;
 import org.apache.catalina.util.CustomObjectInputStream;
 import org.apache.catalina.util.LifecycleSupport;
 import org.apache.catalina.util.StringManager;
@@ -632,7 +633,9 @@ public class DeltaManager extends Cluste
     public Session createSession(String sessionId, boolean distribute) {
         if ((maxActiveSessions >= 0) && (sessions.size() >= maxActiveSessions)) {
             rejectedSessions++;
-            throw new IllegalStateException(sm.getString("deltaManager.createSession.ise"));
+            throw new TooManyActiveSessionsException(
+                    sm.getString("deltaManager.createSession.ise"),
+                    maxActiveSessions);
         }
         DeltaSession session = (DeltaSession) super.createSession(sessionId) ;
         session.setExpireTolerance(this.expireTolerance);

Modified: tomcat/sandbox/tomcat-oacc/trunk/src/share/org/apache/catalina/cluster/session/SimpleTcpReplicationManager.java
URL: http://svn.apache.org/viewvc/tomcat/sandbox/tomcat-oacc/trunk/src/share/org/apache/catalina/cluster/session/SimpleTcpReplicationManager.java?rev=1641876&r1=1641875&r2=1641876&view=diff
==============================================================================
--- tomcat/sandbox/tomcat-oacc/trunk/src/share/org/apache/catalina/cluster/session/SimpleTcpReplicationManager.java (original)
+++ tomcat/sandbox/tomcat-oacc/trunk/src/share/org/apache/catalina/cluster/session/SimpleTcpReplicationManager.java Wed Nov 26 18:16:59 2014
@@ -28,6 +28,7 @@ import org.apache.catalina.cluster.Clust
 import org.apache.catalina.cluster.Member;
 import org.apache.catalina.realm.GenericPrincipal;
 import org.apache.catalina.session.StandardManager;
+import org.apache.catalina.session.TooManyActiveSessionsException;
 
 /**
  * Title:        Tomcat Session Replication for Tomcat 4.0 <BR>
@@ -204,9 +205,11 @@ implements ClusterManager
 
         //inherited from the basic manager
         if ((getMaxActiveSessions() >= 0) &&
-           (sessions.size() >= getMaxActiveSessions()))
-            throw new IllegalStateException(sm.getString("standardManager.createSession.ise"));
-
+           (sessions.size() >= getMaxActiveSessions())) {
+            throw new TooManyActiveSessionsException(
+                    sm.getString("standardManager.createSession.ise"),
+                    getMaxActiveSessions());
+        }
 
         Session session = new ReplicatedSession(this);
 



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org