This is an automated email from the ASF dual-hosted git repository.
markt pushed a commit to branch 7.0.x
in repository https://gitbox.apache.org/repos/asf/tomcat.git
The following commit(s) were added to refs/heads/7.0.x by this push:
new 38d1eb1 Align with 8.5.x & fix compilation after backport
38d1eb1 is described below
commit 38d1eb17eb80e9418480241d25fe4ec9737e4751
Author: Mark Thomas <[email protected]>
AuthorDate: Fri Aug 28 13:22:10 2020 +0100
Align with 8.5.x & fix compilation after backport
---
java/org/apache/tomcat/util/threads/LimitLatch.java | 5 +++++
.../apache/tomcat/util/threads/StopPooledThreadException.java | 2 +-
java/org/apache/tomcat/util/threads/TaskQueue.java | 9 +++++++--
java/org/apache/tomcat/util/threads/TaskThreadFactory.java | 9 +++++----
java/org/apache/tomcat/util/threads/ThreadPoolExecutor.java | 6 +++---
java/org/apache/tomcat/util/threads/res/LocalStrings.properties | 3 +++
.../apache/tomcat/util/threads/res/LocalStrings_fr.properties | 3 +++
.../apache/tomcat/util/threads/res/LocalStrings_ja.properties | 3 +++
.../apache/tomcat/util/threads/res/LocalStrings_ko.properties | 3 +++
.../apache/tomcat/util/threads/res/LocalStrings_zh_CN.properties | 3 +++
10 files changed, 36 insertions(+), 10 deletions(-)
diff --git a/java/org/apache/tomcat/util/threads/LimitLatch.java
b/java/org/apache/tomcat/util/threads/LimitLatch.java
index 6ef2e64..840ec55 100644
--- a/java/org/apache/tomcat/util/threads/LimitLatch.java
+++ b/java/org/apache/tomcat/util/threads/LimitLatch.java
@@ -82,6 +82,7 @@ public class LimitLatch {
/**
* Obtain the current limit.
+ * @return the limit
*/
public long getLimit() {
return limit;
@@ -107,6 +108,7 @@ public class LimitLatch {
/**
* Acquires a shared latch if one is available or waits for one if no
shared
* latch is current available.
+ * @throws InterruptedException If the current thread is interrupted
*/
public void countUpOrAwait() throws InterruptedException {
if (log.isDebugEnabled()) {
@@ -131,6 +133,7 @@ public class LimitLatch {
/**
* Releases all waiting threads and causes the {@link #limit} to be ignored
* until {@link #reset()} is called.
+ * @return <code>true</code> if release was done
*/
public boolean releaseAll() {
released = true;
@@ -149,6 +152,7 @@ public class LimitLatch {
/**
* Returns <code>true</code> if there is at least one thread waiting to
* acquire the shared lock, otherwise returns <code>false</code>.
+ * @return <code>true</code> if threads are waiting
*/
public boolean hasQueuedThreads() {
return sync.hasQueuedThreads();
@@ -157,6 +161,7 @@ public class LimitLatch {
/**
* Provide access to the list of threads waiting to acquire this limited
* shared latch.
+ * @return a collection of threads
*/
public Collection<Thread> getQueuedThreads() {
return sync.getQueuedThreads();
diff --git a/java/org/apache/tomcat/util/threads/StopPooledThreadException.java
b/java/org/apache/tomcat/util/threads/StopPooledThreadException.java
index e1447e2..95b9c38 100644
--- a/java/org/apache/tomcat/util/threads/StopPooledThreadException.java
+++ b/java/org/apache/tomcat/util/threads/StopPooledThreadException.java
@@ -26,6 +26,6 @@ public class StopPooledThreadException extends
RuntimeException {
private static final long serialVersionUID = 1L;
public StopPooledThreadException(String msg) {
- super(msg, null, false, false);
+ super(msg, null);
}
}
diff --git a/java/org/apache/tomcat/util/threads/TaskQueue.java
b/java/org/apache/tomcat/util/threads/TaskQueue.java
index cdd0bc2..35f1d89 100644
--- a/java/org/apache/tomcat/util/threads/TaskQueue.java
+++ b/java/org/apache/tomcat/util/threads/TaskQueue.java
@@ -21,6 +21,8 @@ import java.util.concurrent.LinkedBlockingQueue;
import java.util.concurrent.RejectedExecutionException;
import java.util.concurrent.TimeUnit;
+import org.apache.tomcat.util.res.StringManager;
+
/**
* As task queue specifically designed to run with a thread pool executor. The
* task queue is optimised to properly utilize threads within a thread pool
@@ -31,6 +33,9 @@ import java.util.concurrent.TimeUnit;
public class TaskQueue extends LinkedBlockingQueue<Runnable> {
private static final long serialVersionUID = 1L;
+ protected static final StringManager sm = StringManager
+ .getManager("org.apache.tomcat.util.threads.res");
+ private static final int DEFAULT_FORCED_REMAINING_CAPACITY = -1;
private transient volatile ThreadPoolExecutor parent = null;
@@ -55,12 +60,12 @@ public class TaskQueue extends
LinkedBlockingQueue<Runnable> {
}
public boolean force(Runnable o) {
- if (parent == null || parent.isShutdown()) throw new
RejectedExecutionException("Executor not running, can't force a command into
the queue");
+ if (parent == null || parent.isShutdown()) throw new
RejectedExecutionException(sm.getString("taskQueue.notRunning"));
return super.offer(o); //forces the item onto the queue, to be used if
the task is rejected
}
public boolean force(Runnable o, long timeout, TimeUnit unit) throws
InterruptedException {
- if (parent == null || parent.isShutdown()) throw new
RejectedExecutionException("Executor not running, can't force a command into
the queue");
+ if (parent == null || parent.isShutdown()) throw new
RejectedExecutionException(sm.getString("taskQueue.notRunning"));
return super.offer(o,timeout,unit); //forces the item onto the queue,
to be used if the task is rejected
}
diff --git a/java/org/apache/tomcat/util/threads/TaskThreadFactory.java
b/java/org/apache/tomcat/util/threads/TaskThreadFactory.java
index af63f11..c6db0a4 100644
--- a/java/org/apache/tomcat/util/threads/TaskThreadFactory.java
+++ b/java/org/apache/tomcat/util/threads/TaskThreadFactory.java
@@ -18,17 +18,19 @@ package org.apache.tomcat.util.threads;
import java.util.concurrent.ThreadFactory;
import java.util.concurrent.atomic.AtomicInteger;
+
/**
- * Simple task thread factory to use to create threads for an executor
implementation.
- * @author fhanik
- *
+ * Simple task thread factory to use to create threads for an executor
+ * implementation.
*/
public class TaskThreadFactory implements ThreadFactory {
+
private final ThreadGroup group;
private final AtomicInteger threadNumber = new AtomicInteger(1);
private final String namePrefix;
private final boolean daemon;
private final int threadPriority;
+
public TaskThreadFactory(String namePrefix, boolean daemon, int priority) {
SecurityManager s = System.getSecurityManager();
group = (s != null) ? s.getThreadGroup() :
Thread.currentThread().getThreadGroup();
@@ -44,5 +46,4 @@ public class TaskThreadFactory implements ThreadFactory {
t.setPriority(threadPriority);
return t;
}
-
}
diff --git a/java/org/apache/tomcat/util/threads/ThreadPoolExecutor.java
b/java/org/apache/tomcat/util/threads/ThreadPoolExecutor.java
index 24bc84c..7298efa 100644
--- a/java/org/apache/tomcat/util/threads/ThreadPoolExecutor.java
+++ b/java/org/apache/tomcat/util/threads/ThreadPoolExecutor.java
@@ -31,7 +31,6 @@ import org.apache.tomcat.util.res.StringManager;
* {@link #getSubmittedCount()} method, to be used to properly handle the work
queue.
* If a RejectedExecutionHandler is not specified a default one will be
configured
* and that one will always throw a RejectedExecutionException
- * @author fhanik
*
*/
public class ThreadPoolExecutor extends
java.util.concurrent.ThreadPoolExecutor {
@@ -156,6 +155,8 @@ public class ThreadPoolExecutor extends
java.util.concurrent.ThreadPoolExecutor
* full after that.
*
* @param command the runnable task
+ * @param timeout A timeout for the completion of the task
+ * @param unit The timeout time unit
* @throws RejectedExecutionException if this task cannot be
* accepted for execution - the queue is full
* @throws NullPointerException if command or unit is null
@@ -170,11 +171,10 @@ public class ThreadPoolExecutor extends
java.util.concurrent.ThreadPoolExecutor
try {
if (!queue.force(command, timeout, unit)) {
submittedCount.decrementAndGet();
- throw new RejectedExecutionException("Queue capacity
is full.");
+ throw new
RejectedExecutionException(sm.getString("threadPoolExecutor.queueFull"));
}
} catch (InterruptedException x) {
submittedCount.decrementAndGet();
- Thread.interrupted();
throw new RejectedExecutionException(x);
}
} else {
diff --git a/java/org/apache/tomcat/util/threads/res/LocalStrings.properties
b/java/org/apache/tomcat/util/threads/res/LocalStrings.properties
index 938626f..3124491 100644
--- a/java/org/apache/tomcat/util/threads/res/LocalStrings.properties
+++ b/java/org/apache/tomcat/util/threads/res/LocalStrings.properties
@@ -13,4 +13,7 @@
# See the License for the specific language governing permissions and
# limitations under the License.
+taskQueue.notRunning=Executor not running, can't force a command into the queue
+
+threadPoolExecutor.queueFull=Queue capacity is full
threadPoolExecutor.threadStoppedToAvoidPotentialLeak=Stopping thread [{0}] to
avoid potential memory leaks after a context was stopped.
diff --git a/java/org/apache/tomcat/util/threads/res/LocalStrings_fr.properties
b/java/org/apache/tomcat/util/threads/res/LocalStrings_fr.properties
index f80be7b..8d0d122 100644
--- a/java/org/apache/tomcat/util/threads/res/LocalStrings_fr.properties
+++ b/java/org/apache/tomcat/util/threads/res/LocalStrings_fr.properties
@@ -13,4 +13,7 @@
# See the License for the specific language governing permissions and
# limitations under the License.
+taskQueue.notRunning=L'exécuteur n'a pas été démarré, impossible d'ajouter une
commande à la file d'attente
+
+threadPoolExecutor.queueFull=La file d'attente est pleine
threadPoolExecutor.threadStoppedToAvoidPotentialLeak=Arrêt du thread [{0}]
pour éviter de potentielles fuites de mémoire après l''arrêt d''un contexte
diff --git a/java/org/apache/tomcat/util/threads/res/LocalStrings_ja.properties
b/java/org/apache/tomcat/util/threads/res/LocalStrings_ja.properties
index af55365..e374067 100644
--- a/java/org/apache/tomcat/util/threads/res/LocalStrings_ja.properties
+++ b/java/org/apache/tomcat/util/threads/res/LocalStrings_ja.properties
@@ -13,4 +13,7 @@
# See the License for the specific language governing permissions and
# limitations under the License.
+taskQueue.notRunning=Executor が動作していないため、コマンドを強制的にキューへ登録できません。
+
+threadPoolExecutor.queueFull=キューが一杯です。
threadPoolExecutor.threadStoppedToAvoidPotentialLeak=コンテキストが停止した後の潜在的なメモリリークを防ぐため、スレッド[{0}]を停止しています。
diff --git a/java/org/apache/tomcat/util/threads/res/LocalStrings_ko.properties
b/java/org/apache/tomcat/util/threads/res/LocalStrings_ko.properties
index ad04282..4360b98 100644
--- a/java/org/apache/tomcat/util/threads/res/LocalStrings_ko.properties
+++ b/java/org/apache/tomcat/util/threads/res/LocalStrings_ko.properties
@@ -13,4 +13,7 @@
# See the License for the specific language governing permissions and
# limitations under the License.
+taskQueue.notRunning=Executor가 실행 중이지 않습니다. 명령을 강제로 큐에 넣을 수 없습니다.
+
+threadPoolExecutor.queueFull=큐의 용량이 꽉 찼습니다.
threadPoolExecutor.threadStoppedToAvoidPotentialLeak=컨텍스트가 중지된 후에 발생할 수 있는 잠재적
메모리 누수를 피하기 위하여, 쓰레드 [{0}]을(를) 중지시킵니다.
diff --git
a/java/org/apache/tomcat/util/threads/res/LocalStrings_zh_CN.properties
b/java/org/apache/tomcat/util/threads/res/LocalStrings_zh_CN.properties
index 543d102..26d70de 100644
--- a/java/org/apache/tomcat/util/threads/res/LocalStrings_zh_CN.properties
+++ b/java/org/apache/tomcat/util/threads/res/LocalStrings_zh_CN.properties
@@ -13,4 +13,7 @@
# See the License for the specific language governing permissions and
# limitations under the License.
+taskQueue.notRunning=执行器未运行,无法强制命令进入队列
+
+threadPoolExecutor.queueFull=队列容量已满
threadPoolExecutor.threadStoppedToAvoidPotentialLeak=停止线程[{0}],从而避免context停止后的潜在的内存泄漏
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]