Skip to content

Swap FK external_pull_requests.project_id to projects for LFK

What does this MR do and why?

Per &7249 (closed)

As part of our CI "decomposition" efforts we need to remove all foreign keys that are cross-database (ie. between the planned main and ci databases). We are going to replace them all with "loose foreign keys".

Related: #348267 (closed)

Validations

  • Best team to review (check off when reviewed): grouppipeline execution devopsverify
  • No way for user to access once parent is deleted. Please explain: @fabiopitino The external pull request is either accessed via the project or via the pipeline. In the first case if the project is deleted, it won't be accessible. In the latter case, pipelines are deleted before deleting a project so any references of ExternalPullRequest#project won't be called.
  • Possible to access once parent deleted but low user impact. Please explain:
  • Possible Sidekiq workers that may load directly and possibly lead to exceptions. Please explain:
  • Possible user impact to be evaluated or mitigated. Please explain:
  • Is this FK safe to be removed to avoid LOCKing problems? Yes, since it locks on projects and external_merge_requests

MR acceptance checklist

This checklist encourages us to confirm any changes have been analyzed to reduce risks in quality, performance, reliability, security, and maintainability.

Edited by Kamil Trzciński

Merge request reports