26 lines
		
	
	
		
			766 B
		
	
	
	
		
			Ruby
		
	
	
	
			
		
		
	
	
			26 lines
		
	
	
		
			766 B
		
	
	
	
		
			Ruby
		
	
	
	
| # frozen_string_literal: true
 | |
| 
 | |
| module Gitlab
 | |
|   module Database
 | |
|     module Reindexing
 | |
|       # Number of indexes to reindex per invocation
 | |
|       DEFAULT_INDEXES_PER_INVOCATION = 2
 | |
| 
 | |
|       # candidate_indexes: Array of Gitlab::Database::PostgresIndex
 | |
|       def self.perform(candidate_indexes, how_many: DEFAULT_INDEXES_PER_INVOCATION)
 | |
|         IndexSelection.new(candidate_indexes).take(how_many).each do |index|
 | |
|           Coordinator.new(index).perform
 | |
|         end
 | |
|       end
 | |
| 
 | |
|       def self.candidate_indexes
 | |
|         Gitlab::Database::PostgresIndex
 | |
|           .regular
 | |
|           .where('NOT expression')
 | |
|           .not_match("^#{ConcurrentReindex::TEMPORARY_INDEX_PREFIX}")
 | |
|           .not_match("^#{ConcurrentReindex::REPLACED_INDEX_PREFIX}")
 | |
|       end
 | |
|     end
 | |
|   end
 | |
| end
 |