2010/12/1 Ying Tang <ivytang0812@gmail.com>
Every time cassandra creates a new sstable , it will call the CompactionManager.submitMinorIfNeeded  ? And if the number of memtables is beyond  MinimumCompactionThreshold  , the minor compaction will be called.
And there is also a method named CompactionManager.submitMajor , and the call relationship is :
 
NodeCmd -- > NodeProbe -->StorageService.forceTableCompaction --> Table.forceCompaction -->CompactionManager.performMajor --> CompactionManager.submitMajor
                                                                          ColumnFamilyStore.forceMajorCompaction --> CompactionManager.performMajor --> CompactionManager.submitMajor
                                                                                                                                              HintedHandOffManager                 --> CompactionManager.submitMajor
 
So i have 3 questions:
1. Once a new sstable has been created ,  CompactionManager.submitMinorIfNeeded  will be called , minorCompaction maybe called .
    But when will the majorCompaction be called ? Just the NodeCmd ?

Yes, majorCompaction must be called manually from NodeCmd
 
2. Which jobs will minorCompaction and majorCompaction do ?
    Will minorCompaction delete the data that have been marked as deleted ?
    And how about the major compaction ?

Compaction only mark sstables as deleted. Deletion will be done when there are full gc, or node restarted.
 
3. When gc be called ? Every time compaction been called?

GC has nothing to do with compaction, you may mistake the two conceptions
 
 
 
 
--
Best regards,

Ivy Tang






--
Best Regards,
Chen Xinli