forked from TrueCloudLab/restic
Merge pull request #3950 from MichaelEischer/misc-cleanups
Cleanups for cmd_debug/repository and remove dead code from restic package
This commit is contained in:
commit
7112a132c3
4 changed files with 9 additions and 97 deletions
|
@ -105,9 +105,7 @@ type Blob struct {
|
||||||
func printPacks(ctx context.Context, repo *repository.Repository, wr io.Writer) error {
|
func printPacks(ctx context.Context, repo *repository.Repository, wr io.Writer) error {
|
||||||
|
|
||||||
return repo.List(ctx, restic.PackFile, func(id restic.ID, size int64) error {
|
return repo.List(ctx, restic.PackFile, func(id restic.ID, size int64) error {
|
||||||
h := restic.Handle{Type: restic.PackFile, Name: id.String()}
|
blobs, _, err := repo.ListPack(ctx, id, size)
|
||||||
|
|
||||||
blobs, _, err := pack.List(repo.Key(), backend.ReaderAt(ctx, repo.Backend(), h), size)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
Warnf("error for pack %v: %v\n", id.Str(), err)
|
Warnf("error for pack %v: %v\n", id.Str(), err)
|
||||||
return nil
|
return nil
|
||||||
|
@ -312,14 +310,14 @@ func decryptUnsigned(ctx context.Context, k *crypto.Key, buf []byte) []byte {
|
||||||
return out
|
return out
|
||||||
}
|
}
|
||||||
|
|
||||||
func loadBlobs(ctx context.Context, repo restic.Repository, pack restic.ID, list []restic.Blob) error {
|
func loadBlobs(ctx context.Context, repo restic.Repository, packID restic.ID, list []restic.Blob) error {
|
||||||
dec, err := zstd.NewReader(nil)
|
dec, err := zstd.NewReader(nil)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
be := repo.Backend()
|
be := repo.Backend()
|
||||||
h := restic.Handle{
|
h := restic.Handle{
|
||||||
Name: pack.String(),
|
Name: packID.String(),
|
||||||
Type: restic.PackFile,
|
Type: restic.PackFile,
|
||||||
}
|
}
|
||||||
for _, blob := range list {
|
for _, blob := range list {
|
||||||
|
@ -527,7 +525,7 @@ func examinePack(ctx context.Context, repo restic.Repository, id restic.ID) erro
|
||||||
Printf(" ========================================\n")
|
Printf(" ========================================\n")
|
||||||
Printf(" inspect the pack itself\n")
|
Printf(" inspect the pack itself\n")
|
||||||
|
|
||||||
blobs, _, err := pack.List(repo.Key(), backend.ReaderAt(ctx, repo.Backend(), h), fi.Size)
|
blobs, _, err := repo.ListPack(ctx, id, fi.Size)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("pack %v: %v", id.Str(), err)
|
return fmt.Errorf("pack %v: %v", id.Str(), err)
|
||||||
}
|
}
|
||||||
|
@ -558,7 +556,7 @@ func checkPackSize(blobs []restic.Blob, fileSize int64) {
|
||||||
size += uint64(pack.CalculateHeaderSize(blobs))
|
size += uint64(pack.CalculateHeaderSize(blobs))
|
||||||
|
|
||||||
if uint64(fileSize) != size {
|
if uint64(fileSize) != size {
|
||||||
Printf(" file sizes do not match: computed %v from index, file size is %v\n", size, fileSize)
|
Printf(" file sizes do not match: computed %v, file size is %v\n", size, fileSize)
|
||||||
} else {
|
} else {
|
||||||
Printf(" file sizes match\n")
|
Printf(" file sizes match\n")
|
||||||
}
|
}
|
||||||
|
|
|
@ -163,12 +163,6 @@ func (r *Repository) SetDryRun() {
|
||||||
r.be = dryrun.New(r.be)
|
r.be = dryrun.New(r.be)
|
||||||
}
|
}
|
||||||
|
|
||||||
// PrefixLength returns the number of bytes required so that all prefixes of
|
|
||||||
// all IDs of type t are unique.
|
|
||||||
func (r *Repository) PrefixLength(ctx context.Context, t restic.FileType) (int, error) {
|
|
||||||
return restic.PrefixLength(ctx, r.be, t)
|
|
||||||
}
|
|
||||||
|
|
||||||
// LoadUnpacked loads and decrypts the file with the given type and ID, using
|
// LoadUnpacked loads and decrypts the file with the given type and ID, using
|
||||||
// the supplied buffer (which must be empty). If the buffer is nil, a new
|
// the supplied buffer (which must be empty). If the buffer is nil, a new
|
||||||
// buffer will be allocated and returned.
|
// buffer will be allocated and returned.
|
||||||
|
@ -575,7 +569,7 @@ func (r *Repository) Index() restic.MasterIndex {
|
||||||
// SetIndex instructs the repository to use the given index.
|
// SetIndex instructs the repository to use the given index.
|
||||||
func (r *Repository) SetIndex(i restic.MasterIndex) error {
|
func (r *Repository) SetIndex(i restic.MasterIndex) error {
|
||||||
r.idx = i.(*MasterIndex)
|
r.idx = i.(*MasterIndex)
|
||||||
return r.PrepareCache()
|
return r.prepareCache()
|
||||||
}
|
}
|
||||||
|
|
||||||
// LoadIndex loads all index files from the backend in parallel and stores them
|
// LoadIndex loads all index files from the backend in parallel and stores them
|
||||||
|
@ -617,7 +611,7 @@ func (r *Repository) LoadIndex(ctx context.Context) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
// remove index files from the cache which have been removed in the repo
|
// remove index files from the cache which have been removed in the repo
|
||||||
return r.PrepareCache()
|
return r.prepareCache()
|
||||||
}
|
}
|
||||||
|
|
||||||
// CreateIndexFromPacks creates a new index by reading all given pack files (with sizes).
|
// CreateIndexFromPacks creates a new index by reading all given pack files (with sizes).
|
||||||
|
@ -683,9 +677,9 @@ func (r *Repository) CreateIndexFromPacks(ctx context.Context, packsize map[rest
|
||||||
return invalid, nil
|
return invalid, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// PrepareCache initializes the local cache. indexIDs is the list of IDs of
|
// prepareCache initializes the local cache. indexIDs is the list of IDs of
|
||||||
// index files still present in the repo.
|
// index files still present in the repo.
|
||||||
func (r *Repository) PrepareCache() error {
|
func (r *Repository) prepareCache() error {
|
||||||
if r.Cache == nil {
|
if r.Cache == nil {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
|
@ -61,42 +61,3 @@ func Find(ctx context.Context, be Lister, t FileType, prefix string) (string, er
|
||||||
|
|
||||||
return "", &NoIDByPrefixError{prefix}
|
return "", &NoIDByPrefixError{prefix}
|
||||||
}
|
}
|
||||||
|
|
||||||
const minPrefixLength = 8
|
|
||||||
|
|
||||||
// PrefixLength returns the number of bytes required so that all prefixes of
|
|
||||||
// all names of type t are unique.
|
|
||||||
func PrefixLength(ctx context.Context, be Lister, t FileType) (int, error) {
|
|
||||||
// load all IDs of the given type
|
|
||||||
list := make([]string, 0, 100)
|
|
||||||
|
|
||||||
ctx, cancel := context.WithCancel(ctx)
|
|
||||||
defer cancel()
|
|
||||||
|
|
||||||
err := be.List(ctx, t, func(fi FileInfo) error {
|
|
||||||
list = append(list, fi.Name)
|
|
||||||
return nil
|
|
||||||
})
|
|
||||||
|
|
||||||
if err != nil {
|
|
||||||
return 0, err
|
|
||||||
}
|
|
||||||
|
|
||||||
// select prefixes of length l, test if the last one is the same as the current one
|
|
||||||
var id ID
|
|
||||||
outer:
|
|
||||||
for l := minPrefixLength; l < len(id); l++ {
|
|
||||||
var last string
|
|
||||||
|
|
||||||
for _, name := range list {
|
|
||||||
if last == name[:l] {
|
|
||||||
continue outer
|
|
||||||
}
|
|
||||||
last = name[:l]
|
|
||||||
}
|
|
||||||
|
|
||||||
return l, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
return len(id), nil
|
|
||||||
}
|
|
||||||
|
|
|
@ -75,44 +75,3 @@ func TestFind(t *testing.T) {
|
||||||
t.Errorf("Find should not return a match on error.")
|
t.Errorf("Find should not return a match on error.")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestPrefixLength(t *testing.T) {
|
|
||||||
list := samples
|
|
||||||
|
|
||||||
m := mockBackend{}
|
|
||||||
m.list = func(ctx context.Context, t FileType, fn func(FileInfo) error) error {
|
|
||||||
for _, id := range list {
|
|
||||||
err := fn(FileInfo{Name: id.String()})
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
l, err := PrefixLength(context.TODO(), m, SnapshotFile)
|
|
||||||
if err != nil {
|
|
||||||
t.Error(err)
|
|
||||||
}
|
|
||||||
if l != 19 {
|
|
||||||
t.Errorf("wrong prefix length returned, want %d, got %d", 19, l)
|
|
||||||
}
|
|
||||||
|
|
||||||
list = samples[:3]
|
|
||||||
l, err = PrefixLength(context.TODO(), m, SnapshotFile)
|
|
||||||
if err != nil {
|
|
||||||
t.Error(err)
|
|
||||||
}
|
|
||||||
if l != 19 {
|
|
||||||
t.Errorf("wrong prefix length returned, want %d, got %d", 19, l)
|
|
||||||
}
|
|
||||||
|
|
||||||
list = samples[3:]
|
|
||||||
l, err = PrefixLength(context.TODO(), m, SnapshotFile)
|
|
||||||
if err != nil {
|
|
||||||
t.Error(err)
|
|
||||||
}
|
|
||||||
if l != 8 {
|
|
||||||
t.Errorf("wrong prefix length returned, want %d, got %d", 8, l)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue