You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by na...@apache.org on 2001/08/25 02:59:03 UTC
cvs commit: jakarta-tomcat/src/share/org/apache/tomcat/util/threads ThreadPool.java
nacho 01/08/24 17:59:03
Modified: src/share/org/apache/tomcat/util/threads ThreadPool.java
Log:
Fix for Bugzilla#1745
Possible problem with thread initialization in ThreadPool.java
Reported by clay.olbon at raremedium.com
Revision Changes Path
1.5 +27 -26 jakarta-tomcat/src/share/org/apache/tomcat/util/threads/ThreadPool.java
Index: ThreadPool.java
===================================================================
RCS file: /home/cvs/jakarta-tomcat/src/share/org/apache/tomcat/util/threads/ThreadPool.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- ThreadPool.java 2001/04/21 18:42:51 1.4
+++ ThreadPool.java 2001/08/25 00:59:03 1.5
@@ -1,7 +1,7 @@
/*
- * $Header: /home/cvs/jakarta-tomcat/src/share/org/apache/tomcat/util/threads/ThreadPool.java,v 1.4 2001/04/21 18:42:51 costin Exp $
- * $Revision: 1.4 $
- * $Date: 2001/04/21 18:42:51 $
+ * $Header: /home/cvs/jakarta-tomcat/src/share/org/apache/tomcat/util/threads/ThreadPool.java,v 1.5 2001/08/25 00:59:03 nacho Exp $
+ * $Revision: 1.5 $
+ * $Date: 2001/08/25 00:59:03 $
*
* ====================================================================
*
@@ -253,8 +253,8 @@
try {
((ControlRunnable)(pool.elementAt(i))).terminate();
} catch(Throwable t) {
- /*
- * Do nothing... The show must go on, we are shutting
+ /*
+ * Do nothing... The show must go on, we are shutting
* down the pool and nothing should stop that.
*/
loghelper.log("Ignored exception while shutting down thread pool", t, Log.ERROR);
@@ -267,7 +267,7 @@
}
/**
- * Called by the monitor thread to harvest idel threads.
+ * Called by the monitor thread to harvest idle threads.
*/
protected synchronized void checkSpareControllers() {
@@ -307,7 +307,7 @@
/**
* Inform the pool that the specific thread finish.
*
- * Called by the ControlRunnable.run() when the runnable
+ * Called by the ControlRunnable.run() when the runnable
* throws an exception.
*/
protected synchronized void notifyThreadEnd(ControlRunnable c) {
@@ -315,7 +315,7 @@
currentThreadCount --;
notify();
}
-
+
/*
* Checks for problematic configuration and fix it.
@@ -331,7 +331,7 @@
maxSpareThreads = maxThreads;
}
- if(maxSpareThreads <= 0) {
+ if(maxSpareThreads <= 0) {
if(1 == maxThreads) {
maxSpareThreads = 1;
} else {
@@ -341,9 +341,9 @@
if(minSpareThreads > maxSpareThreads) {
minSpareThreads = maxSpareThreads;
- }
+ }
- if(minSpareThreads <= 0) {
+ if(minSpareThreads <= 0) {
if(1 == maxSpareThreads) {
minSpareThreads = 1;
} else {
@@ -475,31 +475,31 @@
}
public void run() {
-
+
while(true) {
- try {
+ try {
/* Wait for work. */
synchronized(this) {
if(!shouldRun && !shouldTerminate) {
this.wait();
}
+ }
+ if(toRun == null ) {
+ if( p.debug>0) p.log( "No toRun ???");
}
- if(toRun == null ) {
- if( p.debug>0) p.log( "No toRun ???");
- }
-
- if( shouldTerminate ) {
- if( p.debug>0) p.log( "Terminate");
- break;
- }
+ if( shouldTerminate ) {
+ if( p.debug>0) p.log( "Terminate");
+ break;
+ }
+
/* Check if should execute a runnable. */
try {
- if(noThData) {
- if(p.debug>0) p.log( "Getting new thread data");
- thData=toRun.getInitData();
- noThData = false;
- }
+ if(noThData) {
+ if(p.debug>0) p.log( "Getting new thread data");
+ thData=toRun.getInitData();
+ noThData = false;
+ }
if(shouldRun) {
toRun.runIt(thData);
@@ -545,6 +545,7 @@
throw new NullPointerException("No Runnable");
}
this.toRun = toRun;
+ noThData = true;
shouldRun = true;
this.notify();
}