From 90847a603c7bf19bf98ea3675f1ee04f23b44472 Mon Sep 17 00:00:00 2001 From: Lunny Xiao Date: Wed, 19 Dec 2018 16:37:48 +0800 Subject: [PATCH] fix indexer reindex bug when gitea restart (#5563) * fix issue indexer bug reindex when restart gitea * also fix code indexer reindex when gitea restart --- modules/indexer/issue.go | 14 ++++++++++---- modules/indexer/repo.go | 13 +++++++++---- 2 files changed, 19 insertions(+), 8 deletions(-) diff --git a/modules/indexer/issue.go b/modules/indexer/issue.go index b0d231a7cf72..29c78307b633 100644 --- a/modules/indexer/issue.go +++ b/modules/indexer/issue.go @@ -60,7 +60,7 @@ func InitIssueIndexer(populateIndexer func() error) { return } - if err = createIssueIndexer(); err != nil { + if err = createIssueIndexer(setting.Indexer.IssuePath, issueIndexerLatestVersion); err != nil { log.Fatal(4, "InitIssuesIndexer: create index, %v", err) } if err = populateIndexer(); err != nil { @@ -69,7 +69,7 @@ func InitIssueIndexer(populateIndexer func() error) { } // createIssueIndexer create an issue indexer if one does not already exist -func createIssueIndexer() error { +func createIssueIndexer(path string, latestVersion int) error { mapping := bleve.NewIndexMapping() docMapping := bleve.NewDocumentMapping() @@ -100,8 +100,14 @@ func createIssueIndexer() error { mapping.AddDocumentMapping("_all", bleve.NewDocumentDisabledMapping()) var err error - issueIndexer, err = bleve.New(setting.Indexer.IssuePath, mapping) - return err + issueIndexer, err = bleve.New(path, mapping) + if err != nil { + return err + } + + return rupture.WriteIndexMetadata(path, &rupture.IndexMetadata{ + Version: latestVersion, + }) } // IssueIndexerBatch batch to add updates to diff --git a/modules/indexer/repo.go b/modules/indexer/repo.go index 4d1e79215243..20e0fa6b1854 100644 --- a/modules/indexer/repo.go +++ b/modules/indexer/repo.go @@ -84,7 +84,7 @@ func InitRepoIndexer(populateIndexer func() error) { return } - if err = createRepoIndexer(); err != nil { + if err = createRepoIndexer(setting.Indexer.RepoPath, repoIndexerLatestVersion); err != nil { log.Fatal(4, "CreateRepoIndexer: %v", err) } if err = populateIndexer(); err != nil { @@ -93,7 +93,7 @@ func InitRepoIndexer(populateIndexer func() error) { } // createRepoIndexer create a repo indexer if one does not already exist -func createRepoIndexer() error { +func createRepoIndexer(path string, latestVersion int) error { var err error docMapping := bleve.NewDocumentMapping() numericFieldMapping := bleve.NewNumericFieldMapping() @@ -119,8 +119,13 @@ func createRepoIndexer() error { mapping.AddDocumentMapping(repoIndexerDocType, docMapping) mapping.AddDocumentMapping("_all", bleve.NewDocumentDisabledMapping()) - repoIndexer, err = bleve.New(setting.Indexer.RepoPath, mapping) - return err + repoIndexer, err = bleve.New(path, mapping) + if err != nil { + return err + } + return rupture.WriteIndexMetadata(path, &rupture.IndexMetadata{ + Version: latestVersion, + }) } func filenameIndexerID(repoID int64, filename string) string {