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