[ 
https://issues.apache.org/jira/browse/CASSANDRA-9070?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14388934#comment-14388934
 ] 

Yuki Morishita commented on CASSANDRA-9070:
-------------------------------------------

You are right. It's {{BackgroundCompactionTask}} that's queued.
Cancelling minor compaction seems good with the patch.
+1.

> Race in cancelling compactions
> ------------------------------
>
>                 Key: CASSANDRA-9070
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-9070
>             Project: Cassandra
>          Issue Type: Bug
>            Reporter: Marcus Eriksson
>            Assignee: Marcus Eriksson
>             Fix For: 2.0.14
>
>         Attachments: 
> 0001-check-if-we-are-paused-before-starting-compaction.patch
>
>
> seems we might have a race situation when cancelling compactions
> currently we do the following to ensure that we don't start any new 
> compactions when we try to do markAllCompacting()
> # pause compactions - this makes sure we don't create any new compaction 
> tasks from the compaction strategies
> # cancel any ongoing compactions - compactions register themselves with the 
> CompactionMetrics and then, when cancelling we get all compactions here, and 
> tell them to stop
> Problem is that there is a window between when the CompactionTask is created 
> and when it is registered in CompactionMetrics meaning with a bit of bad 
> luck, we could have a situation like this:
> # we finish a compaction and create a new CompactionTask from the compaction 
> strategy
> # we pause the compaction strategies to not create any new CompactionTasks
> # we cancel all ongoing compactions
> # The CompactionTask created in #1 above registers itself in 
> CompactionMetrics and misses that it should be cancelled



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

Reply via email to