check: make the error count match up in the log message

Before this change we counted the final summary error as an error,
producing confusing log messages like:

    Failed to check with 54 errors: last error was: 53 differences found

This change marks the summary error as already being counted, so the
error message becomes:

    Failed to check with 53 errors: last error was: 53 differences found

This change also returns a listing failure in preference to a summary error.

See: https://forum.rclone.org/t/slow-checksum-validation/19763/22
This commit is contained in:
Nick Craig-Wood 2020-10-15 11:48:06 +01:00
parent dc4e63631f
commit 4e2b5389d7

View File

@ -11,6 +11,7 @@ import (
"github.com/pkg/errors" "github.com/pkg/errors"
"github.com/rclone/rclone/fs" "github.com/rclone/rclone/fs"
"github.com/rclone/rclone/fs/accounting" "github.com/rclone/rclone/fs/accounting"
"github.com/rclone/rclone/fs/fserrors"
"github.com/rclone/rclone/fs/hash" "github.com/rclone/rclone/fs/hash"
"github.com/rclone/rclone/fs/march" "github.com/rclone/rclone/fs/march"
"github.com/rclone/rclone/lib/readers" "github.com/rclone/rclone/lib/readers"
@ -238,11 +239,17 @@ func CheckFn(ctx context.Context, opt *CheckOpt) error {
if c.matches > 0 { if c.matches > 0 {
fs.Logf(c.opt.Fdst, "%d matching files", c.matches) fs.Logf(c.opt.Fdst, "%d matching files", c.matches)
} }
if c.differences > 0 { if err != nil {
return errors.Errorf("%d differences found", c.differences)
}
return err return err
} }
if c.differences > 0 {
// Return an already counted error so we don't double count this error too
err = fserrors.FsError(errors.Errorf("%d differences found", c.differences))
fserrors.Count(err)
return err
}
return nil
}
// Check the files in fsrc and fdst according to Size and hash // Check the files in fsrc and fdst according to Size and hash
func Check(ctx context.Context, opt *CheckOpt) error { func Check(ctx context.Context, opt *CheckOpt) error {