Author: markt
Date: Thu Oct 29 14:54:00 2009
New Revision: 830980
URL: http://svn.apache.org/viewvc?rev=830980&view=rev
Log:
Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=47161
Make maxThreads return consistent. Will still return -1 in many cases but that
is better than previously.
Note: Also ensures new return values don't break keep-alive auto-disable for
the BIO HTTP connector.
Modified:
tomcat/tc6.0.x/trunk/STATUS.txt
tomcat/tc6.0.x/trunk/java/org/apache/coyote/http11/Http11Processor.java
tomcat/tc6.0.x/trunk/java/org/apache/tomcat/util/net/AprEndpoint.java
tomcat/tc6.0.x/trunk/java/org/apache/tomcat/util/net/JIoEndpoint.java
tomcat/tc6.0.x/trunk/java/org/apache/tomcat/util/net/NioEndpoint.java
tomcat/tc6.0.x/trunk/webapps/docs/changelog.xml
Modified: tomcat/tc6.0.x/trunk/STATUS.txt
URL:
http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/STATUS.txt?rev=830980&r1=830979&r2=830980&view=diff
==============================================================================
--- tomcat/tc6.0.x/trunk/STATUS.txt (original)
+++ tomcat/tc6.0.x/trunk/STATUS.txt Thu Oct 29 14:54:00 2009
@@ -323,23 +323,6 @@
+1: rjung, pero
-1:
-* Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=47161
- Make maxThreads return consistent. Will still return -1 in many cases but
that
- is better than previously.
- https://issues.apache.org/bugzilla/attachment.cgi?id=24341&action=edit
- +1: markt, kkolinko, rjung
- -1:
- kkolinko: (We need to make some decision regarding the following lines in
Http11Processor#process():
- int threadRatio = (endpoint.getCurrentThreadsBusy() * 100)
- / endpoint.getMaxThreads();
- When JIoEndpoint uses an executor this value that was (-100) will now be
(+100).
- I am in favour of using the (threadRatio <= 75) branch when threadRatio
- cannot be reliably calculated.
-
- Besides that, I see no problems with this patch.
- rjung: me to (threadRatio <= 75 branch).
- )
-
* Fix memory leak causes by a JRE implementation change in 1.6.0_15 onwards
http://svn.apache.org/viewvc?view=revision&revision=828196
http://svn.apache.org/viewvc?view=revision&revision=830378
Modified:
tomcat/tc6.0.x/trunk/java/org/apache/coyote/http11/Http11Processor.java
URL:
http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/java/org/apache/coyote/http11/Http11Processor.java?rev=830980&r1=830979&r2=830980&view=diff
==============================================================================
--- tomcat/tc6.0.x/trunk/java/org/apache/coyote/http11/Http11Processor.java
(original)
+++ tomcat/tc6.0.x/trunk/java/org/apache/coyote/http11/Http11Processor.java Thu
Oct 29 14:54:00 2009
@@ -774,10 +774,15 @@
int keepAliveLeft = maxKeepAliveRequests;
int soTimeout = endpoint.getSoTimeout();
- int threadRatio = (endpoint.getCurrentThreadsBusy() * 100)
- / endpoint.getMaxThreads();
- if (threadRatio > 75) {
- keepAliveLeft = 1;
+ // When using an executor, these values may return non-positive values
+ int curThreads = endpoint.getCurrentThreadsBusy();
+ int maxThreads = endpoint.getMaxThreads();
+ if (curThreads > 0 && maxThreads >0) {
+ // Only auto-disable keep-alive if the current thread usage % can
be
+ // calculated correctly
+ if (curThreads*100/maxThreads > 75) {
+ keepAliveLeft = 1;
+ }
}
try {
Modified: tomcat/tc6.0.x/trunk/java/org/apache/tomcat/util/net/AprEndpoint.java
URL:
http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/java/org/apache/tomcat/util/net/AprEndpoint.java?rev=830980&r1=830979&r2=830980&view=diff
==============================================================================
--- tomcat/tc6.0.x/trunk/java/org/apache/tomcat/util/net/AprEndpoint.java
(original)
+++ tomcat/tc6.0.x/trunk/java/org/apache/tomcat/util/net/AprEndpoint.java Thu
Oct 29 14:54:00 2009
@@ -36,7 +36,6 @@
import org.apache.tomcat.jni.SSLSocket;
import org.apache.tomcat.jni.Socket;
import org.apache.tomcat.jni.Status;
-import org.apache.tomcat.util.net.JIoEndpoint.Worker;
import org.apache.tomcat.util.res.StringManager;
/**
@@ -188,7 +187,13 @@
}
}
}
- public int getMaxThreads() { return maxThreads; }
+ public int getMaxThreads() {
+ if (executor != null) {
+ return -1;
+ } else {
+ return maxThreads;
+ }
+ }
/**
@@ -539,7 +544,7 @@
* @return the amount of threads that are managed by the pool
*/
public int getCurrentThreadCount() {
- if (executor!=null) {
+ if (executor != null) {
return -1;
} else {
return curThreads;
Modified: tomcat/tc6.0.x/trunk/java/org/apache/tomcat/util/net/JIoEndpoint.java
URL:
http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/java/org/apache/tomcat/util/net/JIoEndpoint.java?rev=830980&r1=830979&r2=830980&view=diff
==============================================================================
--- tomcat/tc6.0.x/trunk/java/org/apache/tomcat/util/net/JIoEndpoint.java
(original)
+++ tomcat/tc6.0.x/trunk/java/org/apache/tomcat/util/net/JIoEndpoint.java Thu
Oct 29 14:54:00 2009
@@ -160,7 +160,13 @@
}
}
}
- public int getMaxThreads() { return maxThreads; }
+ public int getMaxThreads() {
+ if (executor != null) {
+ return -1;
+ } else {
+ return maxThreads;
+ }
+ }
/**
Modified: tomcat/tc6.0.x/trunk/java/org/apache/tomcat/util/net/NioEndpoint.java
URL:
http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/java/org/apache/tomcat/util/net/NioEndpoint.java?rev=830980&r1=830979&r2=830980&view=diff
==============================================================================
--- tomcat/tc6.0.x/trunk/java/org/apache/tomcat/util/net/NioEndpoint.java
(original)
+++ tomcat/tc6.0.x/trunk/java/org/apache/tomcat/util/net/NioEndpoint.java Thu
Oct 29 14:54:00 2009
@@ -57,7 +57,6 @@
import org.apache.juli.logging.Log;
import org.apache.juli.logging.LogFactory;
import org.apache.tomcat.util.IntrospectionUtils;
-import org.apache.tomcat.util.net.JIoEndpoint.Worker;
import org.apache.tomcat.util.net.SecureNioChannel.ApplicationBufferHandler;
import org.apache.tomcat.util.net.jsse.NioX509KeyManager;
import org.apache.tomcat.util.res.StringManager;
@@ -371,7 +370,17 @@
}
}
}
- public int getMaxThreads() { return maxThreads; }
+ public int getMaxThreads() {
+ if (running && getUseExecutor() && executor!=null) {
+ if (executor instanceof ThreadPoolExecutor) {
+ return ((ThreadPoolExecutor)executor).getMaximumPoolSize();
+ } else {
+ return -1;
+ }
+ } else {
+ return maxThreads;
+ }
+ }
/**
Modified: tomcat/tc6.0.x/trunk/webapps/docs/changelog.xml
URL:
http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/webapps/docs/changelog.xml?rev=830980&r1=830979&r2=830980&view=diff
==============================================================================
--- tomcat/tc6.0.x/trunk/webapps/docs/changelog.xml (original)
+++ tomcat/tc6.0.x/trunk/webapps/docs/changelog.xml Thu Oct 29 14:54:00 2009
@@ -319,6 +319,10 @@
(markt)
</fix>
<fix>
+ <bug>47161</bug>: Report thread count correctly in Manager when
exectors
+ are used and return -1 when it can not easily be determined. (markt)
+ </fix>
+ <fix>
<bug>47235</bug>: Remove use of autoReconnect from MySQL examples.
(markt)
</fix>
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]