From c6a79ff72d85b0a19e63612209658abe93607bd4 Mon Sep 17 00:00:00 2001 From: Nick Craig-Wood Date: Mon, 30 May 2016 19:49:21 +0100 Subject: [PATCH] Fix remaining places in listing where we were logging errors not returning them --- dropbox/dropbox.go | 7 +++---- dropbox/nametree.go | 2 ++ local/local.go | 30 +++++++++--------------------- onedrive/onedrive.go | 5 ++--- 4 files changed, 16 insertions(+), 28 deletions(-) diff --git a/dropbox/dropbox.go b/dropbox/dropbox.go index cb2fa9b96..8ebbe24ce 100644 --- a/dropbox/dropbox.go +++ b/dropbox/dropbox.go @@ -271,8 +271,8 @@ func (f *Fs) list(out fs.ListOpts, dir string) { return } if deltaPage.Reset && cursor != "" { - fs.ErrorLog(f, "Unexpected reset during listing - try again") - fs.Stats.Error() + err = errors.New("Unexpected reset during listing") + out.SetError(err) break } fs.Debug(f, "%d delta entries received", len(deltaPage.Entries)) @@ -283,8 +283,7 @@ func (f *Fs) list(out fs.ListOpts, dir string) { // This notifies of a deleted object } else { if len(entry.Path) <= 1 || entry.Path[0] != '/' { - fs.Stats.Error() - fs.ErrorLog(f, "dropbox API inconsistency: a path should always start with a slash and be at least 2 characters: %s", entry.Path) + fs.Log(f, "dropbox API inconsistency: a path should always start with a slash and be at least 2 characters: %s", entry.Path) continue } diff --git a/dropbox/nametree.go b/dropbox/nametree.go index 3edace20e..4c0934590 100644 --- a/dropbox/nametree.go +++ b/dropbox/nametree.go @@ -9,6 +9,8 @@ import ( "github.com/stacktic/dropbox" ) +// FIXME Get rid of Stats.Error() counting and return errors + type nameTreeNode struct { // Map from lowercase directory name to tree node Directories map[string]*nameTreeNode diff --git a/local/local.go b/local/local.go index 04274bcf8..cac0394a6 100644 --- a/local/local.go +++ b/local/local.go @@ -16,6 +16,7 @@ import ( "unicode/utf8" "github.com/ncw/rclone/fs" + "github.com/pkg/errors" ) // Register with Fs @@ -150,17 +151,13 @@ type listArgs struct { func (f *Fs) list(out fs.ListOpts, remote string, dirpath string, level int) (subdirs []listArgs) { fd, err := os.Open(dirpath) if err != nil { - out.SetError(err) - fs.Stats.Error() - fs.ErrorLog(f, "Failed to open directory: %s: %s", dirpath, err) + out.SetError(errors.Wrapf(err, "failed to open directory %q", dirpath)) return nil } defer func() { err := fd.Close() if err != nil { - out.SetError(err) - fs.Stats.Error() - fs.ErrorLog(f, "Failed to close directory: %s: %s", dirpath, err) + out.SetError(errors.Wrapf(err, "failed to close directory %q:", dirpath)) } }() @@ -170,9 +167,8 @@ func (f *Fs) list(out fs.ListOpts, remote string, dirpath string, level int) (su break } if err != nil { - out.SetError(err) - fs.Stats.Error() - fs.ErrorLog(f, "Failed to read directory: %s: %s", dirpath, err) + out.SetError(errors.Wrapf(err, "failed to read directory %q", dirpath)) + return nil } @@ -494,9 +490,7 @@ func (o *Object) Hash(r fs.HashType) (string, error) { oldsize := o.info.Size() err := o.lstat() if err != nil { - fs.Stats.Error() - fs.ErrorLog(o, "Failed to stat: %s", err) - return "", err + return "", errors.Wrap(err, "Hash failed to stat") } if !o.info.ModTime().Equal(oldtime) || oldsize != o.info.Size() { @@ -507,21 +501,15 @@ func (o *Object) Hash(r fs.HashType) (string, error) { o.hashes = make(map[fs.HashType]string) in, err := os.Open(o.path) if err != nil { - fs.Stats.Error() - fs.ErrorLog(o, "Failed to open: %s", err) - return "", err + return "", errors.Wrap(err, "Hash failed to open") } o.hashes, err = fs.HashStream(in) closeErr := in.Close() if err != nil { - fs.Stats.Error() - fs.ErrorLog(o, "Failed to read: %s", err) - return "", err + return "", errors.Wrap(err, "Hash failed to read") } if closeErr != nil { - fs.Stats.Error() - fs.ErrorLog(o, "Failed to close: %s", closeErr) - return "", closeErr + return "", errors.Wrap(closeErr, "Hash failed to close") } } return o.hashes[r], nil diff --git a/onedrive/onedrive.go b/onedrive/onedrive.go index f4ceed2b0..fcd482899 100644 --- a/onedrive/onedrive.go +++ b/onedrive/onedrive.go @@ -18,6 +18,7 @@ import ( "github.com/ncw/rclone/onedrive/api" "github.com/ncw/rclone/pacer" "github.com/ncw/rclone/rest" + "github.com/pkg/errors" "github.com/spf13/pflag" "golang.org/x/oauth2" ) @@ -331,9 +332,7 @@ OUTER: return shouldRetry(resp, err) }) if err != nil { - fs.Stats.Error() - fs.ErrorLog(f, "Couldn't list files: %v", err) - break + return found, errors.Wrap(err, "couldn't list files") } if len(result.Value) == 0 { break