From da48b925ff392bb39ad6679b637729a396140760 Mon Sep 17 00:00:00 2001 From: Alexander Bruyako Date: Mon, 27 Jan 2020 18:28:21 +0300 Subject: [PATCH 1/3] remove unnecessary error return I was running "golangci-lint" and found this two warnings internal/checker/checker.go:135:18: (*Checker).LoadIndex$3 - result 0 (error) is always nil (unparam) final := func() error { ^ internal/repository/repository.go:457:18: (*Repository).LoadIndex$3 - result 0 (error) is always nil (unparam) final := func() error { ^ It turns out that these functions are used only in "RunWorkers(...)", which is used only two times in whole project right after this "final" functions. And because these "final" functions always return "nil", I've descided, that it would be better to remove requriments for "final" func to return error to avoid magick "return nil" at their end. --- internal/checker/checker.go | 3 +-- internal/repository/repository.go | 3 +-- internal/repository/worker_group.go | 10 ++++------ 3 files changed, 6 insertions(+), 10 deletions(-) diff --git a/internal/checker/checker.go b/internal/checker/checker.go index fcb9db490..2e2e233d6 100644 --- a/internal/checker/checker.go +++ b/internal/checker/checker.go @@ -132,9 +132,8 @@ func (c *Checker) LoadIndex(ctx context.Context) (hints []error, errs []error) { } // final closes indexCh after all workers have terminated - final := func() error { + final := func() { close(resultCh) - return nil } // run workers on ch diff --git a/internal/repository/repository.go b/internal/repository/repository.go index 0c71fb3bb..67df4b3b2 100644 --- a/internal/repository/repository.go +++ b/internal/repository/repository.go @@ -454,9 +454,8 @@ func (r *Repository) LoadIndex(ctx context.Context) error { } // final closes indexCh after all workers have terminated - final := func() error { + final := func() { close(indexCh) - return nil } // run workers on ch diff --git a/internal/repository/worker_group.go b/internal/repository/worker_group.go index ab09d441f..6b9dc6ddf 100644 --- a/internal/repository/worker_group.go +++ b/internal/repository/worker_group.go @@ -10,7 +10,7 @@ import ( // After all workers have terminated, finalFunc is run. If an error occurs in // one of the workers, it is returned. FinalFunc is always run, regardless of // any other previous errors. -func RunWorkers(ctx context.Context, count int, workerFunc, finalFunc func() error) error { +func RunWorkers(ctx context.Context, count int, workerFunc func() error, finalFunc func()) error { wg, ctx := errgroup.WithContext(ctx) // run workers @@ -22,14 +22,12 @@ func RunWorkers(ctx context.Context, count int, workerFunc, finalFunc func() err err := wg.Wait() // make sure finalFunc is run - finalErr := finalFunc() + finalFunc() - // if the workers returned an error, return it to the caller (disregarding - // any error from finalFunc) + // if the workers returned an error, return it to the caller if err != nil { return err } - // if not, return the value finalFunc returned - return finalErr + return nil } From 38ddfbc4d3bb4291146b617e898fe9d7f485d2f6 Mon Sep 17 00:00:00 2001 From: Alexander Bruyako Date: Mon, 27 Jan 2020 18:41:46 +0300 Subject: [PATCH 2/3] simpler error return --- internal/repository/worker_group.go | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/internal/repository/worker_group.go b/internal/repository/worker_group.go index 6b9dc6ddf..20783b188 100644 --- a/internal/repository/worker_group.go +++ b/internal/repository/worker_group.go @@ -24,10 +24,6 @@ func RunWorkers(ctx context.Context, count int, workerFunc func() error, finalFu // make sure finalFunc is run finalFunc() - // if the workers returned an error, return it to the caller - if err != nil { - return err - } - - return nil + // return error from workers to the caller + return err } From 688014487bd432549154430d325e0598954d15de Mon Sep 17 00:00:00 2001 From: Alexander Bruyako Date: Mon, 27 Jan 2020 19:24:42 +0300 Subject: [PATCH 3/3] avoid "index out of range" error in case of len(format) == 0, we will get an "index out of range" error Usage of strings.HasSuffix is allowing to avoid that --- cmd/restic/global.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmd/restic/global.go b/cmd/restic/global.go index ef69eabc3..bfb8ba9e8 100644 --- a/cmd/restic/global.go +++ b/cmd/restic/global.go @@ -232,7 +232,7 @@ func Warnf(format string, args ...interface{}) { // Exitf uses Warnf to write the message and then terminates the process with // the given exit code. func Exitf(exitcode int, format string, args ...interface{}) { - if format[len(format)-1] != '\n' { + if !(strings.HasSuffix(format, "\n")) { format += "\n" }