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/01/14 21:46:36 UTC
svn commit: r1059160 -
/cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/concurrent/RetryingScheduledThreadPoolExecutor.java
Author: jbellis
Date: Fri Jan 14 20:46:35 2011
New Revision: 1059160
URL: http://svn.apache.org/viewvc?rev=1059160&view=rev
Log:
call Thread.getDefaultUncaughtExceptionHandler instead of logger.error in on scheduled task failure
patch by jbellis
Modified:
cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/concurrent/RetryingScheduledThreadPoolExecutor.java
Modified: cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/concurrent/RetryingScheduledThreadPoolExecutor.java
URL: http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/concurrent/RetryingScheduledThreadPoolExecutor.java?rev=1059160&r1=1059159&r2=1059160&view=diff
==============================================================================
--- cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/concurrent/RetryingScheduledThreadPoolExecutor.java (original)
+++ cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/concurrent/RetryingScheduledThreadPoolExecutor.java Fri Jan 14 20:46:35 2011
@@ -27,8 +27,6 @@ import org.apache.log4j.Logger;
public class RetryingScheduledThreadPoolExecutor extends ScheduledThreadPoolExecutor
{
- protected static Logger logger = Logger.getLogger(RetryingScheduledThreadPoolExecutor.class);
-
public RetryingScheduledThreadPoolExecutor(String threadPoolName, int priority)
{
this(1, threadPoolName, priority);
@@ -50,6 +48,11 @@ public class RetryingScheduledThreadPool
return new LoggingScheduledFuture<V>(task);
}
+ /**
+ * Wraps RunnableScheduledFuture.run to log an error on exception rather than kill the executor thread.
+ * All the other methods just wrap the RSF counterpart.
+ * @param <V>
+ */
private static class LoggingScheduledFuture<V> implements RunnableScheduledFuture<V>
{
private final RunnableScheduledFuture<V> task;
@@ -82,7 +85,8 @@ public class RetryingScheduledThreadPool
}
catch (Exception e)
{
- logger.error("error running scheduled task", e);
+ if (Thread.getDefaultUncaughtExceptionHandler() != null)
+ Thread.getDefaultUncaughtExceptionHandler().uncaughtException(Thread.currentThread(), e.getCause());
}
}