From 8844cf1876dcff1e6cc4738103758d89f6e82ace Mon Sep 17 00:00:00 2001 From: Michael Eischer Date: Thu, 4 Jun 2026 23:17:56 +0200 Subject: [PATCH] repository: rename PackError to ErrPackMetadata --- cmd/restic/cmd_check.go | 2 +- internal/checker/checker_test.go | 4 ++-- internal/repository/checker.go | 13 +++++++------ 3 files changed, 10 insertions(+), 9 deletions(-) diff --git a/cmd/restic/cmd_check.go b/cmd/restic/cmd_check.go index f77cfd182..4a5a54694 100644 --- a/cmd/restic/cmd_check.go +++ b/cmd/restic/cmd_check.go @@ -307,7 +307,7 @@ func runCheck(ctx context.Context, opts CheckOptions, gopts global.Options, args go chkr.Packs(ctx, errChan) for err := range errChan { - var packErr *repository.PackError + var packErr *repository.ErrPackMetadata if errors.As(err, &packErr) { if packErr.Orphaned { orphanedPacks++ diff --git a/internal/checker/checker_test.go b/internal/checker/checker_test.go index db79ff45c..242832241 100644 --- a/internal/checker/checker_test.go +++ b/internal/checker/checker_test.go @@ -109,7 +109,7 @@ func TestMissingPack(t *testing.T) { test.Assert(t, len(errs) == 1, "expected exactly one error, got %v", len(errs)) - if err, ok := errs[0].(*repository.PackError); ok { + if err, ok := errs[0].(*repository.ErrPackMetadata); ok { test.Equals(t, packID, err.ID) } else { t.Errorf("expected error returned by checker.Packs() to be PackError, got %v", err) @@ -137,7 +137,7 @@ func TestUnreferencedPack(t *testing.T) { test.Assert(t, len(errs) == 1, "expected exactly one error, got %v", len(errs)) - if err, ok := errs[0].(*repository.PackError); ok { + if err, ok := errs[0].(*repository.ErrPackMetadata); ok { test.Equals(t, packID, err.ID.String()) } else { t.Errorf("expected error returned by checker.Packs() to be PackError, got %v", err) diff --git a/internal/repository/checker.go b/internal/repository/checker.go index b0c978390..c3f530abf 100644 --- a/internal/repository/checker.go +++ b/internal/repository/checker.go @@ -51,15 +51,16 @@ func (e *ErrMixedPack) Error() string { return fmt.Sprintf("pack %v contains a mix of tree and data blobs", e.PackID.Str()) } -// PackError describes an error with a specific pack. -type PackError struct { +// ErrPackMetadata describes an error with a specific pack. It is used for missing, truncated or orphaned packs. +// Errors of the actual pack data are returned as ErrPackData. +type ErrPackMetadata struct { ID restic.ID Orphaned bool Truncated bool Err error } -func (e *PackError) Error() string { +func (e *ErrPackMetadata) Error() string { return "pack " + e.ID.String() + ": " + e.Err.Error() } @@ -214,7 +215,7 @@ func (c *Checker) Packs(ctx context.Context, errChan chan<- error) { select { case <-ctx.Done(): return - case errChan <- &PackError{ID: id, Err: errors.New("does not exist")}: + case errChan <- &ErrPackMetadata{ID: id, Err: errors.New("does not exist")}: } continue } @@ -224,7 +225,7 @@ func (c *Checker) Packs(ctx context.Context, errChan chan<- error) { select { case <-ctx.Done(): return - case errChan <- &PackError{ID: id, Truncated: true, Err: errors.Errorf("unexpected file size: got %d, expected %d", reposize, size)}: + case errChan <- &ErrPackMetadata{ID: id, Truncated: true, Err: errors.Errorf("unexpected file size: got %d, expected %d", reposize, size)}: } } } @@ -234,7 +235,7 @@ func (c *Checker) Packs(ctx context.Context, errChan chan<- error) { select { case <-ctx.Done(): return - case errChan <- &PackError{ID: orphanID, Orphaned: true, Err: errors.New("not referenced in any index")}: + case errChan <- &ErrPackMetadata{ID: orphanID, Orphaned: true, Err: errors.New("not referenced in any index")}: } } }