Author: markt
Date: Thu Apr 13 13:50:22 2017
New Revision: 1791253
URL: http://svn.apache.org/viewvc?rev=1791253&view=rev
Log:
Fix a theoretical problem where the connection count could exceed the limit
during shutdown.
Modified:
tomcat/trunk/java/org/apache/tomcat/util/net/AbstractEndpoint.java
tomcat/trunk/java/org/apache/tomcat/util/net/Acceptor.java
tomcat/trunk/java/org/apache/tomcat/util/net/AprEndpoint.java
tomcat/trunk/java/org/apache/tomcat/util/net/Nio2Endpoint.java
tomcat/trunk/java/org/apache/tomcat/util/net/NioEndpoint.java
Modified: tomcat/trunk/java/org/apache/tomcat/util/net/AbstractEndpoint.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/net/AbstractEndpoint.java?rev=1791253&r1=1791252&r2=1791253&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/tomcat/util/net/AbstractEndpoint.java
(original)
+++ tomcat/trunk/java/org/apache/tomcat/util/net/AbstractEndpoint.java Thu Apr
13 13:50:22 2017
@@ -986,6 +986,7 @@ public abstract class AbstractEndpoint<S
public void pause() {
if (running && !paused) {
paused = true;
+ releaseConnectionLatch();
unlockAccept();
getHandler().pause();
}
@@ -1026,7 +1027,7 @@ public abstract class AbstractEndpoint<S
return connectionLimitLatch;
}
- protected void releaseConnectionLatch() {
+ private void releaseConnectionLatch() {
LimitLatch latch = connectionLimitLatch;
if (latch!=null) latch.releaseAll();
connectionLimitLatch = null;
Modified: tomcat/trunk/java/org/apache/tomcat/util/net/Acceptor.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/net/Acceptor.java?rev=1791253&r1=1791252&r2=1791253&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/tomcat/util/net/Acceptor.java (original)
+++ tomcat/trunk/java/org/apache/tomcat/util/net/Acceptor.java Thu Apr 13
13:50:22 2017
@@ -82,6 +82,12 @@ public class Acceptor<U> implements Runn
//if we have reached max connections, wait
endpoint.countUpOrAwaitConnection();
+ // Endpoint might have been paused while waiting for latch
+ // If that is the case, don't accept new connections
+ if (endpoint.isPaused()) {
+ continue;
+ }
+
U socket = null;
try {
// Accept the next incoming connection from the server
Modified: tomcat/trunk/java/org/apache/tomcat/util/net/AprEndpoint.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/net/AprEndpoint.java?rev=1791253&r1=1791252&r2=1791253&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/tomcat/util/net/AprEndpoint.java (original)
+++ tomcat/trunk/java/org/apache/tomcat/util/net/AprEndpoint.java Thu Apr 13
13:50:22 2017
@@ -625,7 +625,6 @@ public class AprEndpoint extends Abstrac
*/
@Override
public void stopInternal() {
- releaseConnectionLatch();
if (!paused) {
pause();
}
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=1791253&r1=1791252&r2=1791253&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/tomcat/util/net/Nio2Endpoint.java (original)
+++ tomcat/trunk/java/org/apache/tomcat/util/net/Nio2Endpoint.java Thu Apr 13
13:50:22 2017
@@ -190,7 +190,6 @@ public class Nio2Endpoint extends Abstra
*/
@Override
public void stopInternal() {
- releaseConnectionLatch();
if (!paused) {
pause();
}
Modified: tomcat/trunk/java/org/apache/tomcat/util/net/NioEndpoint.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/net/NioEndpoint.java?rev=1791253&r1=1791252&r2=1791253&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/tomcat/util/net/NioEndpoint.java (original)
+++ tomcat/trunk/java/org/apache/tomcat/util/net/NioEndpoint.java Thu Apr 13
13:50:22 2017
@@ -267,7 +267,6 @@ public class NioEndpoint extends Abstrac
*/
@Override
public void stopInternal() {
- releaseConnectionLatch();
if (!paused) {
pause();
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]