darion yaphets created THRIFT-2650:
--------------------------------------
Summary: add LoggingRejectedExecutionHandler on ThreadPoolExecutor
Key: THRIFT-2650
URL: https://issues.apache.org/jira/browse/THRIFT-2650
Project: Thrift
Issue Type: Improvement
Components: Java - Library
Affects Versions: 0.9.1
Environment: Mac OS
Reporter: darion yaphets
Fix For: 0.9.1
Add a LoggingRejectedExecutionHandler on ThreadPoolExecutor.
When ThreadPoolExecutor Server received a unprocess message and make server
throw a exception .
Using RejectedExecutionHandler to avoid the service break down and logging it .
The git diff as following :
diff --git a/lib/java/src/org/apache/thrift/server/TThreadPoolServer.java
b/lib/java/src/org/apache/thrift/server/TThreadPoolServer.java
index 488d17f..d0cb4e9 100755
--- a/lib/java/src/org/apache/thrift/server/TThreadPoolServer.java
+++ b/lib/java/src/org/apache/thrift/server/TThreadPoolServer.java
@@ -95,11 +95,18 @@ public class TThreadPoolServer extends TServer {
private static ExecutorService createDefaultExecutorService(Args args) {
SynchronousQueue<Runnable> executorQueue =
new SynchronousQueue<Runnable>();
+ RejectedExecutionHandler loggingHandler = new RejectedExecutionHandler() {
+ @Override
+ public void rejectedExecution(Runnable r,ThreadPoolExecutor
executor) {
+ LOGGER.error("Executing Task Failed ...");
+ }
+
return new ThreadPoolExecutor(args.minWorkerThreads,
args.maxWorkerThreads,
60,
TimeUnit.SECONDS,
- executorQueue);
+ executorQueue,
+ loggingHandler);
}
Please review and reply
--
This message was sent by Atlassian JIRA
(v6.2#6252)