Repository: thrift
Updated Branches:
  refs/heads/master 2b09dfed9 -> da9a9bac9


THRIFT-4429: Make TThreadPoolServer.executorService_ available in
inherited classes and refactor methods to be able customization
Client: java

This closes #1485


Project: http://git-wip-us.apache.org/repos/asf/thrift/repo
Commit: http://git-wip-us.apache.org/repos/asf/thrift/commit/da9a9bac
Tree: http://git-wip-us.apache.org/repos/asf/thrift/tree/da9a9bac
Diff: http://git-wip-us.apache.org/repos/asf/thrift/diff/da9a9bac

Branch: refs/heads/master
Commit: da9a9bac92550f676e170e600d4be24769e14835
Parents: 2b09dfe
Author: Dmitry Volodin <dmvo...@gmail.com>
Authored: Tue Jan 30 12:09:36 2018 +0300
Committer: James E. King III <jk...@apache.org>
Committed: Tue Mar 13 13:49:55 2018 -0400

----------------------------------------------------------------------
 .../org/apache/thrift/AsyncProcessFunction.java |  1 -
 .../src/org/apache/thrift/TAsyncProcessor.java  |  9 +----
 lib/java/src/org/apache/thrift/TEnumHelper.java |  1 -
 .../apache/thrift/server/TThreadPoolServer.java | 35 +++++++++++++++-----
 4 files changed, 28 insertions(+), 18 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/thrift/blob/da9a9bac/lib/java/src/org/apache/thrift/AsyncProcessFunction.java
----------------------------------------------------------------------
diff --git a/lib/java/src/org/apache/thrift/AsyncProcessFunction.java 
b/lib/java/src/org/apache/thrift/AsyncProcessFunction.java
index 550ebd5..483c8d0 100644
--- a/lib/java/src/org/apache/thrift/AsyncProcessFunction.java
+++ b/lib/java/src/org/apache/thrift/AsyncProcessFunction.java
@@ -20,7 +20,6 @@ package org.apache.thrift;
 
 import org.apache.thrift.async.AsyncMethodCallback;
 import org.apache.thrift.protocol.TMessage;
-import org.apache.thrift.protocol.TMessageType;
 import org.apache.thrift.protocol.TProtocol;
 import org.apache.thrift.server.AbstractNonblockingServer;
 

http://git-wip-us.apache.org/repos/asf/thrift/blob/da9a9bac/lib/java/src/org/apache/thrift/TAsyncProcessor.java
----------------------------------------------------------------------
diff --git a/lib/java/src/org/apache/thrift/TAsyncProcessor.java 
b/lib/java/src/org/apache/thrift/TAsyncProcessor.java
index 0a069ea..533e74d 100644
--- a/lib/java/src/org/apache/thrift/TAsyncProcessor.java
+++ b/lib/java/src/org/apache/thrift/TAsyncProcessor.java
@@ -18,14 +18,7 @@
  */
 package org.apache.thrift;
 
-import org.apache.thrift.protocol.*;
-
-import org.apache.thrift.server.AbstractNonblockingServer.*;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.Collections;
-import java.util.Map;
+import org.apache.thrift.server.AbstractNonblockingServer.AsyncFrameBuffer;
 
 public interface TAsyncProcessor {
     /**

http://git-wip-us.apache.org/repos/asf/thrift/blob/da9a9bac/lib/java/src/org/apache/thrift/TEnumHelper.java
----------------------------------------------------------------------
diff --git a/lib/java/src/org/apache/thrift/TEnumHelper.java 
b/lib/java/src/org/apache/thrift/TEnumHelper.java
index c17d661..fbc7787 100644
--- a/lib/java/src/org/apache/thrift/TEnumHelper.java
+++ b/lib/java/src/org/apache/thrift/TEnumHelper.java
@@ -19,7 +19,6 @@
 
 package org.apache.thrift;
 
-import java.lang.InstantiationException;
 import java.lang.NoSuchMethodException;
 import java.lang.IllegalAccessException;
 import java.lang.reflect.InvocationTargetException;

http://git-wip-us.apache.org/repos/asf/thrift/blob/da9a9bac/lib/java/src/org/apache/thrift/server/TThreadPoolServer.java
----------------------------------------------------------------------
diff --git a/lib/java/src/org/apache/thrift/server/TThreadPoolServer.java 
b/lib/java/src/org/apache/thrift/server/TThreadPoolServer.java
index 90d5e5b..53c20e9 100644
--- a/lib/java/src/org/apache/thrift/server/TThreadPoolServer.java
+++ b/lib/java/src/org/apache/thrift/server/TThreadPoolServer.java
@@ -145,22 +145,40 @@ public class TThreadPoolServer extends TServer {
                                   executorQueue);
   }
 
-
-  public void serve() {
-    try {
+  protected ExecutorService getExecutorService() {
+    return executorService_;
+  }
+  
+  protected boolean preServe() {
+       try {
       serverTransport_.listen();
     } catch (TTransportException ttx) {
       LOGGER.error("Error occurred during listening.", ttx);
-      return;
+      return false;
     }
 
     // Run the preServe event
     if (eventHandler_ != null) {
       eventHandler_.preServe();
     }
-
     stopped_ = false;
     setServing(true);
+    
+    return true;
+  }
+
+  public void serve() {
+       if (!preServe()) {
+               return;
+       }
+
+       execute();
+       waitForShutdown();
+    
+    setServing(false);
+  }
+  
+  protected void execute() {
     int failureCount = 0;
     while (!stopped_) {
       try {
@@ -213,8 +231,10 @@ public class TThreadPoolServer extends TServer {
         }
       }
     }
-
-    executorService_.shutdown();
+  }
+  
+  protected void waitForShutdown() {
+       executorService_.shutdown();
 
     // Loop until awaitTermination finally does return without a interrupted
     // exception. If we don't do this, then we'll shut down prematurely. We 
want
@@ -232,7 +252,6 @@ public class TThreadPoolServer extends TServer {
         now = newnow;
       }
     }
-    setServing(false);
   }
 
   public void stop() {

Reply via email to