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

David Capwell commented on CASSANDRA-15674:
-------------------------------------------

to handle this I added 2 hooks into the transaction: onCommit, onRollback.  
Both the hooks apply the update, but apply different updates.  onCommit deletes 
the whole file since the transaction will add it back with the latest size, 
onRollback removes the diff (the disk mutation is done outside of the 
transaction, so still need to apply).

> liveDiskSpaceUsed and totalDiskSpaceUsed get corrupted if 
> IndexSummaryRedistribution gets interrupted
> -----------------------------------------------------------------------------------------------------
>
>                 Key: CASSANDRA-15674
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-15674
>             Project: Cassandra
>          Issue Type: Bug
>          Components: Local/Compaction, Observability/Metrics
>            Reporter: David Capwell
>            Assignee: David Capwell
>            Priority: Normal
>             Fix For: 4.0-alpha
>
>
> IndexSummaryRedistribution is a compaction task and as such extends Holder 
> and supports cancelation by throwing a CompactionInterruptedException.  The 
> issue is that IndexSummaryRedistribution tries to use transactions, but 
> mutates the sstable in-place; transaction is unable to roll back.
> This would be fine (only updates summary) if it wasn’t for the fact the task 
> attempts to also mutate the two metrics liveDiskSpaceUsed and 
> totalDiskSpaceUsed, since these can’t be rolled back any cancelation could 
> corrupt these metrics.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org

Reply via email to