Skip to content

Commit ccff571

Browse files
ethantkoeniglafriks
authored andcommitted
Automatically regenerate indexer for incompatible versions (#2524)
1 parent 28f4de2 commit ccff571

File tree

1 file changed

+18
-19
lines changed

1 file changed

+18
-19
lines changed

modules/indexer/issue.go

Lines changed: 18 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import (
1515
"github.com/blevesearch/bleve/analysis/token/lowercase"
1616
"github.com/blevesearch/bleve/analysis/token/unicodenorm"
1717
"github.com/blevesearch/bleve/analysis/tokenizer/unicode"
18+
"github.com/blevesearch/bleve/index/upsidedown"
1819
)
1920

2021
// issueIndexer (thread-safe) index for searching issues
@@ -39,27 +40,25 @@ const issueIndexerAnalyzer = "issueIndexer"
3940
// InitIssueIndexer initialize issue indexer
4041
func InitIssueIndexer(populateIndexer func() error) {
4142
_, err := os.Stat(setting.Indexer.IssuePath)
42-
if err != nil {
43-
if os.IsNotExist(err) {
44-
if err = createIssueIndexer(); err != nil {
45-
log.Fatal(4, "CreateIssuesIndexer: %v", err)
46-
}
47-
if err = populateIndexer(); err != nil {
48-
log.Fatal(4, "PopulateIssuesIndex: %v", err)
49-
}
50-
} else {
51-
log.Fatal(4, "InitIssuesIndexer: %v", err)
52-
}
53-
} else {
43+
if err != nil && !os.IsNotExist(err) {
44+
log.Fatal(4, "InitIssueIndexer: %v", err)
45+
} else if err == nil {
5446
issueIndexer, err = bleve.Open(setting.Indexer.IssuePath)
55-
if err != nil {
56-
log.Error(4, "Unable to open issues indexer (%s)."+
57-
" If the error is due to incompatible versions, try deleting the indexer files;"+
58-
" gitea will recreate them with the appropriate version the next time it runs."+
59-
" Deleting the indexer files will not result in loss of data.",
60-
setting.Indexer.IssuePath)
61-
log.Fatal(4, "InitIssuesIndexer, open index: %v", err)
47+
if err == nil {
48+
return
49+
} else if err != upsidedown.IncompatibleVersion {
50+
log.Fatal(4, "InitIssueIndexer, open index: %v", err)
6251
}
52+
log.Warn("Incompatible bleve version, deleting and recreating issue indexer")
53+
if err = os.RemoveAll(setting.Indexer.IssuePath); err != nil {
54+
log.Fatal(4, "InitIssueIndexer: remove index, %v", err)
55+
}
56+
}
57+
if err = createIssueIndexer(); err != nil {
58+
log.Fatal(4, "InitIssuesIndexer: create index, %v", err)
59+
}
60+
if err = populateIndexer(); err != nil {
61+
log.Fatal(4, "InitIssueIndexer: populate index, %v", err)
6362
}
6463
}
6564

0 commit comments

Comments
 (0)