diff --git a/app/services/ci/pipelines/add_job_service.rb b/app/services/ci/pipelines/add_job_service.rb index 703bb22fb5d204af1b51d722682b9d911ae13b3b..fc852bc3edd0032a69328e75d369fee0dc736e9b 100644 --- a/app/services/ci/pipelines/add_job_service.rb +++ b/app/services/ci/pipelines/add_job_service.rb @@ -39,6 +39,12 @@ def assign_pipeline_attributes(job) job.pipeline = pipeline job.project = pipeline.project job.ref = pipeline.ref + + # update metadata since it might have been lazily initialised before this call + # metadata is present on `Ci::Processable` + if job.respond_to?(:metadata) && job.metadata + job.metadata.project = pipeline.project + end end end end diff --git a/ee/spec/services/ci/retry_build_service_spec.rb b/ee/spec/services/ci/retry_build_service_spec.rb index f34936dd5dbeee6ee746fdd68fe4d3e8aaa50504..e7a8ff5bd506516d745c049816aaf1cc3095c94e 100644 --- a/ee/spec/services/ci/retry_build_service_spec.rb +++ b/ee/spec/services/ci/retry_build_service_spec.rb @@ -38,8 +38,10 @@ end it 'clones the profile associations', :aggregate_failures do - expect(new_build.dast_site_profile).to eq(dast_site_profile) - expect(new_build.dast_scanner_profile).to eq(dast_scanner_profile) + ::Gitlab::Database::QueryAnalyzers::PreventCrossDatabaseModification.allow_cross_database_modification_within_transaction(url: 'https://gitlab.com/gitlab-org/gitlab/-/issues/350051') do + expect(new_build.dast_site_profile).to eq(dast_site_profile) + expect(new_build.dast_scanner_profile).to eq(dast_scanner_profile) + end end end diff --git a/spec/services/ci/pipelines/add_job_service_spec.rb b/spec/services/ci/pipelines/add_job_service_spec.rb index 709a840c64493c149459a76e4117ff9b08734ef0..560724a1c6aa658718d6054a0f44f5888fdc218e 100644 --- a/spec/services/ci/pipelines/add_job_service_spec.rb +++ b/spec/services/ci/pipelines/add_job_service_spec.rb @@ -31,7 +31,7 @@ execute end.to change { job.slice(:pipeline, :project, :ref) }.to( pipeline: pipeline, project: pipeline.project, ref: pipeline.ref - ) + ).and change { job.metadata.project }.to(pipeline.project) end it 'returns a service response with the job as payload' do diff --git a/spec/support/database/cross-database-modification-allowlist.yml b/spec/support/database/cross-database-modification-allowlist.yml index 4e901308f2fba72dce565729e62a36b52a2b30f0..51804862a436da690d232af7adf08cf5baab2a7b 100644 --- a/spec/support/database/cross-database-modification-allowlist.yml +++ b/spec/support/database/cross-database-modification-allowlist.yml @@ -1,30 +1,11 @@ -- "./ee/spec/mailers/notify_spec.rb" -- "./ee/spec/models/group_member_spec.rb" - "./ee/spec/replicators/geo/terraform_state_version_replicator_spec.rb" -- "./ee/spec/services/ci/retry_build_service_spec.rb" -- "./spec/controllers/abuse_reports_controller_spec.rb" -- "./spec/controllers/omniauth_callbacks_controller_spec.rb" -- "./spec/controllers/projects/issues_controller_spec.rb" - "./spec/features/issues/issue_detail_spec.rb" - "./spec/features/projects/pipelines/pipeline_spec.rb" - "./spec/features/signed_commits_spec.rb" -- "./spec/helpers/issuables_helper_spec.rb" -- "./spec/lib/gitlab/auth_spec.rb" - "./spec/lib/gitlab/ci/pipeline/chain/create_spec.rb" -- "./spec/lib/gitlab/email/handler/create_issue_handler_spec.rb" -- "./spec/lib/gitlab/email/handler/create_merge_request_handler_spec.rb" -- "./spec/lib/gitlab/email/handler/create_note_handler_spec.rb" -- "./spec/lib/gitlab/email/handler/create_note_on_issuable_handler_spec.rb" - "./spec/models/ci/build_trace_chunk_spec.rb" - "./spec/models/ci/job_artifact_spec.rb" - "./spec/models/clusters/applications/runner_spec.rb" -- "./spec/models/design_management/version_spec.rb" -- "./spec/models/hooks/system_hook_spec.rb" -- "./spec/models/members/project_member_spec.rb" -- "./spec/models/user_spec.rb" -- "./spec/models/user_status_spec.rb" - "./spec/requests/api/commits_spec.rb" - "./spec/services/ci/retry_build_service_spec.rb" - "./spec/services/projects/overwrite_project_service_spec.rb" -- "./spec/workers/merge_requests/create_pipeline_worker_spec.rb" -- "./spec/workers/repository_cleanup_worker_spec.rb"