remm        2005/05/25 05:45:38

  Modified:    http11/src/java/org/apache/coyote/http11
                        Http11AprProcessor.java InternalAprInputBuffer.java
  Log:
  - If the thread count gets too high, don't do any blocking read to start off
    the request if no data is available, and put the socket in the poller.
  
  Revision  Changes    Path
  1.13      +3 -1      
jakarta-tomcat-connectors/http11/src/java/org/apache/coyote/http11/Http11AprProcessor.java
  
  Index: Http11AprProcessor.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-tomcat-connectors/http11/src/java/org/apache/coyote/http11/Http11AprProcessor.java,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- Http11AprProcessor.java   22 May 2005 17:12:11 -0000      1.12
  +++ Http11AprProcessor.java   25 May 2005 12:45:38 -0000      1.13
  @@ -751,6 +751,8 @@
   
           int keepAliveLeft = maxKeepAliveRequests;
           long soTimeout = endpoint.getSoTimeout();
  +        
  +        int limit = (endpoint.getMaxThreads() * 3) / 4;
   
           boolean keptAlive = false;
           boolean openSocket = false;
  @@ -762,7 +764,7 @@
                   if( !disableUploadTimeout && keptAlive && soTimeout > 0 ) {
                       Socket.timeoutSet(socket, soTimeout * 1000);
                   }
  -                if (!inputBuffer.parseRequestLine()) {
  +                if 
(!inputBuffer.parseRequestLine(endpoint.getCurrentThreadsBusy() > limit)) {
                       // This means that no data is available right now
                       // (long keepalive), so that the processor should be 
recycled
                       // and the method should return true
  
  
  
  1.7       +7 -1      
jakarta-tomcat-connectors/http11/src/java/org/apache/coyote/http11/InternalAprInputBuffer.java
  
  Index: InternalAprInputBuffer.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-tomcat-connectors/http11/src/java/org/apache/coyote/http11/InternalAprInputBuffer.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- InternalAprInputBuffer.java       15 May 2005 15:49:31 -0000      1.6
  +++ InternalAprInputBuffer.java       25 May 2005 12:45:38 -0000      1.7
  @@ -386,7 +386,7 @@
        * @return true if data is properly fed; false if no data is available 
        * immediately and thread should be freed
        */
  -    public boolean parseRequestLine()
  +    public boolean parseRequestLine(boolean useAvailableData)
           throws IOException {
   
           int start = 0;
  @@ -400,6 +400,9 @@
   
               // Read new bytes if needed
               if (pos >= lastValid) {
  +                if (useAvailableData) {
  +                    return false;
  +                }
                   // Do a simple read with a short timeout
                   bbuf.clear();
                   int nRead = Socket.recvbt
  @@ -427,6 +430,9 @@
           start = pos;
   
           if (pos >= lastValid) {
  +            if (useAvailableData) {
  +                return false;
  +            }
               // Do a simple read with a short timeout
               bbuf.clear();
               int nRead = Socket.recvbt
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to