Skip to content

Eliminate N+1 queries in path lock checks during a push

Stan Hu requested to merge sh-optimize-locks-check into master

This significantly improves performance when a user pushes many references.

project.path_locks.any? doesn't cache the output and runs SELECT 1 AS one FROM "path_locks" WHERE project_id = N each time. When there are thousands of refs being pushed, this can time out the unicorn worker.

Closes #6465 (closed)

CE backport: https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/19978

Note that there is still one more N+1 query: https://gitlab.com/gitlab-org/gitlab-ce/issues/48092

Edited by Stan Hu

Merge request reports