repository: replace HasBlob with LookupBlobSize

This commit is contained in:
Michael Eischer 2024-05-19 12:58:41 +02:00
parent 8f1e70cd9b
commit 0aa5c53842
5 changed files with 5 additions and 11 deletions

View file

@ -167,8 +167,7 @@ func runCat(ctx context.Context, gopts GlobalOptions, args []string) error {
}
for _, t := range []restic.BlobType{restic.DataBlob, restic.TreeBlob} {
bh := restic.BlobHandle{ID: id, Type: t}
if !repo.HasBlob(bh) {
if _, ok := repo.LookupBlobSize(id, t); !ok {
continue
}

View file

@ -202,7 +202,7 @@ func copyTree(ctx context.Context, srcRepo restic.Repository, dstRepo restic.Rep
// Do we already have this tree blob?
treeHandle := restic.BlobHandle{ID: tree.ID, Type: restic.TreeBlob}
if !dstRepo.HasBlob(treeHandle) {
if _, ok := dstRepo.LookupBlobSize(treeHandle.ID, treeHandle.Type); !ok {
// copy raw tree bytes to avoid problems if the serialization changes
enqueue(treeHandle)
}
@ -212,7 +212,7 @@ func copyTree(ctx context.Context, srcRepo restic.Repository, dstRepo restic.Rep
// Copy the blobs for this file.
for _, blobID := range entry.Content {
h := restic.BlobHandle{Type: restic.DataBlob, ID: blobID}
if !dstRepo.HasBlob(h) {
if _, ok := dstRepo.LookupBlobSize(h.ID, h.Type); !ok {
enqueue(h)
}
}

View file

@ -276,7 +276,7 @@ func (arch *Archiver) loadSubtree(ctx context.Context, node *restic.Node) (*rest
}
func (arch *Archiver) wrapLoadTreeError(id restic.ID, err error) error {
if arch.Repo.HasBlob(restic.BlobHandle{ID: id, Type: restic.TreeBlob}) {
if _, ok := arch.Repo.LookupBlobSize(id, restic.TreeBlob); ok {
err = errors.Errorf("tree %v could not be loaded; the repository could be damaged: %v", id, err)
} else {
err = errors.Errorf("tree %v is not known; the repository could be damaged, run `repair index` to try to repair it", id)
@ -390,7 +390,7 @@ func (fn *FutureNode) take(ctx context.Context) futureNodeResult {
func (arch *Archiver) allBlobsPresent(previous *restic.Node) bool {
// check if all blobs are contained in index
for _, id := range previous.Content {
if !arch.Repo.HasBlob(restic.BlobHandle{ID: id, Type: restic.DataBlob}) {
if _, ok := arch.Repo.LookupBlobSize(id, restic.DataBlob); !ok {
return false
}
}

View file

@ -578,10 +578,6 @@ func (r *Repository) Connections() uint {
return r.be.Connections()
}
func (r *Repository) HasBlob(bh restic.BlobHandle) bool {
return r.idx.Has(bh)
}
func (r *Repository) LookupBlob(bh restic.BlobHandle) []restic.PackedBlob {
return r.idx.Lookup(bh)
}

View file

@ -25,7 +25,6 @@ type Repository interface {
SetIndex(MasterIndex) error
SaveIndex(ctx context.Context, excludePacks IDSet, extraObsolete IDs, opts MasterIndexSaveOpts) error
HasBlob(BlobHandle) bool
LookupBlob(BlobHandle) []PackedBlob
LookupBlobSize(ID, BlobType) (uint, bool)