1. 23 Aug, 2019 1 commit
    • Stan Hu's avatar
      Eliminate Gitaly N+1 queries with notes API · e24b9c25
      Stan Hu authored
      Similar to https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/31834,
      we see that in https://gitlab.com/gitlab-org/gitlab-ce/issues/65957
      there can be hundreds, even thousands, of Gitaly requests in the
      `/api/:version/projects/:id/merge_requests/:noteable_id/notes` endpoint.
      
      Previously, the API to retrieve notes 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. Issuing a Gitaly `FindCommit` RPC for every reference 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.
      e24b9c25
  2. 22 Aug, 2019 39 commits