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)

Reply via email to