diff --git a/server/backup/archiver.go b/server/backup/archiver.go index 9ead301..45ac593 100644 --- a/server/backup/archiver.go +++ b/server/backup/archiver.go @@ -26,7 +26,7 @@ type Archive struct { func (a *Archive) Create(dst string, ctx context.Context) (os.FileInfo, error) { f, err := os.OpenFile(dst, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0600) if err != nil { - return nil, err + return nil, errors.WithStack(err) } defer f.Close() @@ -58,7 +58,7 @@ func (a *Archive) Create(dst string, ctx context.Context) (os.FileInfo, error) { select { case <-ctx.Done(): - return ctx.Err() + return errors.WithStack(ctx.Err()) default: return a.addToArchive(p, tw) } @@ -75,12 +75,12 @@ func (a *Archive) Create(dst string, ctx context.Context) (os.FileInfo, error) { log.WithField("location", dst).Warn("failed to delete corrupted backup archive") } - return nil, err + return nil, errors.WithStack(err) } st, err := f.Stat() if err != nil { - return nil, err + return nil, errors.WithStack(err) } return st, nil @@ -91,6 +91,7 @@ func (a *Archive) addToArchive(p string, w *tar.Writer) error { f, err := os.Open(p) if err != nil { return err + return errors.WithStack(err) } defer f.Close() @@ -114,12 +115,12 @@ func (a *Archive) addToArchive(p string, w *tar.Writer) error { defer a.Unlock() if err := w.WriteHeader(header); err != nil { - return err + return errors.WithStack(err) } buf := make([]byte, 4*1024) if _, err := io.CopyBuffer(w, f, buf); err != nil { - return err + return errors.WithStack(err) } return nil diff --git a/server/backup/backup_local.go b/server/backup/backup_local.go index 3d49c63..a0ed4e4 100644 --- a/server/backup/backup_local.go +++ b/server/backup/backup_local.go @@ -24,7 +24,7 @@ func LocateLocal(uuid string) (*LocalBackup, os.FileInfo, error) { st, err := os.Stat(b.Path()) if err != nil { - return nil, nil, err + return nil, nil, errors.WithStack(err) } if st.IsDir() { @@ -48,7 +48,7 @@ func (b *LocalBackup) Generate(included *IncludedFiles, prefix string) (*Archive } if _, err := a.Create(b.Path(), context.Background()); err != nil { - return nil, err + return nil, errors.WithStack(err) } return b.Details(), nil diff --git a/server/backup/backup_s3.go b/server/backup/backup_s3.go index f578ef7..215283c 100644 --- a/server/backup/backup_s3.go +++ b/server/backup/backup_s3.go @@ -4,6 +4,7 @@ import ( "context" "fmt" "github.com/apex/log" + "github.com/pkg/errors" "io" "net/http" "os" @@ -33,17 +34,17 @@ func (s *S3Backup) Generate(included *IncludedFiles, prefix string) (*ArchiveDet } if _, err := a.Create(s.Path(), context.Background()); err != nil { - return nil, err + return nil, errors.WithStack(err) } rc, err := os.Open(s.Path()) if err != nil { - return nil, err + return nil, errors.WithStack(err) } defer rc.Close() if resp, err := s.generateRemoteRequest(rc); err != nil { - return nil, err + return nil, errors.WithStack(err) } else { resp.Body.Close()