[ 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