From 7761074e7cabe34ad06330285af9a0d6ca032c6f Mon Sep 17 00:00:00 2001 From: Konstantin Lebedev Date: Wed, 16 Jun 2021 14:23:49 +0500 Subject: [PATCH] avoid exit in case of errors on single volumes https://github.com/chrislusf/seaweedfs/issues/2129 --- weed/shell/command_volume_check_disk.go | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/weed/shell/command_volume_check_disk.go b/weed/shell/command_volume_check_disk.go index 0f156ac2f..cb6469d20 100644 --- a/weed/shell/command_volume_check_disk.go +++ b/weed/shell/command_volume_check_disk.go @@ -71,6 +71,7 @@ func (c *commandVolumeCheckDisk) Do(args []string, commandEnv *CommandEnv, write defer aDB.Close() defer bDB.Close() +REPLICAS: for _, replicas := range volumeReplicas { sort.Slice(replicas, func(i, j int) bool { return fileCount(replicas[i]) > fileCount(replicas[j]) @@ -96,18 +97,22 @@ func (c *commandVolumeCheckDisk) Do(args []string, commandEnv *CommandEnv, write // read index db if err := c.readIndexDatabase(aDB, a.info.Collection, a.info.Id, a.location.dataNode.Id, *verbose, writer); err != nil { - return err + fmt.Fprintln(writer, err.Error()) + continue REPLICAS } if err := c.readIndexDatabase(bDB, b.info.Collection, b.info.Id, b.location.dataNode.Id, *verbose, writer); err != nil { - return err + fmt.Fprintln(writer, err.Error()) + continue REPLICAS } // find and make up the differnces if err := c.doVolumeCheckDisk(aDB, bDB, a, b, *verbose, writer, *applyChanges, *nonRepairThreshold); err != nil { - return err + fmt.Fprintln(writer, err.Error()) + continue REPLICAS } if err := c.doVolumeCheckDisk(bDB, aDB, b, a, *verbose, writer, *applyChanges, *nonRepairThreshold); err != nil { - return err + fmt.Fprintln(writer, err.Error()) + continue REPLICAS } replicas = replicas[1:] }