Phil Steitz | 1 Jan 2003 02:01

Re: cvs commit: jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/session ManagerBase.java

billbarker <at> apache.org wrote:
> billbarker    2002/12/30 19:45:48
> 
>   Modified:    catalina/src/share/org/apache/catalina/session
>                         ManagerBase.java
>   Log:
>   Make certain that the jvmRoute is attached to the session before comparing for uniqueness.
>   
>   Submitted by: Glenn Olander glenn <at> greenoak.com
>   
>   Revision  Changes    Path
>   1.16      +15 -9     jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/session/ManagerBase.java
>   
>   Index: ManagerBase.java
>   ===================================================================
>   RCS file: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/session/ManagerBase.java,v
>   retrieving revision 1.15
>   retrieving revision 1.16
>   diff -u -r1.15 -r1.16
>   --- ManagerBase.java	30 Dec 2002 02:36:26 -0000	1.15
>   +++ ManagerBase.java	31 Dec 2002 03:45:48 -0000	1.16
>    <at>  <at>  -580,17 +580,23  <at>  <at> 
>            session.setMaxInactiveInterval(this.maxInactiveInterval);
>            String sessionId = generateSessionId();
>    
>   -        synchronized (sessions) {
>   -            while (sessions.get(sessionId) != null)        // Guarantee uniqueness
>   -                sessionId = generateSessionId();
>   -        }
>   -
(Continue reading)

Glenn Olander | 1 Jan 2003 02:17

Re: cvs commit: jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/session ManagerBase.java

fyi, this still isn't correct.  If you can simply copy/paste the code
from these messages I'm sending, that should ensure the correct code 
gets checked in. Here is
what it should look like:

        String sessionId = generateSessionId();
        String jvmRoute = getJvmRoute();
        //  <at> todo Move appending of jvmRoute generateSessionId()???
        if (jvmRoute != null) {
            sessionId += '.' + jvmRoute;
        }  
        synchronized (sessions) {
            while (sessions.get(sessionId) != null){        // Guarantee 
uniqueness
                log("Found duplicate session id, getting a new one.");
                sessionId = generateSessionId();
                if (jvmRoute != null) {
                    sessionId += '.' + jvmRoute;
                }
            }
            session.setId(sessionId);
        }
        return (session);
bugzilla | 1 Jan 2003 03:10
Picon
Favicon

DO NOT REPLY [Bug 15746] New: - Possible concurrency problem in StandardSession.recycle()

DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG 
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
<http://nagoya.apache.org/bugzilla/show_bug.cgi?id=15746>.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND 
INSERTED IN THE BUG DATABASE.

http://nagoya.apache.org/bugzilla/show_bug.cgi?id=15746

Possible concurrency problem in StandardSession.recycle()

           Summary: Possible concurrency problem in
                    StandardSession.recycle()
           Product: Tomcat 4
           Version: 4.1.19
          Platform: Other
        OS/Version: Other
            Status: NEW
          Severity: Normal
          Priority: Other
         Component: Catalina
        AssignedTo: tomcat-dev <at> jakarta.apache.org
        ReportedBy: phil <at> steitz.com

A session being recycled could have attributes added by other threads *after*
the attributes are cleared, since this method is not synchronized.

This exposure can be eliminated by moving the isValid = false to the beginning
of the method.
bugzilla | 1 Jan 2003 03:12
Picon
Favicon

DO NOT REPLY [Bug 15746] - Possible concurrency problem in StandardSession.recycle()

DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG 
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
<http://nagoya.apache.org/bugzilla/show_bug.cgi?id=15746>.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND 
INSERTED IN THE BUG DATABASE.

http://nagoya.apache.org/bugzilla/show_bug.cgi?id=15746

Possible concurrency problem in StandardSession.recycle()

------- Additional Comments From phil <at> steitz.com  2003-01-01 02:12 -------
Created an attachment (id=4311)
Patch to move isValid = false to start of StandardSession.recycle()
billbarker | 1 Jan 2003 07:24
Picon
Favicon

cvs commit: jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/session ManagerBase.java

