diff --git a/models/repo.go b/models/repo.go index c807916ddc3..7f2ec1f742b 100644 --- a/models/repo.go +++ b/models/repo.go @@ -740,15 +740,12 @@ func (repo *Repository) updateSize(e Engine) error { return fmt.Errorf("updateSize: %v", err) } - objs, err := repo.GetLFSMetaObjects(-1, 0) + lfsSize, err := e.Where("repository_id = ?", repo.ID).SumInt(new(LFSMetaObject), "size") if err != nil { return fmt.Errorf("updateSize: GetLFSMetaObjects: %v", err) } - for _, obj := range objs { - size += obj.Size - } - repo.Size = size + repo.Size = size + lfsSize _, err = e.ID(repo.ID).Cols("size").Update(repo) return err } diff --git a/modules/repository/check.go b/modules/repository/check.go index d13ddbb0b01..0485e9e83a5 100644 --- a/modules/repository/check.go +++ b/modules/repository/check.go @@ -91,6 +91,17 @@ func GitGcRepos(ctx context.Context, timeout time.Duration, args ...string) erro } return fmt.Errorf("Repository garbage collection failed in repo: %s: Error: %v", repo.FullName(), err) } + + // Now update the size of the repository + if err := repo.UpdateSize(models.DefaultDBContext()); err != nil { + log.Error("Updating size as part of garbage collection failed for %v. Stdout: %s\nError: %v", repo, stdout, err) + desc := fmt.Sprintf("Updating size as part of garbage collection failed for %s. Stdout: %s\nError: %v", repo.RepoPath(), stdout, err) + if err = models.CreateRepositoryNotice(desc); err != nil { + log.Error("CreateRepositoryNotice: %v", err) + } + return fmt.Errorf("Updating size as part of garbage collection failed in repo: %s: Error: %v", repo.FullName(), err) + } + return nil }, ); err != nil {