You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by sh...@locus.apache.org on 2000/04/15 16:47:48 UTC
cvs commit: jakarta-tomcat/src/share/org/apache/tomcat/util ThreadPool.java
shachor 00/04/15 07:47:48
Modified: src/share/org/apache/tomcat/util Tag: TOMCAT_31
ThreadPool.java
Log:
Fixed a set of bugs reported by gtallen <gt...@home.com>
1. Better verification of probematic config.
2. Error condition is shutdown
Revision Changes Path
No revision
No revision
1.4.2.1 +36 -9 jakarta-tomcat/src/share/org/apache/tomcat/util/ThreadPool.java
Index: ThreadPool.java
===================================================================
RCS file: /home/cvs/jakarta-tomcat/src/share/org/apache/tomcat/util/ThreadPool.java,v
retrieving revision 1.4
retrieving revision 1.4.2.1
diff -u -r1.4 -r1.4.2.1
--- ThreadPool.java 2000/02/29 13:43:26 1.4
+++ ThreadPool.java 2000/04/15 14:47:48 1.4.2.1
@@ -1,7 +1,7 @@
/*
- * $Header: /home/cvs/jakarta-tomcat/src/share/org/apache/tomcat/util/ThreadPool.java,v 1.4 2000/02/29 13:43:26 shachor Exp $
- * $Revision: 1.4 $
- * $Date: 2000/02/29 13:43:26 $
+ * $Header: /home/cvs/jakarta-tomcat/src/share/org/apache/tomcat/util/ThreadPool.java,v 1.4.2.1 2000/04/15 14:47:48 shachor Exp $
+ * $Revision: 1.4.2.1 $
+ * $Date: 2000/04/15 14:47:48 $
*
* ====================================================================
*
@@ -224,17 +224,26 @@
* Stop the thread pool
*/
public synchronized void shutdown() {
+ System.out.println("start shutdown()");
if(!stopThePool) {
stopThePool = true;
monitor.terminate();
monitor = null;
- for(int i = 0 ; i < currentThreadCount ; i++) {
- ((ControlRunnable)(pool.elementAt(i))).terminate();
+ for(int i = 0 ; i < (currentThreadCount - currentThreadsBusy) ; i++) {
+ try {
+ ((ControlRunnable)(pool.elementAt(i))).terminate();
+ } catch(Throwable t) {
+ /*
+ * Do nothing... The show must go on, we are shutting
+ * down the pool and nothing should stop that.
+ */
+ }
}
currentThreadsBusy = currentThreadCount = 0;
pool = null;
notifyAll();
}
+ System.out.println("end shutdown()");
}
/**
@@ -284,14 +293,32 @@
if(maxThreads <= 0) {
maxThreads = MAX_THREADS;
}
+
+ if(maxSpareThreads >= maxThreads) {
+ maxSpareThreads = maxThreads;
+ }
- if(maxSpareThreads == maxThreads || maxSpareThreads <= 0) {
- maxSpareThreads = maxThreads/2;
+ if(maxSpareThreads <= 0) {
+ if(1 == maxThreads) {
+ maxSpareThreads = 1;
+ } else {
+ maxSpareThreads = maxThreads/2;
+ }
}
- if(minSpareThreads >= maxSpareThreads || minSpareThreads <= 0) {
- minSpareThreads = maxSpareThreads/2;
+ if(minSpareThreads > maxSpareThreads) {
+ minSpareThreads = maxSpareThreads;
+ }
+
+ if(minSpareThreads <= 0) {
+ if(1 == maxSpareThreads) {
+ minSpareThreads = 1;
+ } else {
+ minSpareThreads = maxSpareThreads/2;
+ }
}
+
+ System.out.println(maxThreads + " " + maxSpareThreads + " " + minSpareThreads);
}
protected void openThreads(int toOpen) {