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

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

commit 93759327a4ba74c30414c7e4f99a5eceb0253b6f
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      | 6 +-----
 java/org/apache/tomcat/util/net/Nio2Endpoint.java | 4 ++--
 java/org/apache/tomcat/util/net/NioEndpoint.java  | 6 +++---
 webapps/docs/changelog.xml                        | 5 +++++
 4 files changed, 11 insertions(+), 10 deletions(-)

diff --git a/java/org/apache/coyote/AbstractProtocol.java 
b/java/org/apache/coyote/AbstractProtocol.java
index c286a23..896e94d 100644
--- a/java/org/apache/coyote/AbstractProtocol.java
+++ b/java/org/apache/coyote/AbstractProtocol.java
@@ -585,9 +585,7 @@ public abstract class AbstractProtocol<S> implements 
ProtocolHandler,
         endpoint.start();
         monitorFuture = getUtilityExecutor().scheduleWithFixedDelay(
                 () -> {
-                    if (!isPaused()) {
-                        startAsyncTimeout();
-                    }
+                    startAsyncTimeout();
                 }, 0, 60, TimeUnit.SECONDS);
     }
 
@@ -630,7 +628,6 @@ public abstract class AbstractProtocol<S> implements 
ProtocolHandler,
             getLog().info(sm.getString("abstractProtocolHandler.pause", 
getName()));
         }
 
-        stopAsyncTimeout();
         endpoint.pause();
     }
 
@@ -647,7 +644,6 @@ public abstract class AbstractProtocol<S> implements 
ProtocolHandler,
         }
 
         endpoint.resume();
-        startAsyncTimeout();
     }
 
 
diff --git a/java/org/apache/tomcat/util/net/Nio2Endpoint.java 
b/java/org/apache/tomcat/util/net/Nio2Endpoint.java
index 47825f0..c9dc0d3 100644
--- a/java/org/apache/tomcat/util/net/Nio2Endpoint.java
+++ b/java/org/apache/tomcat/util/net/Nio2Endpoint.java
@@ -932,7 +932,7 @@ public class Nio2Endpoint extends 
AbstractJsseEndpoint<Nio2Channel,AsynchronousS
                 if (getSocket().isOpen()) {
                     getSocket().close(true);
                 }
-                if (getEndpoint().running && !getEndpoint().paused) {
+                if (getEndpoint().running) {
                     if (nioChannels == null || !nioChannels.push(getSocket())) 
{
                         getSocket().free();
                     }
@@ -1671,7 +1671,7 @@ public class Nio2Endpoint extends 
AbstractJsseEndpoint<Nio2Channel,AsynchronousS
                 socketWrapper = null;
                 event = null;
                 //return to cache
-                if (running && !paused && processorCache != null) {
+                if (running && processorCache != null) {
                     processorCache.push(this);
                 }
             }
diff --git a/java/org/apache/tomcat/util/net/NioEndpoint.java 
b/java/org/apache/tomcat/util/net/NioEndpoint.java
index de72805..107e591 100644
--- a/java/org/apache/tomcat/util/net/NioEndpoint.java
+++ b/java/org/apache/tomcat/util/net/NioEndpoint.java
@@ -691,7 +691,7 @@ public class NioEndpoint extends 
AbstractJsseEndpoint<NioChannel,SocketChannel>
                         }
                     }
                 }
-                if (running && !paused && eventCache != null) {
+                if (running && eventCache != null) {
                     pe.reset();
                     eventCache.push(pe);
                 }
@@ -1195,7 +1195,7 @@ public class NioEndpoint extends 
AbstractJsseEndpoint<NioChannel,SocketChannel>
                 if (getSocket().isOpen()) {
                     getSocket().close(true);
                 }
-                if (getEndpoint().running && !getEndpoint().paused) {
+                if (getEndpoint().running) {
                     if (nioChannels == null || !nioChannels.push(getSocket())) 
{
                         getSocket().free();
                     }
@@ -1703,7 +1703,7 @@ public class NioEndpoint extends 
AbstractJsseEndpoint<NioChannel,SocketChannel>
                 socketWrapper = null;
                 event = null;
                 //return to cache
-                if (running && !paused && processorCache != null) {
+                if (running && processorCache != null) {
                     processorCache.push(this);
                 }
             }
diff --git a/webapps/docs/changelog.xml b/webapps/docs/changelog.xml
index a93bba0..18ee8a0 100644
--- a/webapps/docs/changelog.xml
+++ b/webapps/docs/changelog.xml
@@ -167,6 +167,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