mirror of
https://codeberg.org/forgejo/forgejo.git
synced 2024-12-23 20:17:03 +01:00
Automatically regenerate indexer for incompatible versions (#2524)
This commit is contained in:
parent
28f4de205f
commit
ccff57103a
1 changed files with 18 additions and 19 deletions
|
@ -15,6 +15,7 @@ import (
|
||||||
"github.com/blevesearch/bleve/analysis/token/lowercase"
|
"github.com/blevesearch/bleve/analysis/token/lowercase"
|
||||||
"github.com/blevesearch/bleve/analysis/token/unicodenorm"
|
"github.com/blevesearch/bleve/analysis/token/unicodenorm"
|
||||||
"github.com/blevesearch/bleve/analysis/tokenizer/unicode"
|
"github.com/blevesearch/bleve/analysis/tokenizer/unicode"
|
||||||
|
"github.com/blevesearch/bleve/index/upsidedown"
|
||||||
)
|
)
|
||||||
|
|
||||||
// issueIndexer (thread-safe) index for searching issues
|
// issueIndexer (thread-safe) index for searching issues
|
||||||
|
@ -39,27 +40,25 @@ const issueIndexerAnalyzer = "issueIndexer"
|
||||||
// InitIssueIndexer initialize issue indexer
|
// InitIssueIndexer initialize issue indexer
|
||||||
func InitIssueIndexer(populateIndexer func() error) {
|
func InitIssueIndexer(populateIndexer func() error) {
|
||||||
_, err := os.Stat(setting.Indexer.IssuePath)
|
_, err := os.Stat(setting.Indexer.IssuePath)
|
||||||
if err != nil {
|
if err != nil && !os.IsNotExist(err) {
|
||||||
if os.IsNotExist(err) {
|
log.Fatal(4, "InitIssueIndexer: %v", err)
|
||||||
|
} else if err == nil {
|
||||||
|
issueIndexer, err = bleve.Open(setting.Indexer.IssuePath)
|
||||||
|
if err == nil {
|
||||||
|
return
|
||||||
|
} else if err != upsidedown.IncompatibleVersion {
|
||||||
|
log.Fatal(4, "InitIssueIndexer, open index: %v", err)
|
||||||
|
}
|
||||||
|
log.Warn("Incompatible bleve version, deleting and recreating issue indexer")
|
||||||
|
if err = os.RemoveAll(setting.Indexer.IssuePath); err != nil {
|
||||||
|
log.Fatal(4, "InitIssueIndexer: remove index, %v", err)
|
||||||
|
}
|
||||||
|
}
|
||||||
if err = createIssueIndexer(); err != nil {
|
if err = createIssueIndexer(); err != nil {
|
||||||
log.Fatal(4, "CreateIssuesIndexer: %v", err)
|
log.Fatal(4, "InitIssuesIndexer: create index, %v", err)
|
||||||
}
|
}
|
||||||
if err = populateIndexer(); err != nil {
|
if err = populateIndexer(); err != nil {
|
||||||
log.Fatal(4, "PopulateIssuesIndex: %v", err)
|
log.Fatal(4, "InitIssueIndexer: populate index, %v", err)
|
||||||
}
|
|
||||||
} else {
|
|
||||||
log.Fatal(4, "InitIssuesIndexer: %v", err)
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
issueIndexer, err = bleve.Open(setting.Indexer.IssuePath)
|
|
||||||
if err != nil {
|
|
||||||
log.Error(4, "Unable to open issues indexer (%s)."+
|
|
||||||
" If the error is due to incompatible versions, try deleting the indexer files;"+
|
|
||||||
" gitea will recreate them with the appropriate version the next time it runs."+
|
|
||||||
" Deleting the indexer files will not result in loss of data.",
|
|
||||||
setting.Indexer.IssuePath)
|
|
||||||
log.Fatal(4, "InitIssuesIndexer, open index: %v", err)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue