mirror of
				https://codeberg.org/forgejo/forgejo.git
				synced 2025-10-30 22:11:07 +00:00 
			
		
		
		
	Multiple Queue improvements: LevelDB Wait on empty, shutdown empty shadow level queue, reduce goroutines etc (#15693)
* move shutdownfns, terminatefns and hammerfns out of separate goroutines Coalesce the shutdownfns etc into a list of functions that get run at shutdown rather then have them run at goroutines blocked on selects. This may help reduce the background select/poll load in certain configurations. * The LevelDB queues can actually wait on empty instead of polling Slight refactor to cause leveldb queues to wait on empty instead of polling. * Shutdown the shadow level queue once it is empty * Remove bytefifo additional goroutine for readToChan as it can just be run in run * Remove additional removeWorkers goroutine for workers * Simplify the AtShutdown and AtTerminate functions and add Channel Flusher * Add shutdown flusher to CUQ * move persistable channel shutdown stuff to Shutdown Fn * Ensure that UPCQ has the correct config * handle shutdown during the flushing * reduce risk of race between zeroBoost and addWorkers * prevent double shutdown Signed-off-by: Andrew Thornton <art27@cantab.net>
This commit is contained in:
		
					parent
					
						
							
								9f19c2b8cc
							
						
					
				
			
			
				commit
				
					
						ba526ceffe
					
				
			
		
					 24 changed files with 598 additions and 412 deletions
				
			
		|  | @ -160,7 +160,7 @@ func InitIssueIndexer(syncReindex bool) { | |||
| 			} | ||||
| 			populate = !exist | ||||
| 			holder.set(issueIndexer) | ||||
| 			graceful.GetManager().RunAtTerminate(context.Background(), func() { | ||||
| 			graceful.GetManager().RunAtTerminate(func() { | ||||
| 				log.Debug("Closing issue indexer") | ||||
| 				issueIndexer := holder.get() | ||||
| 				if issueIndexer != nil { | ||||
|  | @ -170,7 +170,7 @@ func InitIssueIndexer(syncReindex bool) { | |||
| 			}) | ||||
| 			log.Debug("Created Bleve Indexer") | ||||
| 		case "elasticsearch": | ||||
| 			graceful.GetManager().RunWithShutdownFns(func(_, atTerminate func(context.Context, func())) { | ||||
| 			graceful.GetManager().RunWithShutdownFns(func(_, atTerminate func(func())) { | ||||
| 				issueIndexer, err := NewElasticSearchIndexer(setting.Indexer.IssueConnStr, setting.Indexer.IssueIndexerName) | ||||
| 				if err != nil { | ||||
| 					log.Fatal("Unable to initialize Elastic Search Issue Indexer at connection: %s Error: %v", setting.Indexer.IssueConnStr, err) | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue