THRIFT-1795 Race condition in TThreadedServerPool java implementation
authorRoger Meier <roger@apache.org>
Sun, 23 Dec 2012 16:20:20 +0000 (17:20 +0100)
committerRoger Meier <roger@apache.org>
Sun, 23 Dec 2012 16:20:20 +0000 (17:20 +0100)
Patch: Venkat Ranganathan

lib/java/src/org/apache/thrift/server/TNonblockingServer.java
lib/java/src/org/apache/thrift/server/TSimpleServer.java
lib/java/src/org/apache/thrift/server/TThreadPoolServer.java
lib/java/src/org/apache/thrift/server/TThreadedSelectorServer.java

index dccae52..169ae5c 100644 (file)
@@ -48,7 +48,8 @@ public class TNonblockingServer extends AbstractNonblockingServer {
   }
 
   // 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 @@ public class TNonblockingServer extends AbstractNonblockingServer {
     // start the selector
     try {
       selectAcceptThread_ = new SelectAcceptThread((TNonblockingServerTransport)serverTransport_);
-      stopped_ = false;
       selectAcceptThread_.start();
       return true;
     } catch (IOException e) {
index 6e92801..4dfc176 100644 (file)
@@ -35,14 +35,14 @@ public class TSimpleServer extends TServer {
 
   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) {
index 9a68c76..19e51af 100644 (file)
@@ -73,7 +73,8 @@ public class TThreadPoolServer extends TServer {
   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;
 
index 04179e6..23ec842 100644 (file)
@@ -181,7 +181,8 @@ public class TThreadedSelectorServer extends AbstractNonblockingServer {
   }
 
   // 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 @@ public class TThreadedSelectorServer extends AbstractNonblockingServer {
       }
       acceptThread = new AcceptThread((TNonblockingServerTransport) serverTransport_,
         createSelectorThreadLoadBalancer(selectorThreads));
-      stopped_ = false;
       for (SelectorThread thread : selectorThreads) {
         thread.start();
       }