diff --git a/ee/app/services/search/elastic/cluster_reindexing_service.rb b/ee/app/services/search/elastic/cluster_reindexing_service.rb index 496891a10875cdf181c29f314247e24104908833..7fd90efaa8527b1df9639edcb4a0c53fa852110e 100644 --- a/ee/app/services/search/elastic/cluster_reindexing_service.rb +++ b/ee/app/services/search/elastic/cluster_reindexing_service.rb @@ -133,10 +133,7 @@ def load_alias_info(klass:, name_suffix:) def launch_subtasks(items_to_reindex) items_to_reindex.each do |item| - # Record documents count - documents_count = elastic_helper.documents_count(index_name: item[:index_name_from], refresh: true) - # Create all subtasks - subtask = current_task.subtasks.create!(item.merge(documents_count: documents_count)) + subtask = current_task.subtasks.create!(item) number_of_shards = elastic_helper.get_settings(index_name: item[:index_name_from])['number_of_shards'].to_i max_slice = number_of_shards * current_task.slice_multiplier @@ -153,10 +150,10 @@ def launch_subtasks(items_to_reindex) def save_documents_count!(refresh:) current_task.subtasks.each do |subtask| - elastic_helper.refresh_index(index_name: subtask.index_name_to) if refresh + documents_count = elastic_helper.documents_count(index_name: subtask.index_name_from, refresh: refresh) + new_documents_count = elastic_helper.documents_count(index_name: subtask.index_name_to, refresh: refresh) - new_documents_count = elastic_helper.documents_count(index_name: subtask.index_name_to) - subtask.update!(documents_count_target: new_documents_count) + subtask.update!(documents_count: documents_count, documents_count_target: new_documents_count) end end diff --git a/ee/spec/services/search/elastic/cluster_reindexing_service_spec.rb b/ee/spec/services/search/elastic/cluster_reindexing_service_spec.rb index 56a3d5ee053a15dde576e80ad2ff57c1e215befc..c69f16aa34428816e6b95245b4af351409fa290c 100644 --- a/ee/spec/services/search/elastic/cluster_reindexing_service_spec.rb +++ b/ee/spec/services/search/elastic/cluster_reindexing_service_spec.rb @@ -218,15 +218,17 @@ 'response' => { 'total' => 20, 'created' => 20, 'updated' => 0, 'deleted' => 0 } } ) - allow(helper).to receive(:refresh_index).and_return(true) allow(helper).to receive(:reindex).and_return('task_1', 'task_2', 'task_3', 'task_4', 'task_5', 'task_6') end context 'when errors are raised' do context 'when documents count does not match' do before do - allow(helper).to receive(:documents_count) - .with(index_name: anything).and_return(subtask.reload.documents_count * 2) + allow(helper).to receive(:documents_count).with(index_name: subtask.index_name_from, refresh: anything) + .and_return(subtask.reload.documents_count) + allow(helper).to receive(:documents_count).with(index_name: subtask.index_name_to, refresh: anything) + .and_return(subtask.reload.documents_count * 2) + allow(helper).to receive(:get_settings).with(index_name: subtask.index_name_from) end it 'changes task state to failure' do @@ -398,7 +400,9 @@ with_them do before do - allow(helper).to receive(:documents_count).with(index_name: subtask.index_name_to) + allow(helper).to receive(:documents_count).with(index_name: subtask.index_name_from, refresh: anything) + .and_return(subtask.reload.documents_count) + allow(helper).to receive(:documents_count).with(index_name: subtask.index_name_to, refresh: anything) .and_return(subtask.reload.documents_count) allow(helper).to receive(:get_settings).with(index_name: subtask.index_name_from) .and_return(current_settings.with_indifferent_access)