Reduce N+1 Gitaly queries when publishing multiple draft notes
What does this MR do?
We are currently calling Discussions::CaptureDiffNotePositionService
for each draft note being published and results to N+1 Gitaly queries. This is because we create an instance of that service in Notes::CreateService
for each draft note being published and that service is being called in that service.
In this fix, we are adding the capability to skip that call so we can call it within the DraftNotes::PublishService
instead and only use a single instance of that service.
How to setup and validate locally (strongly suggested)
- Create a MR.
- Create multiple draft notes as part of a review on the diff.
- Publish review.
- Check if all the draft notes have been published as comments and shown on the diff properly.
Does this MR meet the acceptance criteria?
Conformity
-
I have included changelog trailers, or none are needed. (Does this MR need a changelog?) -
I have self-reviewed this MR per code review guidelines. -
This MR does not harm performance, or I have asked a reviewer to help assess the performance impact. (Merge request performance guidelines) -
I have followed the style guides. -
This change is backwards compatible across updates, or this does not apply.
Availability and Testing
-
I have added/updated tests following the Testing Guide, or it's not needed. (Consider all test levels. See the Test Planning Process.)
Related to #226924 (closed)
Edited by Patrick Bajao