mirror of
				https://github.com/go-gitea/gitea
				synced 2025-11-03 21:08:25 +00:00 
			
		
		
		
	Automatically regenerate indexer for incompatible versions (#2524)
This commit is contained in:
		@@ -15,6 +15,7 @@ import (
 | 
			
		||||
	"github.com/blevesearch/bleve/analysis/token/lowercase"
 | 
			
		||||
	"github.com/blevesearch/bleve/analysis/token/unicodenorm"
 | 
			
		||||
	"github.com/blevesearch/bleve/analysis/tokenizer/unicode"
 | 
			
		||||
	"github.com/blevesearch/bleve/index/upsidedown"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// issueIndexer (thread-safe) index for searching issues
 | 
			
		||||
@@ -39,27 +40,25 @@ const issueIndexerAnalyzer = "issueIndexer"
 | 
			
		||||
// InitIssueIndexer initialize issue indexer
 | 
			
		||||
func InitIssueIndexer(populateIndexer func() error) {
 | 
			
		||||
	_, err := os.Stat(setting.Indexer.IssuePath)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		if os.IsNotExist(err) {
 | 
			
		||||
			if err = createIssueIndexer(); err != nil {
 | 
			
		||||
				log.Fatal(4, "CreateIssuesIndexer: %v", err)
 | 
			
		||||
			}
 | 
			
		||||
			if err = populateIndexer(); err != nil {
 | 
			
		||||
				log.Fatal(4, "PopulateIssuesIndex: %v", err)
 | 
			
		||||
			}
 | 
			
		||||
		} else {
 | 
			
		||||
			log.Fatal(4, "InitIssuesIndexer: %v", err)
 | 
			
		||||
		}
 | 
			
		||||
	} else {
 | 
			
		||||
	if err != nil && !os.IsNotExist(err) {
 | 
			
		||||
		log.Fatal(4, "InitIssueIndexer: %v", err)
 | 
			
		||||
	} else if err == nil {
 | 
			
		||||
		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)
 | 
			
		||||
		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 {
 | 
			
		||||
		log.Fatal(4, "InitIssuesIndexer: create index, %v", err)
 | 
			
		||||
	}
 | 
			
		||||
	if err = populateIndexer(); err != nil {
 | 
			
		||||
		log.Fatal(4, "InitIssueIndexer: populate index, %v", err)
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user