Skip to content

Optimize AvailableLabelsService for multiple labels

Tetiana Chupryna requested to merge 194104-epics-iid-too-many-queries into master

What does this MR do?

PUT /api/:version/groups/:id/(-/)epics/:epic_iid executes almost 100 queries, in case of failing test particulart number is 118

This is a subset of changes required to optimize this endpoint. The change made in this MR is optimizing AvailableLabelsService and Labels::FindOrCreateService to not query multiple times labels by passing label titles to the scope.

Before:

PUT /api/:version/groups/:id/(-/)epics/:epic_iid(.:format): a maximum of 110 is allowed but 118 SQL queries were executed

After:

PUT /api/:version/groups/:id/(-/)epics/:epic_iid(.:format): a maximum of 110 is allowed but 113 SQL queries were executed

From 118 SQL to 113. -5 queries for example with 6 labels in params. With more labels, we'll get more impressive results.

Screenshots (strongly suggested)

Does this MR meet the acceptance criteria?

Conformity

Availability and Testing

Security

If this MR contains changes to processing or storing of credentials or tokens, authorization and authentication methods and other items described in the security review guidelines:

  • Label as security and @ mention @gitlab-com/gl-security/appsec
  • The MR includes necessary changes to maintain consistency between UI, API, email, or other methods
  • Security reports checked/validated by a reviewer from the AppSec team

Related to #194104 (closed)

Edited by Andy Schoenen

Merge request reports