]> source.dussan.org Git - gitea.git/commitdiff
Make Repo Code Indexer an Unique Queue (#17515)
authorzeripath <art27@cantab.net>
Tue, 2 Nov 2021 03:14:24 +0000 (03:14 +0000)
committerGitHub <noreply@github.com>
Tue, 2 Nov 2021 03:14:24 +0000 (11:14 +0800)
The functioning of the code indexer queue really only makes sense as an unique queue
and doing this allows use to simplify the indexer data to simply delete the data if
the repo is no longer in the db.

Signed-off-by: Andrew Thornton <art27@cantab.net>
integrations/repo_search_test.go
modules/indexer/code/indexer.go
modules/notification/indexer/indexer.go

index 6f2ee374600231257078357177d8f0316ab7ae1c..56d89fee30408069a83591a7d54981467d0347c9 100644 (file)
@@ -44,7 +44,6 @@ func TestSearchRepo(t *testing.T) {
        repo, err = models.GetRepositoryByOwnerAndName("user2", "glob")
        assert.NoError(t, err)
 
-       executeIndexer(t, repo, code_indexer.DeleteRepoFromIndexer)
        executeIndexer(t, repo, code_indexer.UpdateRepoIndexer)
 
        testSearch(t, "/user2/glob/search?q=loren&page=1", []string{"a.txt"})
index 46b5905059936752a0a3950380cf0c36106f7b86..981167a8254a5a7b38634f755860b293e2a2fe5b 100644 (file)
@@ -75,16 +75,18 @@ func filenameOfIndexerID(indexerID string) string {
 
 // IndexerData represents data stored in the code indexer
 type IndexerData struct {
-       RepoID   int64
-       IsDelete bool
+       RepoID int64
 }
 
 var (
-       indexerQueue queue.Queue
+       indexerQueue queue.UniqueQueue
 )
 
 func index(indexer Indexer, repoID int64) error {
        repo, err := models.GetRepositoryByID(repoID)
+       if models.IsErrRepoNotExist(err) {
+               return indexer.Delete(repoID)
+       }
        if err != nil {
                return err
        }
@@ -146,22 +148,16 @@ func Init() {
                                        log.Error("Unable to process provided datum: %v - not possible to cast to IndexerData", datum)
                                        continue
                                }
-                               log.Trace("IndexerData Process: %v %t", indexerData.RepoID, indexerData.IsDelete)
-
-                               if indexerData.IsDelete {
-                                       if err := indexer.Delete(indexerData.RepoID); err != nil {
-                                               log.Error("indexer.Delete: %v", err)
-                                       }
-                               } else {
-                                       if err := index(indexer, indexerData.RepoID); err != nil {
-                                               log.Error("index: %v", err)
-                                               continue
-                                       }
+                               log.Trace("IndexerData Process Repo: %d", indexerData.RepoID)
+
+                               if err := index(indexer, indexerData.RepoID); err != nil {
+                                       log.Error("index: %v", err)
+                                       continue
                                }
                        }
                }
 
-               indexerQueue = queue.CreateQueue("code_indexer", handler, &IndexerData{})
+               indexerQueue = queue.CreateUniqueQueue("code_indexer", handler, &IndexerData{})
                if indexerQueue == nil {
                        log.Fatal("Unable to create codes indexer queue")
                }
@@ -265,14 +261,6 @@ func Init() {
        }
 }
 
-// DeleteRepoFromIndexer remove all of a repository's entries from the indexer
-func DeleteRepoFromIndexer(repo *models.Repository) {
-       indexData := &IndexerData{RepoID: repo.ID, IsDelete: true}
-       if err := indexerQueue.Push(indexData); err != nil {
-               log.Error("Delete repo index data %v failed: %v", indexData, err)
-       }
-}
-
 // UpdateRepoIndexer update a repository's entries in the indexer
 func UpdateRepoIndexer(repo *models.Repository) {
        indexData := &IndexerData{RepoID: repo.ID}
index 205194ad3e2613af05bbae003661fe9b0c8fefb1..109eb1f62d815c7af89620d64cb010bf6f86323e 100644 (file)
@@ -109,7 +109,7 @@ func (r *indexerNotifier) NotifyDeleteComment(doer *models.User, comment *models
 func (r *indexerNotifier) NotifyDeleteRepository(doer *models.User, repo *models.Repository) {
        issue_indexer.DeleteRepoIssueIndexer(repo)
        if setting.Indexer.RepoIndexerEnabled {
-               code_indexer.DeleteRepoFromIndexer(repo)
+               code_indexer.UpdateRepoIndexer(repo)
        }
 }