forked from TrueCloudLab/restic
repository: fix parameter order of LookupBlobSize
All methods should use blobType followed by ID.
This commit is contained in:
parent
e848ad651a
commit
1266a4932f
17 changed files with 21 additions and 21 deletions
|
@ -167,7 +167,7 @@ func runCat(ctx context.Context, gopts GlobalOptions, args []string) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, t := range []restic.BlobType{restic.DataBlob, restic.TreeBlob} {
|
for _, t := range []restic.BlobType{restic.DataBlob, restic.TreeBlob} {
|
||||||
if _, ok := repo.LookupBlobSize(id, t); !ok {
|
if _, ok := repo.LookupBlobSize(t, id); !ok {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -202,7 +202,7 @@ func copyTree(ctx context.Context, srcRepo restic.Repository, dstRepo restic.Rep
|
||||||
|
|
||||||
// Do we already have this tree blob?
|
// Do we already have this tree blob?
|
||||||
treeHandle := restic.BlobHandle{ID: tree.ID, Type: restic.TreeBlob}
|
treeHandle := restic.BlobHandle{ID: tree.ID, Type: restic.TreeBlob}
|
||||||
if _, ok := dstRepo.LookupBlobSize(treeHandle.ID, treeHandle.Type); !ok {
|
if _, ok := dstRepo.LookupBlobSize(treeHandle.Type, treeHandle.ID); !ok {
|
||||||
// copy raw tree bytes to avoid problems if the serialization changes
|
// copy raw tree bytes to avoid problems if the serialization changes
|
||||||
enqueue(treeHandle)
|
enqueue(treeHandle)
|
||||||
}
|
}
|
||||||
|
@ -212,7 +212,7 @@ func copyTree(ctx context.Context, srcRepo restic.Repository, dstRepo restic.Rep
|
||||||
// Copy the blobs for this file.
|
// Copy the blobs for this file.
|
||||||
for _, blobID := range entry.Content {
|
for _, blobID := range entry.Content {
|
||||||
h := restic.BlobHandle{Type: restic.DataBlob, ID: blobID}
|
h := restic.BlobHandle{Type: restic.DataBlob, ID: blobID}
|
||||||
if _, ok := dstRepo.LookupBlobSize(h.ID, h.Type); !ok {
|
if _, ok := dstRepo.LookupBlobSize(h.Type, h.ID); !ok {
|
||||||
enqueue(h)
|
enqueue(h)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -156,7 +156,7 @@ func updateBlobs(repo restic.Loader, blobs restic.BlobSet, stats *DiffStat) {
|
||||||
stats.TreeBlobs++
|
stats.TreeBlobs++
|
||||||
}
|
}
|
||||||
|
|
||||||
size, found := repo.LookupBlobSize(h.ID, h.Type)
|
size, found := repo.LookupBlobSize(h.Type, h.ID)
|
||||||
if !found {
|
if !found {
|
||||||
Warnf("unable to find blob size for %v\n", h)
|
Warnf("unable to find blob size for %v\n", h)
|
||||||
continue
|
continue
|
||||||
|
|
|
@ -97,7 +97,7 @@ func runRepairSnapshots(ctx context.Context, gopts GlobalOptions, opts RepairOpt
|
||||||
var newSize uint64
|
var newSize uint64
|
||||||
// check all contents and remove if not available
|
// check all contents and remove if not available
|
||||||
for _, id := range node.Content {
|
for _, id := range node.Content {
|
||||||
if size, found := repo.LookupBlobSize(id, restic.DataBlob); !found {
|
if size, found := repo.LookupBlobSize(restic.DataBlob, id); !found {
|
||||||
ok = false
|
ok = false
|
||||||
} else {
|
} else {
|
||||||
newContent = append(newContent, id)
|
newContent = append(newContent, id)
|
||||||
|
|
|
@ -238,7 +238,7 @@ func statsWalkTree(repo restic.Loader, opts StatsOptions, stats *statsContainer,
|
||||||
}
|
}
|
||||||
if _, ok := stats.fileBlobs[nodePath][blobID]; !ok {
|
if _, ok := stats.fileBlobs[nodePath][blobID]; !ok {
|
||||||
// is always a data blob since we're accessing it via a file's Content array
|
// is always a data blob since we're accessing it via a file's Content array
|
||||||
blobSize, found := repo.LookupBlobSize(blobID, restic.DataBlob)
|
blobSize, found := repo.LookupBlobSize(restic.DataBlob, blobID)
|
||||||
if !found {
|
if !found {
|
||||||
return fmt.Errorf("blob %s not found for tree %s", blobID, parentTreeID)
|
return fmt.Errorf("blob %s not found for tree %s", blobID, parentTreeID)
|
||||||
}
|
}
|
||||||
|
|
|
@ -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 {
|
func (arch *Archiver) wrapLoadTreeError(id restic.ID, err error) error {
|
||||||
if _, ok := arch.Repo.LookupBlobSize(id, restic.TreeBlob); ok {
|
if _, ok := arch.Repo.LookupBlobSize(restic.TreeBlob, id); ok {
|
||||||
err = errors.Errorf("tree %v could not be loaded; the repository could be damaged: %v", id, err)
|
err = errors.Errorf("tree %v could not be loaded; the repository could be damaged: %v", id, err)
|
||||||
} else {
|
} else {
|
||||||
err = errors.Errorf("tree %v is not known; the repository could be damaged, run `repair index` to try to repair it", id)
|
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 {
|
func (arch *Archiver) allBlobsPresent(previous *restic.Node) bool {
|
||||||
// check if all blobs are contained in index
|
// check if all blobs are contained in index
|
||||||
for _, id := range previous.Content {
|
for _, id := range previous.Content {
|
||||||
if _, ok := arch.Repo.LookupBlobSize(id, restic.DataBlob); !ok {
|
if _, ok := arch.Repo.LookupBlobSize(restic.DataBlob, id); !ok {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -429,7 +429,7 @@ func (c *Checker) checkTree(id restic.ID, tree *restic.Tree) (errs []error) {
|
||||||
// unfortunately fails in some cases that are not resolvable
|
// unfortunately fails in some cases that are not resolvable
|
||||||
// by users, so we omit this check, see #1887
|
// by users, so we omit this check, see #1887
|
||||||
|
|
||||||
_, found := c.repo.LookupBlobSize(blobID, restic.DataBlob)
|
_, found := c.repo.LookupBlobSize(restic.DataBlob, blobID)
|
||||||
if !found {
|
if !found {
|
||||||
debug.Log("tree %v references blob %v which isn't contained in index", id, blobID)
|
debug.Log("tree %v references blob %v which isn't contained in index", id, blobID)
|
||||||
errs = append(errs, &Error{TreeID: id, Err: errors.Errorf("file %q blob %v not found in index", node.Name, blobID)})
|
errs = append(errs, &Error{TreeID: id, Err: errors.Errorf("file %q blob %v not found in index", node.Name, blobID)})
|
||||||
|
|
|
@ -461,11 +461,11 @@ func (r *delayRepository) LoadTree(ctx context.Context, id restic.ID) (*restic.T
|
||||||
return restic.LoadTree(ctx, r.Repository, id)
|
return restic.LoadTree(ctx, r.Repository, id)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (r *delayRepository) LookupBlobSize(id restic.ID, t restic.BlobType) (uint, bool) {
|
func (r *delayRepository) LookupBlobSize(t restic.BlobType, id restic.ID) (uint, bool) {
|
||||||
if id == r.DelayTree && t == restic.DataBlob {
|
if id == r.DelayTree && t == restic.DataBlob {
|
||||||
r.Unblock()
|
r.Unblock()
|
||||||
}
|
}
|
||||||
return r.Repository.LookupBlobSize(id, t)
|
return r.Repository.LookupBlobSize(t, id)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (r *delayRepository) Unblock() {
|
func (r *delayRepository) Unblock() {
|
||||||
|
|
|
@ -72,7 +72,7 @@ func (f *file) Open(_ context.Context, _ *fuse.OpenRequest, _ *fuse.OpenResponse
|
||||||
var bytes uint64
|
var bytes uint64
|
||||||
cumsize := make([]uint64, 1+len(f.node.Content))
|
cumsize := make([]uint64, 1+len(f.node.Content))
|
||||||
for i, id := range f.node.Content {
|
for i, id := range f.node.Content {
|
||||||
size, found := f.root.repo.LookupBlobSize(id, restic.DataBlob)
|
size, found := f.root.repo.LookupBlobSize(restic.DataBlob, id)
|
||||||
if !found {
|
if !found {
|
||||||
return nil, errors.Errorf("id %v not found in repository", id)
|
return nil, errors.Errorf("id %v not found in repository", id)
|
||||||
}
|
}
|
||||||
|
|
|
@ -89,7 +89,7 @@ func TestFuseFile(t *testing.T) {
|
||||||
memfile []byte
|
memfile []byte
|
||||||
)
|
)
|
||||||
for _, id := range content {
|
for _, id := range content {
|
||||||
size, found := repo.LookupBlobSize(id, restic.DataBlob)
|
size, found := repo.LookupBlobSize(restic.DataBlob, id)
|
||||||
rtest.Assert(t, found, "Expected to find blob id %v", id)
|
rtest.Assert(t, found, "Expected to find blob id %v", id)
|
||||||
filesize += uint64(size)
|
filesize += uint64(size)
|
||||||
|
|
||||||
|
|
|
@ -266,7 +266,7 @@ func testRepack(t *testing.T, version uint) {
|
||||||
}
|
}
|
||||||
|
|
||||||
for h := range removeBlobs {
|
for h := range removeBlobs {
|
||||||
if _, found := repo.LookupBlobSize(h.ID, h.Type); found {
|
if _, found := repo.LookupBlobSize(h.Type, h.ID); found {
|
||||||
t.Errorf("blob %v still contained in the repo", h)
|
t.Errorf("blob %v still contained in the repo", h)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -583,8 +583,8 @@ func (r *Repository) LookupBlob(bh restic.BlobHandle) []restic.PackedBlob {
|
||||||
}
|
}
|
||||||
|
|
||||||
// LookupBlobSize returns the size of blob id.
|
// LookupBlobSize returns the size of blob id.
|
||||||
func (r *Repository) LookupBlobSize(id restic.ID, tpe restic.BlobType) (uint, bool) {
|
func (r *Repository) LookupBlobSize(tpe restic.BlobType, id restic.ID) (uint, bool) {
|
||||||
return r.idx.LookupSize(restic.BlobHandle{ID: id, Type: tpe})
|
return r.idx.LookupSize(restic.BlobHandle{Type: tpe, ID: id})
|
||||||
}
|
}
|
||||||
|
|
||||||
func (r *Repository) SaveIndex(ctx context.Context, excludePacks restic.IDSet, extraObsolete restic.IDs, opts restic.MasterIndexSaveOpts) error {
|
func (r *Repository) SaveIndex(ctx context.Context, excludePacks restic.IDSet, extraObsolete restic.IDs, opts restic.MasterIndexSaveOpts) error {
|
||||||
|
|
|
@ -11,7 +11,7 @@ import (
|
||||||
// Loader loads a blob from a repository.
|
// Loader loads a blob from a repository.
|
||||||
type Loader interface {
|
type Loader interface {
|
||||||
LoadBlob(context.Context, BlobType, ID, []byte) ([]byte, error)
|
LoadBlob(context.Context, BlobType, ID, []byte) ([]byte, error)
|
||||||
LookupBlobSize(id ID, tpe BlobType) (uint, bool)
|
LookupBlobSize(tpe BlobType, id ID) (uint, bool)
|
||||||
Connections() uint
|
Connections() uint
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -166,7 +166,7 @@ func (r ForbiddenRepo) LoadBlob(context.Context, restic.BlobType, restic.ID, []b
|
||||||
return nil, errors.New("should not be called")
|
return nil, errors.New("should not be called")
|
||||||
}
|
}
|
||||||
|
|
||||||
func (r ForbiddenRepo) LookupBlobSize(_ restic.ID, _ restic.BlobType) (uint, bool) {
|
func (r ForbiddenRepo) LookupBlobSize(_ restic.BlobType, _ restic.ID) (uint, bool) {
|
||||||
return 0, false
|
return 0, false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -26,7 +26,7 @@ type Repository interface {
|
||||||
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(bh BlobHandle) []PackedBlob
|
||||||
LookupBlobSize(id ID, t BlobType) (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,
|
||||||
// the index iteration returns immediately with ctx.Err(). This blocks any modification of the index.
|
// the index iteration returns immediately with ctx.Err(). This blocks any modification of the index.
|
||||||
|
|
|
@ -77,7 +77,7 @@ func filterTrees(ctx context.Context, repo Loader, trees IDs, loaderChan chan<-
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
treeSize, found := repo.LookupBlobSize(nextTreeID.ID, TreeBlob)
|
treeSize, found := repo.LookupBlobSize(TreeBlob, nextTreeID.ID)
|
||||||
if found && treeSize > 50*1024*1024 {
|
if found && treeSize > 50*1024*1024 {
|
||||||
loadCh = hugeTreeLoaderChan
|
loadCh = hugeTreeLoaderChan
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -435,7 +435,7 @@ func (res *Restorer) verifyFile(target string, node *restic.Node, buf []byte) ([
|
||||||
|
|
||||||
var offset int64
|
var offset int64
|
||||||
for _, blobID := range node.Content {
|
for _, blobID := range node.Content {
|
||||||
length, found := res.repo.LookupBlobSize(blobID, restic.DataBlob)
|
length, found := res.repo.LookupBlobSize(restic.DataBlob, blobID)
|
||||||
if !found {
|
if !found {
|
||||||
return buf, errors.Errorf("Unable to fetch blob %s", blobID)
|
return buf, errors.Errorf("Unable to fetch blob %s", blobID)
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue