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();
}
};