billbarker    2002/12/31 22:24:26

  Modified:    catalina/src/share/org/apache/catalina/session
                        ManagerBase.java
  Log:
  Set the sessionId property only once.

  It seems that this is an issue for the community, so let's get it right.

  Submitted by: Phil Steitz phil <at> steitz.com

  Revision  Changes    Path
  1.17      +4 -6      jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/session/ManagerBase.java

  Index: ManagerBase.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/session/ManagerBase.java,v
  retrieving revision 1.16
  retrieving revision 1.17
  diff -u -r1.16 -r1.17
  --- ManagerBase.java	31 Dec 2002 03:45:48 -0000	1.16
  +++ ManagerBase.java	1 Jan 2003 06:24:26 -0000	1.17
   <at>  <at>  -584,7 +584,6  <at>  <at> 
           //  <at> todo Move appending of jvmRoute generateSessionId()???
           if (jvmRoute != null) {
               sessionId += '.' + jvmRoute;
  -            session.setId(sessionId);
           }
           synchronized (sessions) {
               while (sessions.get(sessionId) != null){ // Guarantee uniqueness
(Continue reading)

billbarker | 1 Jan 2003 07:26
Picon
Favicon

cvs commit: jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/session ManagerBase.java

billbarker    2002/12/31 22:26:32

  Modified:    catalina/src/share/org/apache/catalina/session
                        ManagerBase.java
  Log:
  Port from Tomcat 4.

  Revision  Changes    Path
  1.10      +4 -6      jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/session/ManagerBase.java

  Index: ManagerBase.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/session/ManagerBase.java,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- ManagerBase.java	31 Dec 2002 03:48:08 -0000	1.9
  +++ ManagerBase.java	1 Jan 2003 06:26:32 -0000	1.10
   <at>  <at>  -637,7 +637,6  <at>  <at> 
           //  <at> todo Move appending of jvmRoute generateSessionId()???
           if (jvmRoute != null) {
               sessionId += '.' + jvmRoute;
  -            session.setId(sessionId);
           }
           synchronized (sessions) {
               while (sessions.get(sessionId) != null){ // Guarantee uniqueness
   <at>  <at>  -645,7 +644,6  <at>  <at> 
                   //  <at> todo Move appending of jvmRoute generateSessionId()???
                   if (jvmRoute != null) {
                       sessionId += '.' + jvmRoute;
(Continue reading)

remm | 1 Jan 2003 13:25
Picon
Favicon

cvs commit: jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler TagPluginManager.java

remm        2003/01/01 04:25:58

  Modified:    jasper2/src/share/org/apache/jasper/compiler
                        TagPluginManager.java
  Log:
  - To support nested tags, we should also visit child nodes.

  Revision  Changes    Path
  1.9       +13 -7     jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/TagPluginManager.java

  Index: TagPluginManager.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/TagPluginManager.java,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- TagPluginManager.java	6 Dec 2002 23:19:58 -0000	1.8
  +++ TagPluginManager.java	1 Jan 2003 12:25:58 -0000	1.9
   <at>  <at>  -97,11 +97,17  <at>  <at> 
   	    return;
   	}

  -	page.visit(new Node.Visitor() {
  -            public void visit(Node.CustomTag n) {
  -		invokePlugin(n);
  +        page.visit(new Node.Visitor() {
  +            public void visit(Node.CustomTag n)
  +                throws JasperException {
  +                invokePlugin(n);
  +                Node.Nodes body = n.getBody();
(Continue reading)

remm | 1 Jan 2003 14:55
Picon
Favicon

cvs commit: jakarta-tomcat-connectors/util/java/org/apache/tomcat/util/net PoolTcpEndpoint.java

remm        2003/01/01 05:55:22

  Modified:    util/java/org/apache/tomcat/util/net PoolTcpEndpoint.java
  Log:
  - Don't check for null on the connection (it should never be null, and should be
    caught by the throwable and logged if it happens).
  - Fix a problem when using SSL: when an exception occurs during the handshake,
    if continue is used, the thread will immediately start to listen on the socket,
    for no good reason. I found that patch on tomcat-user, alledgedly submitted
    by Xiaojian Wang (I couldn't find the original message), and reposted
    by Carl Zetterberg.

  Revision  Changes    Path
  1.11      +5 -7      jakarta-tomcat-connectors/util/java/org/apache/tomcat/util/net/PoolTcpEndpoint.java

  Index: PoolTcpEndpoint.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-connectors/util/java/org/apache/tomcat/util/net/PoolTcpEndpoint.java,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- PoolTcpEndpoint.java	19 Dec 2002 15:55:45 -0000	1.10
  +++ PoolTcpEndpoint.java	1 Jan 2003 13:55:22 -0000	1.11
   <at>  <at>  -519,12 +519,12  <at>  <at> 
                           endpoint.getServerSocketFactory().handshake(s);
    		    }
                   } catch (Throwable t) {
  -                    endpoint.log.info("Handshake failed", t);
  +                    endpoint.log.debug("Handshake failed", t);
                       // Try to close the socket
(Continue reading)

remm | 1 Jan 2003 16:21
Picon
Favicon

cvs commit: jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper EmbededServletOptions.java

remm        2003/01/01 07:21:01

  Modified:    jasper2/src/share/org/apache/jasper
                        EmbededServletOptions.java
  Log:
  - Due to continued problems with javac, I think fork should default to true.

  Revision  Changes    Path
  1.17      +4 -4      jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/EmbededServletOptions.java

  Index: EmbededServletOptions.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/EmbededServletOptions.java,v
  retrieving revision 1.16
  retrieving revision 1.17
  diff -u -r1.16 -r1.17
  --- EmbededServletOptions.java	31 Dec 2002 14:01:17 -0000	1.16
  +++ EmbededServletOptions.java	1 Jan 2003 15:21:01 -0000	1.17
   <at>  <at>  -93,7 +93,7  <at>  <at> 
       /**
        * Should Ant fork its java compiles of JSP pages.
        */
  -    public boolean fork = false;
  +    public boolean fork = true;

       /**
        * Do you want to keep the generated Java files around?
remm | 1 Jan 2003 16:21
Picon
Favicon

cvs commit: jakarta-tomcat-catalina/catalina/src/conf web.xml

remm        2003/01/01 07:21:40

  Modified:    catalina/src/conf web.xml
  Log:
  - Due to continued problems with javac, I think fork should default to true.

  Revision  Changes    Path
  1.11      +1 -1      jakarta-tomcat-catalina/catalina/src/conf/web.xml

  Index: web.xml
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-catalina/catalina/src/conf/web.xml,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- web.xml	31 Dec 2002 14:12:31 -0000	1.10
  +++ web.xml	1 Jan 2003 15:21:40 -0000	1.11
   <at>  <at>  -113,7 +113,7  <at>  <at> 
     <!--                                                                      -->
     <!--   fork                Tell Ant to fork compiles of JSP pages so that -->
     <!--                       a separate JVM is used for JSP page compiles   -->
  -  <!--                       from the one Tomcat is running in. [false]     -->
  +  <!--                       from the one Tomcat is running in. [true]      -->
     <!--                                                                      -->
     <!--   ieClassId           The class-id value to be sent to Internet      -->
     <!--                       Explorer when using <jsp:plugin> tags.         -->

Gmane