From c060c317d3cebbbe8f0e316fc182b6e1ee826482 Mon Sep 17 00:00:00 2001 From: Michael Eischer Date: Thu, 4 Jun 2026 21:59:12 +0200 Subject: [PATCH] repository: unexport listPacksFromIndex `ListPacksFromIndex` only has repository-internal callers left (besides test code). --- internal/repository/checker.go | 2 +- internal/repository/checker_test.go | 2 +- internal/repository/debug.go | 9 ++++----- internal/repository/repack.go | 2 +- internal/repository/repair_pack.go | 2 +- internal/repository/repair_pack_test.go | 18 ++++++++---------- internal/repository/repository.go | 3 ++- internal/restic/repository.go | 1 - 8 files changed, 18 insertions(+), 21 deletions(-) diff --git a/internal/repository/checker.go b/internal/repository/checker.go index c3f530abf..845048b4a 100644 --- a/internal/repository/checker.go +++ b/internal/repository/checker.go @@ -306,7 +306,7 @@ func (c *Checker) ReadPacks(ctx context.Context, filter func(packs map[restic.ID } // push packs to ch - for pbs := range c.repo.ListPacksFromIndex(ctx, packSet) { + for pbs := range c.repo.listPacksFromIndex(ctx, packSet) { size := packs[pbs.PackID] debug.Log("listed %v", pbs.PackID) select { diff --git a/internal/repository/checker_test.go b/internal/repository/checker_test.go index def9a9951..e11584192 100644 --- a/internal/repository/checker_test.go +++ b/internal/repository/checker_test.go @@ -47,7 +47,7 @@ func TestGapInBlobs(t *testing.T) { rtest.Assert(t, ok, "expected pack 19a731a515618ec8b75fc0ff3b887d8feb83aef1001c9899f6702761142ed068") blobs := []restic.Blob{} - pb := <-repo.ListPacksFromIndex(context.TODO(), restic.NewIDSet(packID)) + pb := <-repo.listPacksFromIndex(context.TODO(), restic.NewIDSet(packID)) blobs = append(blobs, pb.Blobs...) // assertion for clarity, actually can't fail as the packfile content is fixed diff --git a/internal/repository/debug.go b/internal/repository/debug.go index 29cb5b672..8bf25a715 100644 --- a/internal/repository/debug.go +++ b/internal/repository/debug.go @@ -116,15 +116,14 @@ func ExaminePack(ctx context.Context, repo *Repository, id restic.ID, opts Exami blobsLoaded := false // examine all data the indexes have for the pack file - for b := range repo.ListPacksFromIndex(ctx, restic.NewIDSet(id)) { - blobs := b.Blobs - if len(blobs) == 0 { + for b := range repo.listPacksFromIndex(ctx, restic.NewIDSet(id)) { + if len(b.Blobs) == 0 { continue } - checkPackSize(blobs, len(buf), printer) + checkPackSize(b.Blobs, len(buf), printer) - err = loadBlobs(ctx, opts, repo, id, blobs, printer) + err = loadBlobs(ctx, opts, repo, id, b.Blobs, printer) if err != nil { printer.E("error: %v", err) } else { diff --git a/internal/repository/repack.go b/internal/repository/repack.go index 6900eb96c..a4472c91e 100644 --- a/internal/repository/repack.go +++ b/internal/repository/repack.go @@ -83,7 +83,7 @@ func repack( downloadQueue := make(chan restic.PackBlobs) wg.Go(func() error { defer close(downloadQueue) - for pbs := range repo.ListPacksFromIndex(wgCtx, packs) { + for pbs := range repo.listPacksFromIndex(wgCtx, packs) { var packBlobs restic.Blobs keepMutex.Lock() // filter out unnecessary blobs diff --git a/internal/repository/repair_pack.go b/internal/repository/repair_pack.go index bff83b846..a7d04bbc2 100644 --- a/internal/repository/repair_pack.go +++ b/internal/repository/repair_pack.go @@ -23,7 +23,7 @@ func RepairPacks(ctx context.Context, repo *Repository, ids restic.IDSet, printe err = repo.WithBlobUploader(ctx, func(ctx context.Context, uploader restic.BlobSaverWithAsync) error { // examine all data the indexes have for the pack file - for b := range repo.ListPacksFromIndex(ctx, ids) { + for b := range repo.listPacksFromIndex(ctx, ids) { indexBlobs := b.Blobs err := reuploadBlobsFromPack(ctx, repo, b.PackID, indexBlobs, printer, uploader) if err != nil { diff --git a/internal/repository/repair_pack_test.go b/internal/repository/repair_pack_test.go index 558889e0d..c44839860 100644 --- a/internal/repository/repair_pack_test.go +++ b/internal/repository/repair_pack_test.go @@ -66,13 +66,11 @@ func testRepairBrokenPack(t *testing.T, version uint) { // find blob that starts at offset 0 var damagedBlob restic.BlobHandle - for blobs := range repo.ListPacksFromIndex(context.TODO(), restic.NewIDSet(damagedID)) { - for _, blob := range blobs.Blobs { - if blob.Offset == 0 { - damagedBlob = blob.BlobHandle - } + _ = repo.ListBlobs(context.TODO(), func(pb restic.PackedBlob) { + if pb.PackID == damagedID && pb.Offset == 0 { + damagedBlob = pb.BlobHandle } - } + }) return restic.NewIDSet(damagedID), restic.NewBlobSet(damagedBlob) }, @@ -89,11 +87,11 @@ func testRepairBrokenPack(t *testing.T, version uint) { // all blobs in the file are broken damagedBlobs := restic.NewBlobSet() - for blobs := range repo.ListPacksFromIndex(context.TODO(), restic.NewIDSet(damagedID)) { - for _, blob := range blobs.Blobs { - damagedBlobs.Insert(blob.BlobHandle) + _ = repo.ListBlobs(context.TODO(), func(pb restic.PackedBlob) { + if pb.PackID == damagedID { + damagedBlobs.Insert(pb.BlobHandle) } - } + }) return restic.NewIDSet(damagedID), damagedBlobs }, }, { diff --git a/internal/repository/repository.go b/internal/repository/repository.go index ea519afa5..36fa0e22e 100644 --- a/internal/repository/repository.go +++ b/internal/repository/repository.go @@ -693,7 +693,8 @@ func (r *Repository) ListBlobs(ctx context.Context, fn func(restic.PackedBlob)) return nil } -func (r *Repository) ListPacksFromIndex(ctx context.Context, packs restic.IDSet) <-chan restic.PackBlobs { +// listPacksFromIndex returns index entries for the given packs, grouped by pack file. +func (r *Repository) listPacksFromIndex(ctx context.Context, packs restic.IDSet) <-chan restic.PackBlobs { return r.idx.ListPacks(ctx, packs) } diff --git a/internal/restic/repository.go b/internal/restic/repository.go index 561755c6c..7986e2f74 100644 --- a/internal/restic/repository.go +++ b/internal/restic/repository.go @@ -31,7 +31,6 @@ type Repository interface { // ListBlobs runs fn on all blobs known to the index. When the context is cancelled, // the index iteration returns immediately with ctx.Err(). This blocks any modification of the index. ListBlobs(ctx context.Context, fn func(PackedBlob)) error - ListPacksFromIndex(ctx context.Context, packs IDSet) <-chan PackBlobs // ListPackHandles returns the blob handles stored in the pack file header. ListPackHandles(ctx context.Context, id ID, packSize int64) ([]BlobHandle, error)