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