From 0b44c629f2e5ee004ea0c14ff2d6e8744e82f08c Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Thu, 30 Nov 2017 22:05:14 +0100 Subject: [PATCH] retry: Remove file after failed save --- internal/backend/backend_retry.go | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/internal/backend/backend_retry.go b/internal/backend/backend_retry.go index fae70cd9d..1d4c24859 100644 --- a/internal/backend/backend_retry.go +++ b/internal/backend/backend_retry.go @@ -7,6 +7,7 @@ import ( "time" "github.com/cenkalti/backoff" + "github.com/restic/restic/internal/debug" "github.com/restic/restic/internal/errors" "github.com/restic/restic/internal/restic" ) @@ -65,7 +66,19 @@ func (be *RetryBackend) Save(ctx context.Context, h restic.Handle, rd io.Reader) return err } - return be.Backend.Save(ctx, h, rd) + err = be.Backend.Save(ctx, h, rd) + if err == nil { + return nil + } + + debug.Log("Save(%v) failed with error, removing file: %v", h, err) + rerr := be.Remove(ctx, h) + if rerr != nil { + debug.Log("Remove(%v) returned error: %v", h, err) + } + + // return original error + return err }) }