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() {