mirror of
https://github.com/octoleo/restic.git
synced 2024-12-22 19:08:55 +00:00
Merge pull request #3729 from MichaelEischer/full-ids-in-check
Include full IDs in check output
This commit is contained in:
commit
90e9c5c4cc
6
changelog/unreleased/pull-3729
Normal file
6
changelog/unreleased/pull-3729
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
Enhancement: Include full IDs in `check` warnings
|
||||||
|
|
||||||
|
To repair or inspect a damaged repository, it is often necessary to use the full IDs of objects stored in the repository.
|
||||||
|
The output of check now includes full IDs instead of their shortened variant.
|
||||||
|
|
||||||
|
https://github.com/restic/restic/pull/3729
|
@ -64,7 +64,7 @@ type ErrDuplicatePacks struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (e *ErrDuplicatePacks) Error() string {
|
func (e *ErrDuplicatePacks) Error() string {
|
||||||
return fmt.Sprintf("pack %v contained in several indexes: %v", e.PackID.Str(), e.Indexes)
|
return fmt.Sprintf("pack %v contained in several indexes: %v", e.PackID, e.Indexes)
|
||||||
}
|
}
|
||||||
|
|
||||||
// ErrOldIndexFormat is returned when an index with the old format is
|
// ErrOldIndexFormat is returned when an index with the old format is
|
||||||
@ -74,7 +74,7 @@ type ErrOldIndexFormat struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (err *ErrOldIndexFormat) Error() string {
|
func (err *ErrOldIndexFormat) Error() string {
|
||||||
return fmt.Sprintf("index %v has old format", err.ID.Str())
|
return fmt.Sprintf("index %v has old format", err.ID)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *Checker) LoadSnapshots(ctx context.Context) error {
|
func (c *Checker) LoadSnapshots(ctx context.Context) error {
|
||||||
@ -92,11 +92,11 @@ func (c *Checker) LoadIndex(ctx context.Context) (hints []error, errs []error) {
|
|||||||
debug.Log("process index %v, err %v", id, err)
|
debug.Log("process index %v, err %v", id, err)
|
||||||
|
|
||||||
if oldFormat {
|
if oldFormat {
|
||||||
debug.Log("index %v has old format", id.Str())
|
debug.Log("index %v has old format", id)
|
||||||
hints = append(hints, &ErrOldIndexFormat{id})
|
hints = append(hints, &ErrOldIndexFormat{id})
|
||||||
}
|
}
|
||||||
|
|
||||||
err = errors.Wrapf(err, "error loading index %v", id.Str())
|
err = errors.Wrapf(err, "error loading index %v", id)
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
errs = append(errs, err)
|
errs = append(errs, err)
|
||||||
@ -161,7 +161,7 @@ type PackError struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (e *PackError) Error() string {
|
func (e *PackError) Error() string {
|
||||||
return "pack " + e.ID.Str() + ": " + e.Err.Error()
|
return "pack " + e.ID.String() + ": " + e.Err.Error()
|
||||||
}
|
}
|
||||||
|
|
||||||
// IsOrphanedPack returns true if the error describes a pack which is not
|
// IsOrphanedPack returns true if the error describes a pack which is not
|
||||||
@ -229,20 +229,12 @@ func (c *Checker) Packs(ctx context.Context, errChan chan<- error) {
|
|||||||
// Error is an error that occurred while checking a repository.
|
// Error is an error that occurred while checking a repository.
|
||||||
type Error struct {
|
type Error struct {
|
||||||
TreeID restic.ID
|
TreeID restic.ID
|
||||||
BlobID restic.ID
|
|
||||||
Err error
|
Err error
|
||||||
}
|
}
|
||||||
|
|
||||||
func (e Error) Error() string {
|
func (e Error) Error() string {
|
||||||
if !e.BlobID.IsNull() && !e.TreeID.IsNull() {
|
|
||||||
msg := "tree " + e.TreeID.Str()
|
|
||||||
msg += ", blob " + e.BlobID.Str()
|
|
||||||
msg += ": " + e.Err.Error()
|
|
||||||
return msg
|
|
||||||
}
|
|
||||||
|
|
||||||
if !e.TreeID.IsNull() {
|
if !e.TreeID.IsNull() {
|
||||||
return "tree " + e.TreeID.Str() + ": " + e.Err.Error()
|
return "tree " + e.TreeID.String() + ": " + e.Err.Error()
|
||||||
}
|
}
|
||||||
|
|
||||||
return e.Err.Error()
|
return e.Err.Error()
|
||||||
@ -255,7 +247,7 @@ type TreeError struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (e *TreeError) Error() string {
|
func (e *TreeError) Error() string {
|
||||||
return fmt.Sprintf("tree %v: %v", e.ID.Str(), e.Errors)
|
return fmt.Sprintf("tree %v: %v", e.ID, e.Errors)
|
||||||
}
|
}
|
||||||
|
|
||||||
// checkTreeWorker checks the trees received and sends out errors to errChan.
|
// checkTreeWorker checks the trees received and sends out errors to errChan.
|
||||||
@ -525,11 +517,11 @@ func checkPack(ctx context.Context, r restic.Repository, id restic.ID, blobs []r
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
// failed to load the pack file, return as further checks cannot succeed anyways
|
// failed to load the pack file, return as further checks cannot succeed anyways
|
||||||
debug.Log(" error streaming pack: %v", err)
|
debug.Log(" error streaming pack: %v", err)
|
||||||
return errors.Errorf("pack %v failed to download: %v", err)
|
return errors.Errorf("pack %v failed to download: %v", id, err)
|
||||||
}
|
}
|
||||||
if !hash.Equal(id) {
|
if !hash.Equal(id) {
|
||||||
debug.Log("Pack ID does not match, want %v, got %v", id, hash)
|
debug.Log("Pack ID does not match, want %v, got %v", id, hash)
|
||||||
return errors.Errorf("Pack ID does not match, want %v, got %v", id.Str(), hash.Str())
|
return errors.Errorf("Pack ID does not match, want %v, got %v", id, hash)
|
||||||
}
|
}
|
||||||
|
|
||||||
blobs, hdrSize, err := pack.List(r.Key(), bytes.NewReader(hdrBuf), int64(len(hdrBuf)))
|
blobs, hdrSize, err := pack.List(r.Key(), bytes.NewReader(hdrBuf), int64(len(hdrBuf)))
|
||||||
@ -553,13 +545,13 @@ func checkPack(ctx context.Context, r restic.Repository, id restic.ID, blobs []r
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if !idxHas {
|
if !idxHas {
|
||||||
errs = append(errs, errors.Errorf("Blob %v is not contained in index or position is incorrect", blob.ID.Str()))
|
errs = append(errs, errors.Errorf("Blob %v is not contained in index or position is incorrect", blob.ID))
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if len(errs) > 0 {
|
if len(errs) > 0 {
|
||||||
return errors.Errorf("pack %v contains %v errors: %v", id.Str(), len(errs), errs)
|
return errors.Errorf("pack %v contains %v errors: %v", id, len(errs), errs)
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
|
Loading…
Reference in New Issue
Block a user