Sebastien Bonnet created CASSANDRA-12926:
--------------------------------------------

             Summary: RejectedExecutionException logged as SEVERE when task 
already completed
                 Key: CASSANDRA-12926
                 URL: https://issues.apache.org/jira/browse/CASSANDRA-12926
             Project: Cassandra
          Issue Type: Bug
          Components: Streaming and Messaging
         Environment: 2.1.16
            Reporter: Sebastien Bonnet
            Priority: Minor


The issue is triggered by the MessagingService expiring a repair Snapshot which 
Executor has already been shutdown and is an a TERMINATED state. 

In this case trying to complete the SnapshotTask has little value, since the 
Task is already completed. Yet the error is reported as SEVERE by the guava 
library and shows in the journal logs. 

Perhaps the Callback could check if the task is already complete before setting 
the exception?
https://github.com/apache/cassandra/blob/cassandra-2.1.16/src/java/org/apache/cassandra/repair/SnapshotTask.java#L78
 

{noformat}
Nov 15, 2016 8:49:31 PM com.google.common.util.concurrent.ExecutionList 
executeListener
SEVERE: RuntimeException while executing runnable 
com.google.common.util.concurrent.Futures$4@3df75dd9 with executor 
com.google.common.util.concurrent.MoreExecutors$ListeningDecorator@370f36a9
java.util.concurrent.RejectedExecutionException: Task 
com.google.common.util.concurrent.Futures$4@3df75dd9 rejected from 
java.util.concurrent.ThreadPoolExecutor@3330a417[Terminated, pool size = 0, 
active threads = 0, queued tasks = 0, completed tasks = 17]
        at 
java.util.concurrent.ThreadPoolExecutor$AbortPolicy.rejectedExecution(ThreadPoolExecutor.java:2047)
        at 
java.util.concurrent.ThreadPoolExecutor.reject(ThreadPoolExecutor.java:823)
        at 
java.util.concurrent.ThreadPoolExecutor.execute(ThreadPoolExecutor.java:1369)
        at 
com.google.common.util.concurrent.MoreExecutors$ListeningDecorator.execute(MoreExecutors.java:484)
        at 
com.google.common.util.concurrent.ExecutionList.executeListener(ExecutionList.java:156)
        at 
com.google.common.util.concurrent.ExecutionList.execute(ExecutionList.java:145)
        at 
com.google.common.util.concurrent.AbstractFuture.setException(AbstractFuture.java:202)
        at 
com.google.common.util.concurrent.Futures$CombinedFuture.setExceptionAndMaybeLog(Futures.java:1566)
        at 
com.google.common.util.concurrent.Futures$CombinedFuture.setOneValue(Futures.java:1617)
        at 
com.google.common.util.concurrent.Futures$CombinedFuture.access$400(Futures.java:1470)
        at 
com.google.common.util.concurrent.Futures$CombinedFuture$2.run(Futures.java:1548)
        at 
com.google.common.util.concurrent.MoreExecutors$SameThreadExecutorService.execute(MoreExecutors.java:297)
        at 
com.google.common.util.concurrent.ExecutionList.executeListener(ExecutionList.java:156)
        at 
com.google.common.util.concurrent.ExecutionList.execute(ExecutionList.java:145)
        at 
com.google.common.util.concurrent.AbstractFuture.setException(AbstractFuture.java:202)
        at 
org.apache.cassandra.repair.SnapshotTask.access$200(SnapshotTask.java:34)
        at 
org.apache.cassandra.repair.SnapshotTask$SnapshotCallback.onFailure(SnapshotTask.java:78)
        at 
org.apache.cassandra.net.MessagingService$5$1.run(MessagingService.java:374)
        at 
java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at java.lang.Thread.run(Thread.java:745)
{noformat}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to