-
- Downloads
Eliminate many Gitaly calls in discussions API
Previously, the API to retrieve discussions from merge requests often generated hundreds of Gitaly calls to determine whether a system note should be shown to the user. It did this by: 1. Rendering the Markdown 2. Extracting cross-references from the Markdown 3. For cross-references that were commits, a Gitaly FindCommit RPC would be issued to validate that the commit exists. The last step is unnecessary because we don't need to display a commit if the user doesn't have access to the project in the first place. `RendersNotes#prepare_notes_for_rendering` is already used in `MergeRequestsController`, which is why we don't see N+1 Gitaly calls there. We use it here to optimize the note redaction process. Closes https://gitlab.com/gitlab-org/gitlab-ce/issues/65957
Showing
- changelogs/unreleased/sh-fix-discussions-api-perf.yml 5 additions, 0 deletionschangelogs/unreleased/sh-fix-discussions-api-perf.yml
- lib/api/discussions.rb 16 additions, 10 deletionslib/api/discussions.rb
- spec/requests/api/discussions_spec.rb 53 additions, 0 deletionsspec/requests/api/discussions_spec.rb
Please register or sign in to comment