mirror of
https://github.com/octoleo/restic.git
synced 2024-11-26 23:06:32 +00:00
backend/retry: hide final log for stat()
method
stat is only used to check the config file's existence. We don't want log output in this case.
This commit is contained in:
parent
74c783b850
commit
58dc4a6892
@ -221,12 +221,19 @@ func (be *Backend) Load(ctx context.Context, h backend.Handle, length int, offse
|
|||||||
|
|
||||||
// Stat returns information about the File identified by h.
|
// Stat returns information about the File identified by h.
|
||||||
func (be *Backend) Stat(ctx context.Context, h backend.Handle) (fi backend.FileInfo, err error) {
|
func (be *Backend) Stat(ctx context.Context, h backend.Handle) (fi backend.FileInfo, err error) {
|
||||||
err = be.retry(ctx, fmt.Sprintf("Stat(%v)", h),
|
// see the call to `cancel()` below for why this context exists
|
||||||
|
statCtx, cancel := context.WithCancel(ctx)
|
||||||
|
defer cancel()
|
||||||
|
|
||||||
|
err = be.retry(statCtx, fmt.Sprintf("Stat(%v)", h),
|
||||||
func() error {
|
func() error {
|
||||||
var innerError error
|
var innerError error
|
||||||
fi, innerError = be.Backend.Stat(ctx, h)
|
fi, innerError = be.Backend.Stat(ctx, h)
|
||||||
|
|
||||||
if be.Backend.IsNotExist(innerError) {
|
if be.Backend.IsNotExist(innerError) {
|
||||||
|
// stat is only used to check the existence of the config file.
|
||||||
|
// cancel the context to suppress the final error message if the file is not found.
|
||||||
|
cancel()
|
||||||
// do not retry if file is not found, as stat is usually used to check whether a file exists
|
// do not retry if file is not found, as stat is usually used to check whether a file exists
|
||||||
return backoff.Permanent(innerError)
|
return backoff.Permanent(innerError)
|
||||||
}
|
}
|
||||||
|
@ -400,7 +400,11 @@ func TestBackendStatNotExists(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
TestFastRetries(t)
|
TestFastRetries(t)
|
||||||
retryBackend := New(be, 10, nil, nil)
|
retryBackend := New(be, 10, func(s string, err error, d time.Duration) {
|
||||||
|
t.Fatalf("unexpected error output %v", s)
|
||||||
|
}, func(s string, i int) {
|
||||||
|
t.Fatalf("unexpected log output %v", s)
|
||||||
|
})
|
||||||
|
|
||||||
_, err := retryBackend.Stat(context.TODO(), backend.Handle{})
|
_, err := retryBackend.Stat(context.TODO(), backend.Handle{})
|
||||||
test.Assert(t, be.IsNotExistFn(err), "unexpected error %v", err)
|
test.Assert(t, be.IsNotExistFn(err), "unexpected error %v", err)
|
||||||
|
Loading…
Reference in New Issue
Block a user