Author: remm Date: Fri Mar 21 19:50:51 2014 New Revision: 1580032 URL: http://svn.apache.org/r1580032 Log: Improve trigger of the onWritePossible notification.
Modified: tomcat/trunk/java/org/apache/coyote/http11/InternalNio2OutputBuffer.java tomcat/trunk/webapps/docs/changelog.xml Modified: tomcat/trunk/java/org/apache/coyote/http11/InternalNio2OutputBuffer.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/InternalNio2OutputBuffer.java?rev=1580032&r1=1580031&r2=1580032&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/coyote/http11/InternalNio2OutputBuffer.java (original) +++ tomcat/trunk/java/org/apache/coyote/http11/InternalNio2OutputBuffer.java Fri Mar 21 19:50:51 2014 @@ -454,15 +454,24 @@ public class InternalNio2OutputBuffer ex @Override protected boolean hasMoreDataToFlush() { - return (flipped && socket.getSocket().getBufHandler().getWriteBuffer().remaining() > 0) || - (!flipped && socket.getSocket().getBufHandler().getWriteBuffer().position() > 0) || - (writePending.availablePermits() == 0) || bufferedWrites.size() > 0 || e != null; + synchronized (completionHandler) { + return (flipped && socket.getSocket().getBufHandler().getWriteBuffer().remaining() > 0) || + (!flipped && socket.getSocket().getBufHandler().getWriteBuffer().position() > 0) || + bufferedWrites.size() > 0 || e != null; + } } @Override protected void registerWriteInterest() throws IOException { - interest = true; + synchronized (completionHandler) { + if (writePending.availablePermits() == 0) { + interest = true; + } else { + // If no write is pending, notify + endpoint.processSocket(socket, SocketStatus.OPEN_WRITE, true); + } + } } Modified: tomcat/trunk/webapps/docs/changelog.xml URL: http://svn.apache.org/viewvc/tomcat/trunk/webapps/docs/changelog.xml?rev=1580032&r1=1580031&r2=1580032&view=diff ============================================================================== --- tomcat/trunk/webapps/docs/changelog.xml (original) +++ tomcat/trunk/webapps/docs/changelog.xml Fri Mar 21 19:50:51 2014 @@ -51,6 +51,13 @@ Fix possibly incomplete final flush with NIO2 when using non blocking mode. (remm) </fix> + <fix> + Cleanup NIO2 endpoint shutdown. (remm) + </fix> + <fix> + Fix rare race condition notifying onWritePossible in the NIO2 + HTTP/1.1 connector. (remm) + </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