Is it worth being ported to 6.0? It looks so, though have not reviewed
it in detail yet.

2010/12/17  <ma...@apache.org>:
> Author: markt
> Date: Fri Dec 17 00:17:18 2010
> New Revision: 1050249
>
> URL: http://svn.apache.org/viewvc?rev=1050249&view=rev
> Log:
> Fix massive memory leak in NIO connector. Http11NioProcessor objects were not 
> being recycled.
>
> Modified:
>    tomcat/trunk/java/org/apache/coyote/http11/Http11NioProtocol.java
>    tomcat/trunk/webapps/docs/changelog.xml
>
> Modified: tomcat/trunk/java/org/apache/coyote/http11/Http11NioProtocol.java
> URL: 
> http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/Http11NioProtocol.java?rev=1050249&r1=1050248&r2=1050249&view=diff
> ==============================================================================
> --- tomcat/trunk/java/org/apache/coyote/http11/Http11NioProtocol.java 
> (original)
> +++ tomcat/trunk/java/org/apache/coyote/http11/Http11NioProtocol.java Fri Dec 
> 17 00:17:18 2010
> @@ -244,6 +244,10 @@ public class Http11NioProtocol extends A
>                 log.debug("Done iterating through our connections to release 
> a socket channel:"+socket +" released:"+released);
>         }
>
> +        /**
> +         * Use this only if the processor is not available, otherwise use
> +         * {...@link #release(NioChannel, Http11NioProcessor).
> +         */
>         @Override
>         public void release(NioChannel socket) {
>             Http11NioProcessor result = connections.remove(socket);
> @@ -253,6 +257,14 @@ public class Http11NioProtocol extends A
>             }
>         }
>
> +
> +        public void release(NioChannel socket, Http11NioProcessor processor) 
> {
> +            connections.remove(socket);
> +            processor.recycle();
> +            recycledProcessors.offer(processor);
> +        }
> +
> +
>         @Override
>         public SocketState event(NioChannel socket, SocketStatus status) {
>             Http11NioProcessor processor = connections.get(socket);
> @@ -294,7 +306,7 @@ public class Http11NioProtocol extends A
>                         state = processor.asyncPostProcess();
>                     }
>                     if (state == SocketState.OPEN || state == 
> SocketState.CLOSED) {
> -                        release(socket);
> +                        release(socket, processor);
>                         if (state == SocketState.OPEN) {
>                             socket.getPoller().add(socket);
>                         }
> @@ -362,11 +374,11 @@ public class Http11NioProtocol extends A
>                 } else if (state == SocketState.OPEN){
>                     // In keep-alive but between requests. OK to recycle
>                     // processor. Continue to poll for the next request.
> -                    release(socket);
> +                    release(socket, processor);
>                     socket.getPoller().add(socket);
>                 } else {
>                     // Connection closed. OK to recycle the processor.
> -                    release(socket);
> +                    release(socket, processor);
>                 }
>                 return state;
>
>
> Modified: tomcat/trunk/webapps/docs/changelog.xml
> URL: 
> http://svn.apache.org/viewvc/tomcat/trunk/webapps/docs/changelog.xml?rev=1050249&r1=1050248&r2=1050249&view=diff
> ==============================================================================
> --- tomcat/trunk/webapps/docs/changelog.xml (original)
> +++ tomcat/trunk/webapps/docs/changelog.xml Fri Dec 17 00:17:18 2010
> @@ -175,6 +175,10 @@
>         <code>Connector.stop()</code>. This fix also includes further 
> Lifecycle
>         refactoring for Connectors and associated components. (markt)
>       </fix>
> +      <fix>
> +        Remove a huge memory leak in the NIO connector introduced by the fix
> +        for <bug>49884</bug>. (markt)
> +      </fix>
>     </changelog>
>   </subsection>
>   <subsection name="Jasper">
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
> For additional commands, e-mail: dev-h...@tomcat.apache.org
>
>

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

Reply via email to