THRIFT-1795 Race condition in TThreadedServerPool java implementation
Patch: Venkat Ranganathan
diff --git a/lib/java/src/org/apache/thrift/server/TNonblockingServer.java b/lib/java/src/org/apache/thrift/server/TNonblockingServer.java
index dccae52..169ae5c 100644
--- a/lib/java/src/org/apache/thrift/server/TNonblockingServer.java
+++ b/lib/java/src/org/apache/thrift/server/TNonblockingServer.java
@@ -48,7 +48,8 @@
}
// Flag for stopping the server
- private volatile boolean stopped_ = true;
+ // Please see THRIFT-1795 for the usage of this flag
+ private volatile boolean stopped_ = false;
private SelectAcceptThread selectAcceptThread_;
@@ -68,7 +69,6 @@
// start the selector
try {
selectAcceptThread_ = new SelectAcceptThread((TNonblockingServerTransport)serverTransport_);
- stopped_ = false;
selectAcceptThread_.start();
return true;
} catch (IOException e) {
diff --git a/lib/java/src/org/apache/thrift/server/TSimpleServer.java b/lib/java/src/org/apache/thrift/server/TSimpleServer.java
index 6e92801..4dfc176 100644
--- a/lib/java/src/org/apache/thrift/server/TSimpleServer.java
+++ b/lib/java/src/org/apache/thrift/server/TSimpleServer.java
@@ -35,14 +35,14 @@
private static final Logger LOGGER = LoggerFactory.getLogger(TSimpleServer.class.getName());
- private boolean stopped_ = false;
+ // Please see THRIFT-1795 for the usage of this flag
+ private volatile boolean stopped_ = false;
public TSimpleServer(AbstractServerArgs args) {
super(args);
}
public void serve() {
- stopped_ = false;
try {
serverTransport_.listen();
} catch (TTransportException ttx) {
diff --git a/lib/java/src/org/apache/thrift/server/TThreadPoolServer.java b/lib/java/src/org/apache/thrift/server/TThreadPoolServer.java
index 9a68c76..19e51af 100644
--- a/lib/java/src/org/apache/thrift/server/TThreadPoolServer.java
+++ b/lib/java/src/org/apache/thrift/server/TThreadPoolServer.java
@@ -73,7 +73,8 @@
private ExecutorService executorService_;
// Flag for stopping the server
- private volatile boolean stopped_;
+ // Please see THRIFT-1795 for the usage of this flag
+ private volatile boolean stopped_ = false;
private final TimeUnit stopTimeoutUnit;
diff --git a/lib/java/src/org/apache/thrift/server/TThreadedSelectorServer.java b/lib/java/src/org/apache/thrift/server/TThreadedSelectorServer.java
index 04179e6..23ec842 100644
--- a/lib/java/src/org/apache/thrift/server/TThreadedSelectorServer.java
+++ b/lib/java/src/org/apache/thrift/server/TThreadedSelectorServer.java
@@ -181,7 +181,8 @@
}
// Flag for stopping the server
- private volatile boolean stopped_ = true;
+ // Please see THRIFT-1795 for the usage of this flag
+ private volatile boolean stopped_ = false;
// The thread handling all accepts
private AcceptThread acceptThread;
@@ -220,7 +221,6 @@
}
acceptThread = new AcceptThread((TNonblockingServerTransport) serverTransport_,
createSelectorThreadLoadBalancer(selectorThreads));
- stopped_ = false;
for (SelectorThread thread : selectorThreads) {
thread.start();
}