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) {