2010/12/1 Ying Tang <email@example.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