diff --git a/ee/elastic/docs/20250606204649_add_rechability_field_to_vulnerability.yml b/ee/elastic/docs/20250606204649_add_rechability_field_to_vulnerability.yml index e4c5345508b706650837812a00598ed554f54e23..3c8b5f676574108f414dcbdf37eb09f68842c85a 100644 --- a/ee/elastic/docs/20250606204649_add_rechability_field_to_vulnerability.yml +++ b/ee/elastic/docs/20250606204649_add_rechability_field_to_vulnerability.yml @@ -6,6 +6,6 @@ description: Adds reachability field to the Vulnerability index. We are storing group: group::security infrastructure milestone: '18.1' introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/192619 -obsolete: false -marked_obsolete_by_url: -marked_obsolete_in_milestone: +obsolete: true +marked_obsolete_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/209381 +marked_obsolete_in_milestone: '18.6' diff --git a/ee/elastic/migrate/20250606204649_add_rechability_field_to_vulnerability.rb b/ee/elastic/migrate/20250606204649_add_rechability_field_to_vulnerability.rb index b68d016374665b81262aa848c2a8568e232a9a73..a131fe2c019979ffa8dc52729c7d891e35bc72fb 100644 --- a/ee/elastic/migrate/20250606204649_add_rechability_field_to_vulnerability.rb +++ b/ee/elastic/migrate/20250606204649_add_rechability_field_to_vulnerability.rb @@ -19,3 +19,5 @@ def new_mappings } end end + +AddRechabilityFieldToVulnerability.prepend ::Search::Elastic::MigrationObsolete diff --git a/ee/lib/search/elastic/references/vulnerability.rb b/ee/lib/search/elastic/references/vulnerability.rb index 9ef11465bb8cbaf0f0a00c81d406ccc4ffb20c99..3d426a210f0135384e78f9aa0729ed237634dfcf 100644 --- a/ee/lib/search/elastic/references/vulnerability.rb +++ b/ee/lib/search/elastic/references/vulnerability.rb @@ -85,9 +85,7 @@ def as_indexed_json fields["risk_score"] = fetch_record_attribute(database_record, :risk_score) if risk_score_migration_completed? - if reachability_migration_finished? - fields["reachability"] = fetch_record_attribute(database_record, :reachability) - end + fields["reachability"] = fetch_record_attribute(database_record, :reachability) if token_status_migration_finished? fields["token_status"] = fetch_record_attribute(database_record, :token_status) @@ -153,19 +151,11 @@ def fetch_schema_version 25_37 elsif resolved_at_dismissed_at_migration_completed? 25_36 - elsif reachability_migration_finished? - 25_26 else - 25_25 # Previous stable version until migration completes + 25_26 end end - def reachability_migration_finished? - ::Elastic::DataMigrationService.migration_has_finished?( - :add_rechability_field_to_vulnerability - ) - end - def token_status_migration_finished? ::Elastic::DataMigrationService.migration_has_finished?( :add_token_status_field_to_vulnerability diff --git a/ee/lib/search/elastic/vulnerability_query_builder.rb b/ee/lib/search/elastic/vulnerability_query_builder.rb index 81c703cee08273f598d8694db59f0f9e93a4d2ae..eaa9d28c74fa9ddcc004b0d3e8affe76170aca6b 100644 --- a/ee/lib/search/elastic/vulnerability_query_builder.rb +++ b/ee/lib/search/elastic/vulnerability_query_builder.rb @@ -43,10 +43,7 @@ def build # rubocop:disable Metrics/AbcSize -- need all the filters in one place query_hash = ::Search::Elastic::VulnerabilityFilters.by_scanner_ids(query_hash: query_hash, options: options) query_hash = ::Search::Elastic::VulnerabilityFilters.by_severities(query_hash: query_hash, options: options) - if ::Elastic::DataMigrationService.migration_has_finished?(:add_rechability_field_to_vulnerability) - query_hash = ::Search::Elastic::VulnerabilityFilters.by_reachability( - query_hash: query_hash, options: options) - end + query_hash = ::Search::Elastic::VulnerabilityFilters.by_reachability(query_hash: query_hash, options: options) if ::Elastic::DataMigrationService.migration_has_finished?(:backfill_token_status_in_vulnerabilities) query_hash = ::Search::Elastic::VulnerabilityFilters.by_validity_check( diff --git a/ee/spec/elastic/migrate/20250606204649_add_rechability_field_to_vulnerability_spec.rb b/ee/spec/elastic/migrate/20250606204649_add_rechability_field_to_vulnerability_spec.rb index 0abad936873c73951d2bf440c4b98fb3a4a92861..909669b54449bbc6af2748dac12dc9d826941406 100644 --- a/ee/spec/elastic/migrate/20250606204649_add_rechability_field_to_vulnerability_spec.rb +++ b/ee/spec/elastic/migrate/20250606204649_add_rechability_field_to_vulnerability_spec.rb @@ -3,8 +3,6 @@ require 'spec_helper' require File.expand_path('ee/elastic/migrate/20250606204649_add_rechability_field_to_vulnerability.rb') -RSpec.describe AddRechabilityFieldToVulnerability, :elastic, feature_category: :vulnerability_management do - let(:version) { 20250606204649 } - - include_examples 'migration adds mapping' +RSpec.describe AddRechabilityFieldToVulnerability, feature_category: :global_search do + it_behaves_like 'a deprecated Advanced Search migration', 20250606204649 end diff --git a/ee/spec/lib/search/elastic/references/vulnerability_spec.rb b/ee/spec/lib/search/elastic/references/vulnerability_spec.rb index 6bd97c426e27320a33c1e8b255b553effe6205a7..a3102a04d1ba5ff585d161dfc39080644ba1b0ff 100644 --- a/ee/spec/lib/search/elastic/references/vulnerability_spec.rb +++ b/ee/spec/lib/search/elastic/references/vulnerability_spec.rb @@ -127,8 +127,6 @@ let(:reachability_data) { 1 } before do - set_elasticsearch_migration_to(:add_rechability_field_to_vulnerability, including: true) - allow(object).to receive(:reachability).and_return(reachability_data) allow(vulnerability_reference_object).to receive(:database_record).and_return(object) end @@ -136,20 +134,6 @@ it 'includes reachability in the indexed JSON' do expect(indexed_json[:reachability]).to eq(reachability_data) end - - context 'when the reachability migration has not completed' do - before do - set_elasticsearch_migration_to(:add_rechability_field_to_vulnerability, including: false) - end - - it 'returns old schema version' do - expect(indexed_json[:schema_version]).to eq(25_25) - end - - it 'does not assign reachability on the indexed json' do - expect(indexed_json[:reachability]).to be_nil - end - end end context 'with resolved_at, dismissed_at mappings' do @@ -326,11 +310,11 @@ context 'when no migration have completed' do before do - set_elasticsearch_migration_to(:add_rechability_field_to_vulnerability, including: false) + set_elasticsearch_migration_to(:add_resolved_at_dismissed_at_fields_to_vulnerability, including: false) end it 'returns oldest schema version' do - expect(indexed_json[:schema_version]).to eq(25_25) + expect(indexed_json[:schema_version]).to eq(25_26) end end end diff --git a/ee/spec/lib/search/elastic/vulnerability_query_builder_spec.rb b/ee/spec/lib/search/elastic/vulnerability_query_builder_spec.rb index 28ebd7d905a31f4350278c239938d6e73909b9c7..abe8398070072368820bc182a2a1f169f8333caf 100644 --- a/ee/spec/lib/search/elastic/vulnerability_query_builder_spec.rb +++ b/ee/spec/lib/search/elastic/vulnerability_query_builder_spec.rb @@ -268,10 +268,6 @@ let(:options) { base_options.merge(reachability: [::Sbom::Occurrence.reachabilities.values.last]) } context 'with finished migrations' do - before do - set_elasticsearch_migration_to(:add_rechability_field_to_vulnerability) - end - it 'does add filter' do assert_names_in_query(build, with: %w[ filters:archived_projects @@ -279,18 +275,6 @@ ]) end end - - context 'without finished migrations' do - before do - set_elasticsearch_migration_to(:add_rechability_field_to_vulnerability, including: false) - end - - it 'does not add reachability filter' do - assert_names_in_query(build, with: %w[ - filters:archived_projects - ]) - end - end end describe 'by_vulnerabilities_over_time' do