Resolve cross join issues in services/merge_requests/create_from_vulnerability_data_service_spec.rb
Decomposition of some vulnerability tables has resulted in cross join issues in the listed service which have been allowed to progress anyways. Likely these will be resolvable simply once all the related tables have been decomposed to the correct schema.
NOTE: https://gitlab.com/gitlab-org/gitlab/-/blob/e2cb38b86854eba8b12c4a5c496029f72a2025b8/ee/app/services/vulnerabilities/security_finding/create_merge_request_service.rb#L18 references #480003 (closed), but it should reference Resolve cross join issues in ee/app/services/vu... (#480359 - closed) instead.
module Vulnerabilities
module SecurityFinding
class CreateMergeRequestService < ::BaseProjectService
def execute
enforce_authorization!
@error_message = nil
merge_request = nil
Gitlab::Database::QueryAnalyzers::PreventCrossDatabaseModification.temporary_ignore_tables_in_transaction(
%w[
internal_ids
merge_requests
merge_request_user_mentions
vulnerability_merge_request_links
], url: 'https://gitlab.com/gitlab-org/gitlab/-/issues/480003'
) do
merge_request = ApplicationRecord.transaction do
vulnerability = find_or_create_vulnerability
create_merge_request(vulnerability).tap do |merge_request|
create_vulnerability_merge_request_link(merge_request, vulnerability)
end
end
end
Removing that temporary_ignore_tables_in_transaction
makes ./ee/spec/services/vulnerabilities/security_finding/create_merge_request_service_spec.rb fail
with
CrossDatabaseModificationAcrossUnsupportedTablesError erros,
which is totally in scope of Resolve cross join issues in ee/app/services/vu... (#480359 - closed).