mirror of
https://github.com/seaweedfs/seaweedfs.git
synced 2024-01-19 02:48:24 +00:00
shell: volume.check.disk adds optional slow mode
fix https://github.com/chrislusf/seaweedfs/issues/1930
This commit is contained in:
parent
288369cfc7
commit
8eb14967ef
|
@ -46,6 +46,7 @@ func (c *commandVolumeCheckDisk) Do(args []string, commandEnv *CommandEnv, write
|
||||||
}
|
}
|
||||||
|
|
||||||
fsckCommand := flag.NewFlagSet(c.Name(), flag.ContinueOnError)
|
fsckCommand := flag.NewFlagSet(c.Name(), flag.ContinueOnError)
|
||||||
|
slowMode := fsckCommand.Bool("slow", false, "slow mode checks all replicas even file counts are the same")
|
||||||
verbose := fsckCommand.Bool("v", false, "verbose mode")
|
verbose := fsckCommand.Bool("v", false, "verbose mode")
|
||||||
applyChanges := fsckCommand.Bool("force", false, "apply the fix")
|
applyChanges := fsckCommand.Bool("force", false, "apply the fix")
|
||||||
if err = fsckCommand.Parse(args); err != nil {
|
if err = fsckCommand.Parse(args); err != nil {
|
||||||
|
@ -75,10 +76,12 @@ func (c *commandVolumeCheckDisk) Do(args []string, commandEnv *CommandEnv, write
|
||||||
})
|
})
|
||||||
for len(replicas) >= 2 {
|
for len(replicas) >= 2 {
|
||||||
a, b := replicas[0], replicas[1]
|
a, b := replicas[0], replicas[1]
|
||||||
|
if !*slowMode {
|
||||||
if fileCount(a) == fileCount(b) {
|
if fileCount(a) == fileCount(b) {
|
||||||
replicas = replicas[1:]
|
replicas = replicas[1:]
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
}
|
||||||
if a.info.ReadOnly || b.info.ReadOnly {
|
if a.info.ReadOnly || b.info.ReadOnly {
|
||||||
fmt.Fprintf(writer, "skipping readonly volume %d on %s and %s\n", a.info.Id, a.location.dataNode.Id, b.location.dataNode.Id)
|
fmt.Fprintf(writer, "skipping readonly volume %d on %s and %s\n", a.info.Id, a.location.dataNode.Id, b.location.dataNode.Id)
|
||||||
continue
|
continue
|
||||||
|
@ -125,7 +128,7 @@ func (c *commandVolumeCheckDisk) doVolumeCheckDisk(subtrahend, minuend *needle_m
|
||||||
return nil
|
return nil
|
||||||
})
|
})
|
||||||
|
|
||||||
fmt.Fprintf(writer, "%s has %d entries, %s missed %d entries\n", source.location.dataNode.Id, counter, target.location.dataNode.Id, len(missingNeedles))
|
fmt.Fprintf(writer, "volume %d %s has %d entries, %s missed %d entries\n", source.info.Id, source.location.dataNode.Id, counter, target.location.dataNode.Id, len(missingNeedles))
|
||||||
|
|
||||||
for _, needleValue := range missingNeedles {
|
for _, needleValue := range missingNeedles {
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue