summaryrefslogtreecommitdiffstats
path: root/models
diff options
context:
space:
mode:
authorLauris BH <lauris@nix.lv>2020-02-14 14:42:30 +0200
committerGitHub <noreply@github.com>2020-02-14 13:42:30 +0100
commita1d796f521919e653f5ceb64d7d361a64cc0139f (patch)
treeee77601af4b21809317b930f5c7232ac52f2a638 /models
parentff261dafc4845941756a2421acec265663b94e5e (diff)
downloadgitea-a1d796f521919e653f5ceb64d7d361a64cc0139f.tar.gz
gitea-a1d796f521919e653f5ceb64d7d361a64cc0139f.zip
Index code and stats only for non-empty repositories (#10251)
Fix test and switch to unique queue Fix MySQL support when deleting old statistics
Diffstat (limited to 'models')
-rw-r--r--models/fixtures/repository.yml1
-rw-r--r--models/repo_indexer.go8
-rw-r--r--models/repo_language_stats.go13
3 files changed, 17 insertions, 5 deletions
diff --git a/models/fixtures/repository.yml b/models/fixtures/repository.yml
index 05989d9030..3b86dd0f81 100644
--- a/models/fixtures/repository.yml
+++ b/models/fixtures/repository.yml
@@ -4,6 +4,7 @@
owner_name: user2
lower_name: repo1
name: repo1
+ is_empty: false
is_private: false
num_issues: 2
num_closed_issues: 1
diff --git a/models/repo_indexer.go b/models/repo_indexer.go
index 1f5ab928ab..de3358f55a 100644
--- a/models/repo_indexer.go
+++ b/models/repo_indexer.go
@@ -34,6 +34,8 @@ func GetUnindexedRepos(indexerType RepoIndexerType, maxRepoID int64, page, pageS
ids := make([]int64, 0, 50)
cond := builder.Cond(builder.IsNull{
"repo_indexer_status.id",
+ }).And(builder.Eq{
+ "repository.is_empty": false,
})
sess := x.Table("repository").Join("LEFT OUTER", "repo_indexer_status", "repository.id = repo_indexer_status.repo_id AND repo_indexer_status.indexer_type = ?", indexerType)
if maxRepoID > 0 {
@@ -66,11 +68,11 @@ func (repo *Repository) getIndexerStatus(e Engine, indexerType RepoIndexerType)
return repo.StatsIndexerStatus, nil
}
}
- status := &RepoIndexerStatus{RepoID: repo.ID, IndexerType: indexerType}
- has, err := e.Get(status)
- if err != nil {
+ status := &RepoIndexerStatus{RepoID: repo.ID}
+ if has, err := e.Where("`indexer_type` = ?", indexerType).Get(status); err != nil {
return nil, err
} else if !has {
+ status.IndexerType = indexerType
status.CommitSha = ""
}
switch indexerType {
diff --git a/models/repo_language_stats.go b/models/repo_language_stats.go
index 4c3171e292..bf8f5f59d0 100644
--- a/models/repo_language_stats.go
+++ b/models/repo_language_stats.go
@@ -125,10 +125,19 @@ func (repo *Repository) UpdateLanguageStats(commitID string, stats map[string]fl
}
}
// Delete old languages
- if _, err := sess.Where("`id` IN (SELECT `id` FROM `language_stat` WHERE `repo_id` = ? AND `commit_id` != ?)", repo.ID, commitID).Delete(&LanguageStat{}); err != nil {
- return err
+ statsToDelete := make([]int64, 0, len(oldstats))
+ for _, s := range oldstats {
+ if s.CommitID != commitID {
+ statsToDelete = append(statsToDelete, s.ID)
+ }
+ }
+ if len(statsToDelete) > 0 {
+ if _, err := sess.In("`id`", statsToDelete).Delete(&LanguageStat{}); err != nil {
+ return err
+ }
}
+ // Update indexer status
if err = repo.updateIndexerStatus(sess, RepoIndexerTypeStats, commitID); err != nil {
return err
}