You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by jb...@apache.org on 2011/03/15 20:33:36 UTC

svn commit: r1081914 - in /cassandra/branches/cassandra-0.6: CHANGES.txt src/java/org/apache/cassandra/concurrent/DebuggableThreadPoolExecutor.java src/java/org/apache/cassandra/thrift/CassandraDaemon.java

Author: jbellis
Date: Tue Mar 15 19:33:36 2011
New Revision: 1081914

URL: http://svn.apache.org/viewvc?rev=1081914&view=rev
Log:
shut down server for OOM on a Thrift thread
patch by jbellis; reviewed by tjake for CASSANDRA-2269

Modified:
    cassandra/branches/cassandra-0.6/CHANGES.txt
    cassandra/branches/cassandra-0.6/src/java/org/apache/cassandra/concurrent/DebuggableThreadPoolExecutor.java
    cassandra/branches/cassandra-0.6/src/java/org/apache/cassandra/thrift/CassandraDaemon.java

Modified: cassandra/branches/cassandra-0.6/CHANGES.txt
URL: http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.6/CHANGES.txt?rev=1081914&r1=1081913&r2=1081914&view=diff
==============================================================================
--- cassandra/branches/cassandra-0.6/CHANGES.txt (original)
+++ cassandra/branches/cassandra-0.6/CHANGES.txt Tue Mar 15 19:33:36 2011
@@ -1,3 +1,7 @@
+0.6.13
+ * shut down server for OOM on a Thrift thread (CASSANDRA-2269)
+
+
 0.6.12
  * include digest responses in dynamic snitch latencies (CASSANDRA-2085)
  * fix range slice ConsistencyLevel > ONE (CASSANDRA-2081)

Modified: cassandra/branches/cassandra-0.6/src/java/org/apache/cassandra/concurrent/DebuggableThreadPoolExecutor.java
URL: http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.6/src/java/org/apache/cassandra/concurrent/DebuggableThreadPoolExecutor.java?rev=1081914&r1=1081913&r2=1081914&view=diff
==============================================================================
--- cassandra/branches/cassandra-0.6/src/java/org/apache/cassandra/concurrent/DebuggableThreadPoolExecutor.java (original)
+++ cassandra/branches/cassandra-0.6/src/java/org/apache/cassandra/concurrent/DebuggableThreadPoolExecutor.java Tue Mar 15 19:33:36 2011
@@ -74,10 +74,15 @@ public class DebuggableThreadPoolExecuto
         }
     }
 
+    @Override
     public void afterExecute(Runnable r, Throwable t)
     {
         super.afterExecute(r,t);
+        logExceptionsAfterExecute(r, t);
+    }
 
+    public static void logExceptionsAfterExecute(Runnable r, Throwable t)
+    {
         // exceptions wrapped by FutureTask
         if (r instanceof FutureTask)
         {
@@ -91,7 +96,9 @@ public class DebuggableThreadPoolExecuto
             }
             catch (ExecutionException e)
             {
-                if (Thread.getDefaultUncaughtExceptionHandler() != null)
+                if (Thread.getDefaultUncaughtExceptionHandler() == null)
+                    logger.error("Error in ThreadPoolExecutor", e.getCause());
+                else
                     Thread.getDefaultUncaughtExceptionHandler().uncaughtException(Thread.currentThread(), e.getCause());
             }
         }
@@ -99,7 +106,10 @@ public class DebuggableThreadPoolExecuto
         // exceptions for non-FutureTask runnables [i.e., added via execute() instead of submit()]
         if (t != null)
         {
-            logger.error("Error in ThreadPoolExecutor", t);
+            if (Thread.getDefaultUncaughtExceptionHandler() == null)
+                logger.error("Error in ThreadPoolExecutor", t);
+            else
+                Thread.getDefaultUncaughtExceptionHandler().uncaughtException(Thread.currentThread(), t);
         }
     }
 }

Modified: cassandra/branches/cassandra-0.6/src/java/org/apache/cassandra/thrift/CassandraDaemon.java
URL: http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.6/src/java/org/apache/cassandra/thrift/CassandraDaemon.java?rev=1081914&r1=1081913&r2=1081914&view=diff
==============================================================================
--- cassandra/branches/cassandra-0.6/src/java/org/apache/cassandra/thrift/CassandraDaemon.java (original)
+++ cassandra/branches/cassandra-0.6/src/java/org/apache/cassandra/thrift/CassandraDaemon.java Tue Mar 15 19:33:36 2011
@@ -30,6 +30,7 @@ import java.util.concurrent.TimeUnit;
 import org.apache.log4j.Logger;
 import org.apache.log4j.PropertyConfigurator;
 
+import org.apache.cassandra.concurrent.DebuggableThreadPoolExecutor;
 import org.apache.cassandra.config.ConfigurationException;
 import org.apache.cassandra.config.DatabaseDescriptor;
 import org.apache.cassandra.db.CompactionManager;
@@ -170,6 +171,7 @@ public class CassandraDaemon
             protected void afterExecute(Runnable r, Throwable t)
             {
                 super.afterExecute(r, t);
+                DebuggableThreadPoolExecutor.logExceptionsAfterExecute(r, t);
                 cassandraServer.logout();
             }
         };