This is an automated email from the ASF dual-hosted git repository.

markt pushed a commit to branch 8.5.x
in repository https://gitbox.apache.org/repos/asf/tomcat.git

commit e1dd4ed5e0580ded435cbffaed455d92bf2ee1dc
Author: Mark Thomas <ma...@apache.org>
AuthorDate: Mon Jan 10 17:22:28 2022 +0000

    Refactor Connector/Endpoint pause only stop new connections/requests
---
 java/org/apache/coyote/AbstractProtocol.java      |  9 ---------
 java/org/apache/tomcat/util/net/AprEndpoint.java  | 10 +---------
 java/org/apache/tomcat/util/net/Nio2Endpoint.java |  6 +++---
 java/org/apache/tomcat/util/net/NioEndpoint.java  |  6 +++---
 webapps/docs/changelog.xml                        |  5 +++++
 5 files changed, 12 insertions(+), 24 deletions(-)

diff --git a/java/org/apache/coyote/AbstractProtocol.java 
b/java/org/apache/coyote/AbstractProtocol.java
index 4e7cfca..d894d47 100644
--- a/java/org/apache/coyote/AbstractProtocol.java
+++ b/java/org/apache/coyote/AbstractProtocol.java
@@ -1214,15 +1214,6 @@ public abstract class AbstractProtocol<S> implements 
ProtocolHandler,
                 for (Processor processor : waitingProcessors) {
                    processor.timeoutAsync(now);
                 }
-
-                // Loop if endpoint is paused
-                while (endpoint.isPaused() && asyncTimeoutRunning) {
-                    try {
-                        Thread.sleep(1000);
-                    } catch (InterruptedException e) {
-                        // Ignore
-                    }
-                }
             }
         }
 
diff --git a/java/org/apache/tomcat/util/net/AprEndpoint.java 
b/java/org/apache/tomcat/util/net/AprEndpoint.java
index 676f0b2..001f8f6 100644
--- a/java/org/apache/tomcat/util/net/AprEndpoint.java
+++ b/java/org/apache/tomcat/util/net/AprEndpoint.java
@@ -1964,14 +1964,6 @@ public class AprEndpoint extends AbstractEndpoint<Long> 
implements SNICallBack {
             // Loop until we receive a shutdown command
             while (sendfileRunning) {
 
-                // Loop if endpoint is paused
-                while (sendfileRunning && paused) {
-                    try {
-                        Thread.sleep(pollTime / 1000);
-                    } catch (InterruptedException e) {
-                        // Ignore
-                    }
-                }
                 // Loop if poller is empty
                 while (sendfileRunning && sendfileCount < 1 && addS.size() < 
1) {
                     // Reset maintain time.
@@ -2211,7 +2203,7 @@ public class AprEndpoint extends AbstractEndpoint<Long> 
implements SNICallBack {
                 socketWrapper = null;
                 event = null;
                 //return to cache
-                if (running && !paused) {
+                if (running) {
                     processorCache.push(this);
                 }
             }
diff --git a/java/org/apache/tomcat/util/net/Nio2Endpoint.java 
b/java/org/apache/tomcat/util/net/Nio2Endpoint.java
index 0093a45..8d6e3c6 100644
--- a/java/org/apache/tomcat/util/net/Nio2Endpoint.java
+++ b/java/org/apache/tomcat/util/net/Nio2Endpoint.java
@@ -1643,7 +1643,7 @@ public class Nio2Endpoint extends 
AbstractJsseEndpoint<Nio2Channel> {
                     if (state == SocketState.CLOSED) {
                         // Close socket and pool
                         socketWrapper.close();
-                        if (running && !paused) {
+                        if (running) {
                             if (!nioChannels.push(socketWrapper.getSocket())) {
                                 socketWrapper.getSocket().free();
                             }
@@ -1654,7 +1654,7 @@ public class Nio2Endpoint extends 
AbstractJsseEndpoint<Nio2Channel> {
                 } else if (handshake == -1 ) {
                     getHandler().process(socketWrapper, 
SocketEvent.CONNECT_FAIL);
                     socketWrapper.close();
-                    if (running && !paused) {
+                    if (running) {
                         if (!nioChannels.push(socketWrapper.getSocket())) {
                             socketWrapper.getSocket().free();
                         }
@@ -1681,7 +1681,7 @@ public class Nio2Endpoint extends 
AbstractJsseEndpoint<Nio2Channel> {
                 socketWrapper = null;
                 event = null;
                 //return to cache
-                if (running && !paused) {
+                if (running) {
                     processorCache.push(this);
                 }
             }
diff --git a/java/org/apache/tomcat/util/net/NioEndpoint.java 
b/java/org/apache/tomcat/util/net/NioEndpoint.java
index 54458aa..04cd5f7 100644
--- a/java/org/apache/tomcat/util/net/NioEndpoint.java
+++ b/java/org/apache/tomcat/util/net/NioEndpoint.java
@@ -589,7 +589,7 @@ public class NioEndpoint extends 
AbstractJsseEndpoint<NioChannel> {
                 if (log.isDebugEnabled()) {
                     log.debug("Socket: [" + socket + "] closed");
                 }
-                if (running && !paused) {
+                if (running) {
                     if (!nioChannels.push(socket)) {
                         socket.free();
                     }
@@ -753,7 +753,7 @@ public class NioEndpoint extends 
AbstractJsseEndpoint<NioChannel> {
                 try {
                     pe.run();
                     pe.reset();
-                    if (running && !paused) {
+                    if (running) {
                         eventCache.push(pe);
                     }
                 } catch ( Throwable x ) {
@@ -1698,7 +1698,7 @@ public class NioEndpoint extends 
AbstractJsseEndpoint<NioChannel> {
                 socketWrapper = null;
                 event = null;
                 //return to cache
-                if (running && !paused) {
+                if (running) {
                     processorCache.push(this);
                 }
             }
diff --git a/webapps/docs/changelog.xml b/webapps/docs/changelog.xml
index 535be2f..39c11d4 100644
--- a/webapps/docs/changelog.xml
+++ b/webapps/docs/changelog.xml
@@ -214,6 +214,11 @@
         <bug>65785</bug>: Perform additional validation of HTTP headers when
         using HTTP/2. (markt)
       </fix>
+      <fix>
+        When a Connector or Endpoint is paused, ensure that only new 
connections
+        and new requests on existing connections are stopped while allowing in
+        progress requests to run to completion. (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

Reply via email to