|
@ -80,12 +80,15 @@ func batchVacuumVolumeCommit(vl *VolumeLayout, vid storage.VolumeId, locationlis |
|
|
return isCommitSuccess |
|
|
return isCommitSuccess |
|
|
} |
|
|
} |
|
|
func (t *Topology) Vacuum(garbageThreshold string) int { |
|
|
func (t *Topology) Vacuum(garbageThreshold string) int { |
|
|
|
|
|
glog.V(0).Infoln("Start vacuum on demand") |
|
|
for _, col := range t.collectionMap.Items { |
|
|
for _, col := range t.collectionMap.Items { |
|
|
c := col.(*Collection) |
|
|
c := col.(*Collection) |
|
|
|
|
|
glog.V(0).Infoln("vacuum on collection:", c.Name) |
|
|
for _, vl := range c.storageType2VolumeLayout.Items { |
|
|
for _, vl := range c.storageType2VolumeLayout.Items { |
|
|
if vl != nil { |
|
|
if vl != nil { |
|
|
volumeLayout := vl.(*VolumeLayout) |
|
|
volumeLayout := vl.(*VolumeLayout) |
|
|
for vid, locationlist := range volumeLayout.vid2location { |
|
|
for vid, locationlist := range volumeLayout.vid2location { |
|
|
|
|
|
glog.V(0).Infoln("vacuum on collection:", c.Name, "volume", vid) |
|
|
if batchVacuumVolumeCheck(volumeLayout, vid, locationlist, garbageThreshold) { |
|
|
if batchVacuumVolumeCheck(volumeLayout, vid, locationlist, garbageThreshold) { |
|
|
if batchVacuumVolumeCompact(volumeLayout, vid, locationlist) { |
|
|
if batchVacuumVolumeCompact(volumeLayout, vid, locationlist) { |
|
|
batchVacuumVolumeCommit(volumeLayout, vid, locationlist) |
|
|
batchVacuumVolumeCommit(volumeLayout, vid, locationlist) |
|
|