On 27/05/2015 18:45, [email protected] wrote: > Author: remm > Date: Wed May 27 17:45:31 2015 > New Revision: 1682087 > > URL: http://svn.apache.org/r1682087 > Log: > Avoid IO peeking with NIO2 to read the request line (introduced in r1681742), > as the processor and its buffer is no longer associated and may not be the > one processing the request.
Are you sure this is necessary? If a non-blocking read is issued the read is into the read buffer in the socket wrapper not directly into the Http11InputBuffer. Mark > > Modified: > tomcat/trunk/java/org/apache/coyote/http11/Http11InputBuffer.java > tomcat/trunk/java/org/apache/tomcat/util/net/Nio2Endpoint.java > tomcat/trunk/java/org/apache/tomcat/util/net/SocketWrapperBase.java > > Modified: tomcat/trunk/java/org/apache/coyote/http11/Http11InputBuffer.java > URL: > http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/Http11InputBuffer.java?rev=1682087&r1=1682086&r2=1682087&view=diff > ============================================================================== > --- tomcat/trunk/java/org/apache/coyote/http11/Http11InputBuffer.java > (original) > +++ tomcat/trunk/java/org/apache/coyote/http11/Http11InputBuffer.java Wed May > 27 17:45:31 2015 > @@ -398,6 +398,9 @@ public class Http11InputBuffer implement > // Haven't read any request data yet so use the > keep-alive > // timeout. > > wrapper.setReadTimeout(wrapper.getEndpoint().getKeepAliveTimeout()); > + if (!wrapper.isNonBlocking()) { > + return false; > + } > } > if (!fill(false)) { > // A read is pending, so no longer in initial state > > Modified: tomcat/trunk/java/org/apache/tomcat/util/net/Nio2Endpoint.java > URL: > http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/net/Nio2Endpoint.java?rev=1682087&r1=1682086&r2=1682087&view=diff > ============================================================================== > --- tomcat/trunk/java/org/apache/tomcat/util/net/Nio2Endpoint.java (original) > +++ tomcat/trunk/java/org/apache/tomcat/util/net/Nio2Endpoint.java Wed May 27 > 17:45:31 2015 > @@ -1316,6 +1316,10 @@ public class Nio2Endpoint extends Abstra > } > } > > + @Override > + public boolean isNonBlocking() { > + return false; > + } > > /* > * This should only be called from a thread that currently holds a > lock > > Modified: tomcat/trunk/java/org/apache/tomcat/util/net/SocketWrapperBase.java > URL: > http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/net/SocketWrapperBase.java?rev=1682087&r1=1682086&r2=1682087&view=diff > ============================================================================== > --- tomcat/trunk/java/org/apache/tomcat/util/net/SocketWrapperBase.java > (original) > +++ tomcat/trunk/java/org/apache/tomcat/util/net/SocketWrapperBase.java Wed > May 27 17:45:31 2015 > @@ -266,6 +266,9 @@ public abstract class SocketWrapperBase< > public SocketBufferHandler getSocketBufferHandler() { return > socketBufferHandler; } > public abstract boolean isReadPending(); > public abstract boolean isWritePending(); > + public boolean isNonBlocking() { > + return true; > + } > > public boolean hasDataToWrite() { > return !socketBufferHandler.isWriteBufferEmpty() || > bufferedWrites.size() > 0; > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [email protected] > For additional commands, e-mail: [email protected] > --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
