THRIFT-2551 OutOfMemoryError "unable to create new native thread" kills serve thread
authorRoger Meier <roger@apache.org>
Thu, 29 May 2014 14:25:22 +0000 (16:25 +0200)
committerRoger Meier <roger@apache.org>
Thu, 29 May 2014 14:25:22 +0000 (16:25 +0200)
Github Pull Request: This closes #112

Patch: Fuud

lib/java/src/org/apache/thrift/server/TThreadPoolServer.java [changed mode: 0644->0755]

old mode 100644 (file)
new mode 100755 (executable)
index 7229d89..488d17f
@@ -139,6 +139,16 @@ public class TThreadPoolServer extends TServer {
               Thread.currentThread().interrupt();
               break;
             }
+          } catch(OutOfMemoryError ex) {
+            LOGGER.warn("ExecutorService throws OutOfMemoryError "+ ex.getMessage() + (++rejections) +
+                " times(s)", ex);
+            try {
+              TimeUnit.SECONDS.sleep(1);
+            } catch (InterruptedException e) {
+              LOGGER.warn("Interrupted while waiting to place client on executor queue.");
+              Thread.currentThread().interrupt();
+              break;
+            }
           }
         }
       } catch (TTransportException ttx) {