shell: volume.fsck deletes a volume is the volume has only orphaned data.

fix https://github.com/chrislusf/seaweedfs/issues/2190
This commit is contained in:
Chris Lu 2021-07-12 11:22:00 -07:00
parent 297b41266b
commit 01adc567aa

View file

@ -5,6 +5,7 @@ import (
"context" "context"
"flag" "flag"
"fmt" "fmt"
"github.com/chrislusf/seaweedfs/weed/storage/needle"
"io" "io"
"io/ioutil" "io/ioutil"
"math" "math"
@ -214,11 +215,17 @@ func (c *commandVolumeFsck) findExtraChunksInVolumeServers(volumeIdToVInfo map[u
if vinfo.isEcVolume { if vinfo.isEcVolume {
fmt.Fprintf(writer, "Skip purging for Erasure Coded volumes.\n") fmt.Fprintf(writer, "Skip purging for Erasure Coded volumes.\n")
} }
if inUseCount == 0 {
if err := deleteVolume(c.env.option.GrpcDialOption, needle.VolumeId(volumeId), vinfo.server); err != nil {
return fmt.Errorf("delete volume %d: %v\n", volumeId, err)
}
} else {
if err := c.purgeFileIdsForOneVolume(volumeId, orphanFileIds, writer); err != nil { if err := c.purgeFileIdsForOneVolume(volumeId, orphanFileIds, writer); err != nil {
return fmt.Errorf("purge for volume %d: %v\n", volumeId, err) return fmt.Errorf("purge for volume %d: %v\n", volumeId, err)
} }
} }
} }
}
if totalOrphanChunkCount == 0 { if totalOrphanChunkCount == 0 {
fmt.Fprintf(writer, "no orphan data\n") fmt.Fprintf(writer, "no orphan data\n")