Review more complex endpoints that should be added to the Performance Toolkit

As the result of investigation of which API endpoints should be added to Performance Toolkit, we need to consider if we should add some endpoints from the tables below and how we can do it:

3. Might need to be added - API endpoints that might need to be added, but have some difficulties with either test implementation or seeding data in the project.

API endpoint Description Why it should be added Source Additional Information
POST /projects/:id/merge_requests Create MR Looks like this request is very slow(STDDEV=15011.7, PERC95=48116.66) according to the info from sheet Projects::MergeRequests::CreationsController#new method in the sheet #225
GET /projects/:id/repository/commits/:sha/signature Get the GPG signature from a commit, if it is signed Projects::CommitsController#signatures method is quite popular and appears to be slow(PERC95=6825.58) sheet and comment in issue#65 We already have a test for it
GET /projects/:id/jobs/:job_id/trace Get a trace of a specific job of a project called: very often(32% of the total calls), response time: fast (181.39) comment in issue#65, sheet, kibana top API data #229
GET /projects/:id/jobs/:job_id Get a single job of a project called: often (7%), response time: not as fast(1018.9); related to Projects::JobsController#show method, which is called often(1.6%) and not very fast(PERC95=5920.13) sheet, comment in issue#65, kibana top API data #229
GET /projects/:id/pipelines/:pipeline_id/jobs Get a list of jobs for a pipeline called: often (4%), response time: slow (1733.24) sheet, kibana top API data #229
GET /projects/:id/jobs/:job_id/artifacts Get the job’s artifacts zipped archive of a project called: often (1.4%), response time: slow (1727.09) sheet #229
GET /projects/:id/pipelines List project pipelines called: very often(9.5% of the total calls), response time: fast (133.23) sheet, kibana top API data Already addedapi_v4_projects_project_pipelines.js

4. Methods that are called often but it’s not clear how to implement them

Method Description Why it should be added Source Problem
Projects::GitHttpController#info_refs # GET /foo/bar.git/info/refs?service=git-upload-pack (git pull) # GET /foo/bar.git/info/refs?service=git-receive-pack (git push) Called: very often(67%); Response time: fast (PERC95 = 236.8) sheet, comments in issue#65 and #55 (closed), kibana top controllers data It is implemented.
RefsController#logs_tree # GET /:project_id/refs/:id/logs_tree(.:format) refs#logs_tree Called: not very often(0.3%); Response time: very slow(PERC95 = 30637.13) sheet and comment in issue#66 and #55 (closed) It is added - web_project_files
RootController#index # This controller exists solely to handle requests to root_url. When a user is # logged in and has customized their dashboard setting, they will be # redirected to their preferred location. # # For users who haven't customized the setting, we simply delegate to # DashboardController#show, which is the default. Example: https://gitlab.com/dashboard/projects Called: not very often(0.3%); Response time: very slow(PERC95 = 8243.57) sheet and comment in issue#55 #132
Edited by Nailia Iskhakova