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