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/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) | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue