THRIFT-2274 java: TNonblockingServer and TThreadedSelectorServer do not close their...
authorRoger Meier <roger@apache.org>
Sun, 8 Dec 2013 19:59:51 +0000 (20:59 +0100)
committerRoger Meier <roger@apache.org>
Sun, 8 Dec 2013 19:59:51 +0000 (20:59 +0100)
Patch:  Thomas Kielbus

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

index a6e7476..3fc8672 100644 (file)
@@ -164,6 +164,11 @@ public class TNonblockingServer extends AbstractNonblockingServer {
       } catch (Throwable t) {
         LOGGER.error("run() exiting due to uncaught error", t);
       } finally {
+        try {
+          selector.close();
+        } catch (IOException e) {
+          LOGGER.error("Got an IOException while closing selector!", e);
+        }
         stopped_ = true;
       }
     }
index 8a68632..7c5ec4f 100644 (file)
@@ -381,6 +381,11 @@ public class TThreadedSelectorServer extends AbstractNonblockingServer {
       } catch (Throwable t) {
         LOGGER.error("run() exiting due to uncaught error", t);
       } finally {
+        try {
+          acceptSelector.close();
+        } catch (IOException e) {
+          LOGGER.error("Got an IOException while closing accept selector!", e);
+        }
         // This will wake up the selector threads
         TThreadedSelectorServer.this.stop();
       }
@@ -547,6 +552,11 @@ public class TThreadedSelectorServer extends AbstractNonblockingServer {
       } catch (Throwable t) {
         LOGGER.error("run() exiting due to uncaught error", t);
       } finally {
+        try {
+          selector.close();
+        } catch (IOException e) {
+          LOGGER.error("Got an IOException while closing selector!", e);
+        }
         // This will wake up the accept thread and the other selector threads
         TThreadedSelectorServer.this.stop();
       }