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