Optimize jobs-list endpoint with push_id filter #7827
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This endpoint cannot be simplified much, as built with a viewset + django-filters.
The majority of requests use the
push_id__in
filter, which performs a single lookup query (50+% of the requests compare with a single push ID using the__in
clause).However, 10% of the overall queries uses the
push_id
filter directly (you can see thoses request when loading the app main page), which cause an extra query to fetch the push entry before listing related jobs.This implementation cuts off this extra query, improving perf by approx. 12% (389ms → 341ms).
On the other side, the API will return an empty jobs list when filtering with a wrong ID, instead of returning an explicit message (that was
"push_id": ["Select a valid choice. That choice is not one of the available choices."]
).