You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by ma...@apache.org on 2009/04/28 12:39:25 UTC

svn commit: r769328 - in /tomcat/tc6.0.x/trunk: STATUS.txt java/org/apache/catalina/valves/CometConnectionManagerValve.java webapps/docs/changelog.xml

Author: markt
Date: Tue Apr 28 10:39:24 2009
New Revision: 769328

URL: http://svn.apache.org/viewvc?rev=769328&view=rev
Log:
Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=46875
Catch possible ISE as a result of session expiration in comet valve

Modified:
    tomcat/tc6.0.x/trunk/STATUS.txt
    tomcat/tc6.0.x/trunk/java/org/apache/catalina/valves/CometConnectionManagerValve.java
    tomcat/tc6.0.x/trunk/webapps/docs/changelog.xml

Modified: tomcat/tc6.0.x/trunk/STATUS.txt
URL: http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/STATUS.txt?rev=769328&r1=769327&r2=769328&view=diff
==============================================================================
--- tomcat/tc6.0.x/trunk/STATUS.txt (original)
+++ tomcat/tc6.0.x/trunk/STATUS.txt Tue Apr 28 10:39:24 2009
@@ -104,12 +104,6 @@
   +1: markt, remm
   -1: 
 
-* Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=46875
-  http://svn.apache.org/viewvc?rev=758407&view=rev
-  Catch possible ISE as a result of session expiration in comet valve
-  +1: markt, rjung, remm
-  -1: 
-
 * Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=46822
   http://svn.apache.org/viewvc?rev=758616&view=rev
   Remove unnecessary object creation in StandardContext

Modified: tomcat/tc6.0.x/trunk/java/org/apache/catalina/valves/CometConnectionManagerValve.java
URL: http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/java/org/apache/catalina/valves/CometConnectionManagerValve.java?rev=769328&r1=769327&r2=769328&view=diff
==============================================================================
--- tomcat/tc6.0.x/trunk/java/org/apache/catalina/valves/CometConnectionManagerValve.java (original)
+++ tomcat/tc6.0.x/trunk/java/org/apache/catalina/valves/CometConnectionManagerValve.java Tue Apr 28 10:39:24 2009
@@ -312,8 +312,14 @@
                 HttpSession session = request.getSession(false);
                 if (session != null) {
                     synchronized (session) {
-                        Request[] reqs = (Request[])
-                            session.getAttribute(cometRequestsAttribute);
+                        Request[] reqs = null;
+                        try {
+                             reqs = (Request[])
+                                session.getAttribute(cometRequestsAttribute);
+                        } catch (IllegalStateException ise) {
+                            // Ignore - session has been invalidated
+                            // Listener will have cleaned up
+                        }
                         if (reqs != null) {
                             boolean found = false;
                             for (int i = 0; !found && (i < reqs.length); i++) {
@@ -329,11 +335,22 @@
                                             newConnectionInfos[pos++] = reqs[i];
                                         }
                                     }
-                                    session.setAttribute(cometRequestsAttribute,
-                                            newConnectionInfos);
+                                    try {
+                                        session.setAttribute(
+                                                cometRequestsAttribute,
+                                                newConnectionInfos);
+                                    } catch (IllegalStateException ise) {
+                                        // Ignore - session has been invalidated
+                                        // Listener will have cleaned up
+                                    }
                                 } else {
-                                    session.removeAttribute(
-                                            cometRequestsAttribute);
+                                    try {
+                                        session.removeAttribute(
+                                                cometRequestsAttribute);
+                                    } catch (IllegalStateException ise) {
+                                        // Ignore - session has been invalidated
+                                        // Listener will have cleaned up
+                                    }
                                 }
                             }
                         }

Modified: tomcat/tc6.0.x/trunk/webapps/docs/changelog.xml
URL: http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/webapps/docs/changelog.xml?rev=769328&r1=769327&r2=769328&view=diff
==============================================================================
--- tomcat/tc6.0.x/trunk/webapps/docs/changelog.xml (original)
+++ tomcat/tc6.0.x/trunk/webapps/docs/changelog.xml Tue Apr 28 10:39:24 2009
@@ -45,6 +45,10 @@
       <fix>
         <bug>46866</bug>: Better initialisation of Random objects. (markt)
       </fix>
+      <fix>
+        <bug>46875</bug>: Catch and handle possible IllegalStateExceptions
+        in CometConnectionManagerValve related to session expiration. (markt)
+      </fix>
     </changelog>
   </subsection>
   <subsection name="Coyote">



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