[ 
https://issues.apache.org/jira/browse/CASSANDRA-2521?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Sylvain Lebresne updated CASSANDRA-2521:
----------------------------------------

    Attachment: 2521-v4.txt

bq. why does DT.removeOldSSTableSize acquire/release around markCompacted?

For the record, this is because this make the logic in SSTR.markCompacted and 
SSTR.releaseReference easier. If caller of markCompacted don't acquire a 
reference, markCompacted will have to deal with two cases: either no thread 
have a reference acquired, in which case the current thread should schedule the 
deletion, or other thread have a reference in which case it should let them the 
task of scheduling the deletion where they are done. But making this thread 
safe (so that we don't schedule twice or forget to schedule the deletion if the 
last thread holding a reference release it at the same time as the 
markCompacted is called) is a bit of annoying. Acquire a reference when 
markCompacted is called make this easier and move all the logic in 
releaseReference.

bq. I believe currently, files are not deleted until the entire repair is 
finished

The file should get deleted as soon as they are not useful anymore, that is as 
soon as they have been streamed. That being said, there was a bug, see below.

bq. Did another repair overnight, one minor compaction included some 20 small 
sstables, all of them remains as well as a few from other compactions and the 
files from the repairs described before

Yes, I did find a place where we were not correctly decrementing the reference 
count for streaming (repair was not unmarking sstable that were not streamed 
because they had nothing for the range to transfer). Attached v4 patch should 
fix that.

bq. As for the last version of this patch, a quick look tonight shows access 
problems with markCurrentViewReferenced()

v4 is based on v3 and fixes this (it reintroduce a specific method instead of 
making View public because I'm not too keen on doing that, but that can change 
if someone feels strongly about that).


v4 also fix a bug in StreamingTransferTest and another one related to null 
segment in the unmmapping cleanup code.

> Move away from Phantom References for Compaction/Memtable
> ---------------------------------------------------------
>
>                 Key: CASSANDRA-2521
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-2521
>             Project: Cassandra
>          Issue Type: Improvement
>          Components: Core
>            Reporter: Chris Goffinet
>            Assignee: Sylvain Lebresne
>             Fix For: 1.0
>
>         Attachments: 
> 0001-Use-reference-counting-to-decide-when-a-sstable-can-.patch, 
> 0001-Use-reference-counting-to-decide-when-a-sstable-can-v2.patch, 
> 0002-Force-unmapping-files-before-deletion-v2.patch, 2521-v3.txt, 2521-v4.txt
>
>
> http://wiki.apache.org/cassandra/MemtableSSTable
> Let's move to using reference counting instead of relying on GC to be called 
> in StorageService.

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to