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 2009/09/25 22:52:24 UTC

svn commit: r819004 - in /incubator/cassandra/branches/cassandra-0.4/src/java/org/apache/cassandra/concurrent: DebuggableScheduledThreadPoolExecutor.java DebuggableThreadPoolExecutor.java

Author: jbellis
Date: Fri Sep 25 20:52:23 2009
New Revision: 819004

URL: http://svn.apache.org/viewvc?rev=819004&view=rev
Log:
revert 812227, which introduced a regression to DebuggableScheduledThreadPoolExecutor.  patch by jbellis for CASSANDRA-455.

Modified:
    incubator/cassandra/branches/cassandra-0.4/src/java/org/apache/cassandra/concurrent/DebuggableScheduledThreadPoolExecutor.java
    incubator/cassandra/branches/cassandra-0.4/src/java/org/apache/cassandra/concurrent/DebuggableThreadPoolExecutor.java

Modified: incubator/cassandra/branches/cassandra-0.4/src/java/org/apache/cassandra/concurrent/DebuggableScheduledThreadPoolExecutor.java
URL: http://svn.apache.org/viewvc/incubator/cassandra/branches/cassandra-0.4/src/java/org/apache/cassandra/concurrent/DebuggableScheduledThreadPoolExecutor.java?rev=819004&r1=819003&r2=819004&view=diff
==============================================================================
--- incubator/cassandra/branches/cassandra-0.4/src/java/org/apache/cassandra/concurrent/DebuggableScheduledThreadPoolExecutor.java (original)
+++ incubator/cassandra/branches/cassandra-0.4/src/java/org/apache/cassandra/concurrent/DebuggableScheduledThreadPoolExecutor.java Fri Sep 25 20:52:23 2009
@@ -46,11 +46,29 @@
     public void afterExecute(Runnable r, Throwable t)
     {
         super.afterExecute(r,t);
-
-        DebuggableThreadPoolExecutor.logFutureExceptions(r);
-        if (t != null)
-        {
-            logger_.error("Error in ThreadPoolExecutor", t);
+        if ( t != null )
+        {  
+            Context ctx = ThreadLocalContext.get();
+            if ( ctx != null )
+            {
+                Object object = ctx.get(r.getClass().getName());
+                
+                if ( object != null )
+                {
+                    logger_.info("**** In afterExecute() " + t.getClass().getName() + " occured while working with " + object + " ****");
+                }
+                else
+                {
+                    logger_.info("**** In afterExecute() " + t.getClass().getName() + " occured ****");
+                }
+            }
+            
+            Throwable cause = t.getCause();
+            if ( cause != null )
+            {
+                logger_.info( LogUtil.throwableToString(cause) );
+            }
+            logger_.info( LogUtil.throwableToString(t) );
         }
     }
 }

Modified: incubator/cassandra/branches/cassandra-0.4/src/java/org/apache/cassandra/concurrent/DebuggableThreadPoolExecutor.java
URL: http://svn.apache.org/viewvc/incubator/cassandra/branches/cassandra-0.4/src/java/org/apache/cassandra/concurrent/DebuggableThreadPoolExecutor.java?rev=819004&r1=819003&r2=819004&view=diff
==============================================================================
--- incubator/cassandra/branches/cassandra-0.4/src/java/org/apache/cassandra/concurrent/DebuggableThreadPoolExecutor.java (original)
+++ incubator/cassandra/branches/cassandra-0.4/src/java/org/apache/cassandra/concurrent/DebuggableThreadPoolExecutor.java Fri Sep 25 20:52:23 2009
@@ -79,29 +79,35 @@
     {
         super.afterExecute(r,t);
 
-        logFutureExceptions(r);
-        if (t != null)
-        {
-            logger_.error("Error in ThreadPoolExecutor", t);
-        }
-    }
-
-    public static void logFutureExceptions(Runnable r)
-    {
-        if (r instanceof FutureTask)
-        {
+        if (r instanceof FutureTask) {
+            assert t == null;
             try
             {
                 ((FutureTask)r).get();
             }
             catch (InterruptedException e)
             {
-                throw new AssertionError(e);
+                throw new RuntimeException(e);
             }
             catch (ExecutionException e)
             {
-                logger_.error("Error in executor futuretask", e);
+                t = e;
             }
         }
+
+        if ( t != null )
+        {  
+            Context ctx = ThreadLocalContext.get();
+            if ( ctx != null )
+            {
+                Object object = ctx.get(r.getClass().getName());
+                
+                if ( object != null )
+                {
+                    logger_.error("In afterExecute() " + t.getClass().getName() + " occured while working with " + object);
+                }
+            }
+            logger_.error("Error in ThreadPoolExecutor", t);
+        }
     }
 }