forked from TrueCloudLab/restic
repository: unwrap BlobHandle parameters of LookupBlob
The method now uses the same parameters as LookupBlobSize.
This commit is contained in:
parent
1266a4932f
commit
864995271e
10 changed files with 18 additions and 18 deletions
|
@ -187,7 +187,7 @@ func copyTree(ctx context.Context, srcRepo restic.Repository, dstRepo restic.Rep
|
||||||
packList := restic.NewIDSet()
|
packList := restic.NewIDSet()
|
||||||
|
|
||||||
enqueue := func(h restic.BlobHandle) {
|
enqueue := func(h restic.BlobHandle) {
|
||||||
pb := srcRepo.LookupBlob(h)
|
pb := srcRepo.LookupBlob(h.Type, h.ID)
|
||||||
copyBlobs.Insert(h)
|
copyBlobs.Insert(h)
|
||||||
for _, p := range pb {
|
for _, p := range pb {
|
||||||
packList.Insert(p.PackID)
|
packList.Insert(p.PackID)
|
||||||
|
|
|
@ -509,7 +509,7 @@ func (f *Finder) findObjectPack(id string, t restic.BlobType) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
blobs := f.repo.LookupBlob(restic.BlobHandle{ID: rid, Type: t})
|
blobs := f.repo.LookupBlob(t, rid)
|
||||||
if len(blobs) == 0 {
|
if len(blobs) == 0 {
|
||||||
Printf("Object %s not found in the index\n", rid.Str())
|
Printf("Object %s not found in the index\n", rid.Str())
|
||||||
return
|
return
|
||||||
|
|
|
@ -124,7 +124,7 @@ func runStats(ctx context.Context, opts StatsOptions, gopts GlobalOptions, args
|
||||||
if opts.countMode == countModeRawData {
|
if opts.countMode == countModeRawData {
|
||||||
// the blob handles have been collected, but not yet counted
|
// the blob handles have been collected, but not yet counted
|
||||||
for blobHandle := range stats.blobs {
|
for blobHandle := range stats.blobs {
|
||||||
pbs := repo.LookupBlob(blobHandle)
|
pbs := repo.LookupBlob(blobHandle.Type, blobHandle.ID)
|
||||||
if len(pbs) == 0 {
|
if len(pbs) == 0 {
|
||||||
return fmt.Errorf("blob %v not found", blobHandle)
|
return fmt.Errorf("blob %v not found", blobHandle)
|
||||||
}
|
}
|
||||||
|
|
|
@ -161,7 +161,7 @@ func checkPackInner(ctx context.Context, r *Repository, id restic.ID, blobs []re
|
||||||
for _, blob := range blobs {
|
for _, blob := range blobs {
|
||||||
// Check if blob is contained in index and position is correct
|
// Check if blob is contained in index and position is correct
|
||||||
idxHas := false
|
idxHas := false
|
||||||
for _, pb := range r.LookupBlob(blob.BlobHandle) {
|
for _, pb := range r.LookupBlob(blob.BlobHandle.Type, blob.BlobHandle.ID) {
|
||||||
if pb.PackID == id && pb.Blob == blob {
|
if pb.PackID == id && pb.Blob == blob {
|
||||||
idxHas = true
|
idxHas = true
|
||||||
break
|
break
|
||||||
|
|
|
@ -146,7 +146,7 @@ func findPacksForBlobs(t *testing.T, repo restic.Repository, blobs restic.BlobSe
|
||||||
packs := restic.NewIDSet()
|
packs := restic.NewIDSet()
|
||||||
|
|
||||||
for h := range blobs {
|
for h := range blobs {
|
||||||
list := repo.LookupBlob(h)
|
list := repo.LookupBlob(h.Type, h.ID)
|
||||||
if len(list) == 0 {
|
if len(list) == 0 {
|
||||||
t.Fatal("Failed to find blob", h.ID.Str(), "with type", h.Type)
|
t.Fatal("Failed to find blob", h.ID.Str(), "with type", h.Type)
|
||||||
}
|
}
|
||||||
|
@ -247,7 +247,7 @@ func testRepack(t *testing.T, version uint) {
|
||||||
}
|
}
|
||||||
|
|
||||||
for h := range keepBlobs {
|
for h := range keepBlobs {
|
||||||
list := repo.LookupBlob(h)
|
list := repo.LookupBlob(h.Type, h.ID)
|
||||||
if len(list) == 0 {
|
if len(list) == 0 {
|
||||||
t.Errorf("unable to find blob %v in repo", h.ID.Str())
|
t.Errorf("unable to find blob %v in repo", h.ID.Str())
|
||||||
continue
|
continue
|
||||||
|
@ -311,7 +311,7 @@ func testRepackCopy(t *testing.T, version uint) {
|
||||||
reloadIndex(t, dstRepo)
|
reloadIndex(t, dstRepo)
|
||||||
|
|
||||||
for h := range keepBlobs {
|
for h := range keepBlobs {
|
||||||
list := dstRepo.LookupBlob(h)
|
list := dstRepo.LookupBlob(h.Type, h.ID)
|
||||||
if len(list) == 0 {
|
if len(list) == 0 {
|
||||||
t.Errorf("unable to find blob %v in repo", h.ID.Str())
|
t.Errorf("unable to find blob %v in repo", h.ID.Str())
|
||||||
continue
|
continue
|
||||||
|
|
|
@ -578,8 +578,8 @@ func (r *Repository) Connections() uint {
|
||||||
return r.be.Connections()
|
return r.be.Connections()
|
||||||
}
|
}
|
||||||
|
|
||||||
func (r *Repository) LookupBlob(bh restic.BlobHandle) []restic.PackedBlob {
|
func (r *Repository) LookupBlob(tpe restic.BlobType, id restic.ID) []restic.PackedBlob {
|
||||||
return r.idx.Lookup(bh)
|
return r.idx.Lookup(restic.BlobHandle{Type: tpe, ID: id})
|
||||||
}
|
}
|
||||||
|
|
||||||
// LookupBlobSize returns the size of blob id.
|
// LookupBlobSize returns the size of blob id.
|
||||||
|
|
|
@ -161,7 +161,7 @@ func TestLoadBlobBroken(t *testing.T) {
|
||||||
data, err := repo.LoadBlob(context.TODO(), restic.TreeBlob, id, nil)
|
data, err := repo.LoadBlob(context.TODO(), restic.TreeBlob, id, nil)
|
||||||
rtest.OK(t, err)
|
rtest.OK(t, err)
|
||||||
rtest.Assert(t, bytes.Equal(buf, data), "data mismatch")
|
rtest.Assert(t, bytes.Equal(buf, data), "data mismatch")
|
||||||
pack := repo.LookupBlob(restic.BlobHandle{Type: restic.TreeBlob, ID: id})[0].PackID
|
pack := repo.LookupBlob(restic.TreeBlob, id)[0].PackID
|
||||||
rtest.Assert(t, c.Has(backend.Handle{Type: restic.PackFile, Name: pack.String()}), "expected tree pack to be cached")
|
rtest.Assert(t, c.Has(backend.Handle{Type: restic.PackFile, Name: pack.String()}), "expected tree pack to be cached")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -439,7 +439,7 @@ func TestListPack(t *testing.T) {
|
||||||
repo.UseCache(c)
|
repo.UseCache(c)
|
||||||
|
|
||||||
// Forcibly cache pack file
|
// Forcibly cache pack file
|
||||||
packID := repo.LookupBlob(restic.BlobHandle{Type: restic.TreeBlob, ID: id})[0].PackID
|
packID := repo.LookupBlob(restic.TreeBlob, id)[0].PackID
|
||||||
rtest.OK(t, be.Load(context.TODO(), backend.Handle{Type: restic.PackFile, IsMetadata: true, Name: packID.String()}, 0, 0, func(rd io.Reader) error { return nil }))
|
rtest.OK(t, be.Load(context.TODO(), backend.Handle{Type: restic.PackFile, IsMetadata: true, Name: packID.String()}, 0, 0, func(rd io.Reader) error { return nil }))
|
||||||
|
|
||||||
// Get size to list pack
|
// Get size to list pack
|
||||||
|
|
|
@ -25,7 +25,7 @@ type Repository interface {
|
||||||
SetIndex(mi MasterIndex) error
|
SetIndex(mi MasterIndex) error
|
||||||
SaveIndex(ctx context.Context, excludePacks IDSet, extraObsolete IDs, opts MasterIndexSaveOpts) error
|
SaveIndex(ctx context.Context, excludePacks IDSet, extraObsolete IDs, opts MasterIndexSaveOpts) error
|
||||||
|
|
||||||
LookupBlob(bh BlobHandle) []PackedBlob
|
LookupBlob(t BlobType, id ID) []PackedBlob
|
||||||
LookupBlobSize(t BlobType, id ID) (size uint, exists bool)
|
LookupBlobSize(t BlobType, id ID) (size uint, exists bool)
|
||||||
|
|
||||||
// ListBlobs runs fn on all blobs known to the index. When the context is cancelled,
|
// ListBlobs runs fn on all blobs known to the index. When the context is cancelled,
|
||||||
|
|
|
@ -48,7 +48,7 @@ type blobsLoaderFn func(ctx context.Context, packID restic.ID, blobs []restic.Bl
|
||||||
|
|
||||||
// fileRestorer restores set of files
|
// fileRestorer restores set of files
|
||||||
type fileRestorer struct {
|
type fileRestorer struct {
|
||||||
idx func(restic.BlobHandle) []restic.PackedBlob
|
idx func(restic.BlobType, restic.ID) []restic.PackedBlob
|
||||||
blobsLoader blobsLoaderFn
|
blobsLoader blobsLoaderFn
|
||||||
|
|
||||||
workerCount int
|
workerCount int
|
||||||
|
@ -64,7 +64,7 @@ type fileRestorer struct {
|
||||||
|
|
||||||
func newFileRestorer(dst string,
|
func newFileRestorer(dst string,
|
||||||
blobsLoader blobsLoaderFn,
|
blobsLoader blobsLoaderFn,
|
||||||
idx func(restic.BlobHandle) []restic.PackedBlob,
|
idx func(restic.BlobType, restic.ID) []restic.PackedBlob,
|
||||||
connections uint,
|
connections uint,
|
||||||
sparse bool,
|
sparse bool,
|
||||||
progress *restore.Progress) *fileRestorer {
|
progress *restore.Progress) *fileRestorer {
|
||||||
|
@ -99,7 +99,7 @@ func (r *fileRestorer) forEachBlob(blobIDs []restic.ID, fn func(packID restic.ID
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, blobID := range blobIDs {
|
for _, blobID := range blobIDs {
|
||||||
packs := r.idx(restic.BlobHandle{ID: blobID, Type: restic.DataBlob})
|
packs := r.idx(restic.DataBlob, blobID)
|
||||||
if len(packs) == 0 {
|
if len(packs) == 0 {
|
||||||
return errors.Errorf("Unknown blob %s", blobID.String())
|
return errors.Errorf("Unknown blob %s", blobID.String())
|
||||||
}
|
}
|
||||||
|
@ -227,7 +227,7 @@ func (r *fileRestorer) downloadPack(ctx context.Context, pack *packInfo) error {
|
||||||
}
|
}
|
||||||
} else if packsMap, ok := file.blobs.(map[restic.ID][]fileBlobInfo); ok {
|
} else if packsMap, ok := file.blobs.(map[restic.ID][]fileBlobInfo); ok {
|
||||||
for _, blob := range packsMap[pack.id] {
|
for _, blob := range packsMap[pack.id] {
|
||||||
idxPacks := r.idx(restic.BlobHandle{ID: blob.id, Type: restic.DataBlob})
|
idxPacks := r.idx(restic.DataBlob, blob.id)
|
||||||
for _, idxPack := range idxPacks {
|
for _, idxPack := range idxPacks {
|
||||||
if idxPack.PackID.Equal(pack.id) {
|
if idxPack.PackID.Equal(pack.id) {
|
||||||
addBlob(idxPack.Blob, blob.offset)
|
addBlob(idxPack.Blob, blob.offset)
|
||||||
|
|
|
@ -35,8 +35,8 @@ type TestRepo struct {
|
||||||
loader blobsLoaderFn
|
loader blobsLoaderFn
|
||||||
}
|
}
|
||||||
|
|
||||||
func (i *TestRepo) Lookup(bh restic.BlobHandle) []restic.PackedBlob {
|
func (i *TestRepo) Lookup(tpe restic.BlobType, id restic.ID) []restic.PackedBlob {
|
||||||
packs := i.blobs[bh.ID]
|
packs := i.blobs[id]
|
||||||
return packs
|
return packs
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue