From ae48298c3089d74cd26cdabaeb2a51937b60f69a Mon Sep 17 00:00:00 2001
From: Terri Chu <tchu@gitlab.com>
Date: Wed, 24 Jul 2024 18:58:33 +0000
Subject: [PATCH] Revert "Merge branch '470138-reindex-issues' into 'master'"

This reverts merge request !158039
---
 .../migration_database_backfill_helper.rb     | 22 +++++--------
 ...9110316_index_all_issues_from_database.yml | 10 ------
 ...09110316_index_all_issues_from_database.rb | 26 ----------------
 ee/lib/elastic/latest/issue_instance_proxy.rb |  2 +-
 ...316_index_all_issues_from_database_spec.rb | 31 -------------------
 .../elastic/migration_shared_examples.rb      |  1 +
 6 files changed, 10 insertions(+), 82 deletions(-)
 delete mode 100644 ee/elastic/docs/20240609110316_index_all_issues_from_database.yml
 delete mode 100644 ee/elastic/migrate/20240609110316_index_all_issues_from_database.rb
 delete mode 100644 ee/spec/elastic/migrate/20240609110316_index_all_issues_from_database_spec.rb

diff --git a/ee/app/workers/concerns/search/elastic/migration_database_backfill_helper.rb b/ee/app/workers/concerns/search/elastic/migration_database_backfill_helper.rb
index 9ccc1d85858c3..c0830e211e9e6 100644
--- a/ee/app/workers/concerns/search/elastic/migration_database_backfill_helper.rb
+++ b/ee/app/workers/concerns/search/elastic/migration_database_backfill_helper.rb
@@ -16,19 +16,13 @@ def migrate
       end
 
       def completed?
-        completed = documents_after_current_id.empty?
+        maximum_id = documents_after_current_id.maximum(:id).to_i
+        documents_remaining_approximate = maximum_id - current_id
+        set_migration_state(maximum_id: maximum_id, documents_remaining_approximate: documents_remaining_approximate)
+        log 'Checking if migration is finished', maximum_id: maximum_id, current_id: current_id,
+          documents_remaining_approximate: documents_remaining_approximate
 
-        unless completed
-          maximum_id = documents_after_current_id.maximum(:id).to_i
-          documents_remaining_approximate = maximum_id - current_id
-
-          set_migration_state(maximum_id: maximum_id, documents_remaining_approximate: documents_remaining_approximate)
-
-          log 'Migration is not finished', maximum_id: maximum_id, current_id: current_id,
-            documents_remaining_approximate: documents_remaining_approximate
-        end
-
-        completed
+        documents_after_current_id.empty?
       end
 
       def document_type
@@ -55,7 +49,7 @@ def limit_per_iteration
         DEFAULT_LIMIT_PER_ITERATION
       end
 
-      def number_of_iterations_per_run
+      def number_of_iteration_per_run
         (batch_size / limit_per_iteration.to_f).ceil
       end
 
@@ -69,7 +63,7 @@ def documents_after_current_id
 
       def backfill_documents
         [].tap do |documents|
-          number_of_iterations_per_run.times do
+          number_of_iteration_per_run.times do
             documents = documents_after_current_id.limit(limit_per_iteration)
 
             if limit_indexing?
diff --git a/ee/elastic/docs/20240609110316_index_all_issues_from_database.yml b/ee/elastic/docs/20240609110316_index_all_issues_from_database.yml
deleted file mode 100644
index 5bb64e510f09d..0000000000000
--- a/ee/elastic/docs/20240609110316_index_all_issues_from_database.yml
+++ /dev/null
@@ -1,10 +0,0 @@
----
-name: IndexAllIssuesFromDatabase
-version: '20240609110316'
-description: Indexes every issue from the database to ensure the correct state
-group: group::global search
-milestone: '17.3'
-introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/158039
-obsolete: false
-marked_obsolete_by_url:
-marked_obsolete_in_milestone:
diff --git a/ee/elastic/migrate/20240609110316_index_all_issues_from_database.rb b/ee/elastic/migrate/20240609110316_index_all_issues_from_database.rb
deleted file mode 100644
index 4533a9cd6b97f..0000000000000
--- a/ee/elastic/migrate/20240609110316_index_all_issues_from_database.rb
+++ /dev/null
@@ -1,26 +0,0 @@
-# frozen_string_literal: true
-
-class IndexAllIssuesFromDatabase < Elastic::Migration
-  include ::Search::Elastic::MigrationDatabaseBackfillHelper
-
-  batch_size 50_000
-  batched!
-  throttle_delay 1.minute
-  retry_on_failure
-
-  DOCUMENT_TYPE = Issue
-
-  def respect_limited_indexing?
-    true
-  end
-
-  def item_to_preload
-    :project
-  end
-
-  # rubocop:disable CodeReuse/ActiveRecord -- we need to select only unprocessed ids
-  def documents_after_current_id
-    document_type.without_issue_type(:epic).where("issues.id > ?", current_id).order(:id)
-  end
-  # rubocop:enable CodeReuse/ActiveRecord
-end
diff --git a/ee/lib/elastic/latest/issue_instance_proxy.rb b/ee/lib/elastic/latest/issue_instance_proxy.rb
index a0d7badec2d09..3be726395d2d1 100644
--- a/ee/lib/elastic/latest/issue_instance_proxy.rb
+++ b/ee/lib/elastic/latest/issue_instance_proxy.rb
@@ -3,7 +3,7 @@
 module Elastic
   module Latest
     class IssueInstanceProxy < ApplicationInstanceProxy
-      SCHEMA_VERSION = 24_07
+      SCHEMA_VERSION = 24_05
       OPTIONAL_FIELDS = %w[embedding embedding_version].freeze
 
       def as_indexed_json(options = {})
diff --git a/ee/spec/elastic/migrate/20240609110316_index_all_issues_from_database_spec.rb b/ee/spec/elastic/migrate/20240609110316_index_all_issues_from_database_spec.rb
deleted file mode 100644
index b165b2013e3a5..0000000000000
--- a/ee/spec/elastic/migrate/20240609110316_index_all_issues_from_database_spec.rb
+++ /dev/null
@@ -1,31 +0,0 @@
-# frozen_string_literal: true
-
-require 'spec_helper'
-require File.expand_path('ee/elastic/migrate/20240609110316_index_all_issues_from_database.rb')
-
-RSpec.describe IndexAllIssuesFromDatabase, feature_category: :global_search do
-  let(:version) { 20240609110316 }
-
-  describe 'migration', :elastic do
-    it_behaves_like 'migration reindexes all data' do
-      let(:objects) { create_list(:issue, 3) }
-      let(:expected_throttle_delay) { 1.minute }
-      let(:expected_batch_size) { 50_000 }
-    end
-  end
-
-  describe '.documents_after_current_id' do
-    let(:migration) { described_class.new(version) }
-    let_it_be(:project) { create(:project, :public) }
-    let_it_be(:issue) { create(:issue, project: project) }
-    let_it_be(:issue_epic_type) { create(:issue, :epic) }
-    let_it_be(:issue_task_type) { create(:issue, :task) }
-    let_it_be(:work_item) { create(:work_item, :epic_with_legacy_epic, :group_level) }
-    let_it_be(:non_group_work_item) { create(:work_item) }
-
-    it 'only indexes project-level work_item_type issues' do
-      expected_ids = [issue.id, issue_task_type.id, non_group_work_item.id]
-      expect(migration.documents_after_current_id.pluck(:id)).to match_array(expected_ids)
-    end
-  end
-end
diff --git a/ee/spec/support/shared_examples/elastic/migration_shared_examples.rb b/ee/spec/support/shared_examples/elastic/migration_shared_examples.rb
index 187c985a93d4b..f8293a73c7492 100644
--- a/ee/spec/support/shared_examples/elastic/migration_shared_examples.rb
+++ b/ee/spec/support/shared_examples/elastic/migration_shared_examples.rb
@@ -730,6 +730,7 @@ def update_by_query(objects, script)
 
           migration.migrate # To set a pristine state
           expect(migration.completed?).to be_truthy
+          expect(migration.migration_state).to match(task_id: nil, documents_remaining: 0)
         end
 
         context 'and task in progress' do
-- 
GitLab