Use Group#all_projects instead of self_and_descendants in finders

In https://gitlab.com/gitlab-com/gl-infra/production/-/issues/3894, we found that query plans using self_and_descendants as a subquery in an IN () clause may trigger a PostgreSQL v11 query planner bug. !56078 (merged) works around this issue, but finders may have to take advantage of this by calling Group#all_projects instead of base_and_descendants.

We fixed one example in Maven (!56346 (merged)), but we do have of other locations where this may be an issue:

Proposal

Update all relevant finders:

# git grep --name-only self_and_descendants | grep finders
  • app/finders/ci/runners_finder.rb
  • app/finders/labels_finder.rb
  • app/finders/concerns/packages/finder_helper.rb
    • @ahegyi !56451 (closed)
    • @10io !56475 (closed) and #325274 (closed)
  • app/finders/packages/npm/package_finder.rb
    • @stanhu !56415 (merged)
  • app/finders/packages/group_packages_finder.rb
    • @DylanGriffith @ahegyi !56426 (closed)
  • app/finders/packages/maven/package_finder.rb
    • @10io @stanhu !56346 (merged)
  • app/finders/issuable_finder/params.rb
    • @engwan !56441 (closed)
  • ee/app/finders/epics_finder.rb
  • ee/app/finders/ee/deployments_finder.rb
  • ee/app/finders/ee/fork_targets_finder.rb
Edited Mar 18, 2021 by Andrew Newdigate
Assignee Loading
Time tracking Loading