[ https://issues.apache.org/jira/browse/CASSANDRA-2061?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13084958#comment-13084958 ]
Jonathan Ellis commented on CASSANDRA-2061: ------------------------------------------- Figured out the problem. Here's the new version of logExceptionsAfterExecute that fixes it: {code} public static void logExceptionsAfterExecute(Runnable r, Throwable t) { - // exceptions wrapped by FutureTask - if (r instanceof FutureTask<?>) + // Check for exceptions wrapped by FutureTask. We do this by calling get(), which will + // cause it to throw any saved exception. + // + // Complicating things, calling get() on a ScheduledFutureTask will block until the task + // is cancelled. Hence, the extra isDone check beforehand. + if ((r instanceof Future<?>) && ((Future<?>) r).isDone()) { try { - ((FutureTask<?>) r).get(); + ((Future<?>) r).get(); } {code} > Missing logging for some exceptions > ----------------------------------- > > Key: CASSANDRA-2061 > URL: https://issues.apache.org/jira/browse/CASSANDRA-2061 > Project: Cassandra > Issue Type: Bug > Components: Core > Reporter: Stu Hood > Assignee: Jonathan Ellis > Priority: Minor > Fix For: 1.0 > > Attachments: 2061-0.7.txt, 2061-v3.txt, 2061.txt > > Original Estimate: 8h > Remaining Estimate: 8h > > {quote}Since you are using ScheduledThreadPoolExecutor.schedule(), the > exception was swallowed by the FutureTask. > You will have to perform a get() method on the ScheduledFuture, and you will > get ExecutionException if there was any exception occured in run().{quote} -- This message is automatically generated by JIRA. For more information on JIRA, see: http://www.atlassian.com/software/jira