add writable checking

fix https://github.com/chrislusf/seaweedfs/issues/405
This commit is contained in:
Chris Lu 2016-11-26 12:14:06 -08:00
parent dcaf1796fe
commit 9ba52db585

View file

@ -86,7 +86,14 @@ func (t *Topology) Vacuum(garbageThreshold string) int {
for _, vl := range c.storageType2VolumeLayout.Items() { for _, vl := range c.storageType2VolumeLayout.Items() {
if vl != nil { if vl != nil {
volumeLayout := vl.(*VolumeLayout) volumeLayout := vl.(*VolumeLayout)
writableSet := make(map[storage.VolumeId]bool)
for _, id := range volumeLayout.writables {
writableSet[id] = true
}
for vid, locationlist := range volumeLayout.vid2location { for vid, locationlist := range volumeLayout.vid2location {
if _, isWritable := writableSet[vid]; !isWritable {
continue
}
glog.V(0).Infof("check vacuum on collection:%s volume:%d", c.Name, vid) glog.V(0).Infof("check vacuum on collection:%s volume:%d", c.Name, vid)
if batchVacuumVolumeCheck(volumeLayout, vid, locationlist, garbageThreshold) { if batchVacuumVolumeCheck(volumeLayout, vid, locationlist, garbageThreshold) {
if batchVacuumVolumeCompact(volumeLayout, vid, locationlist) { if batchVacuumVolumeCompact(volumeLayout, vid, locationlist) {