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)