Avoid fetching a StatusUpdate per Review on the review request page.

Review Request #14313 — Created Jan. 29, 2025 and submitted — Latest diff uploaded

Information

Review Board
release-7.1.x

Reviewers

We had code in the review request page that checked for the presence of
the Review.status_update attribute. This in turn triggered a query for
the object on the other end of that relation, regardless of whether it
existed. That led to a useless query per review, especially since we had
already fetched all status updates on the page.

This change adds some pre-processing, creating a map of reviews to
status updates, and utilizes that map instead of performing the
attribute check.

This offers a pretty large savings on most review requests.

Unit tests passed.

Verified in Django Debug Toolbar that the repeated SQL queries for
status updates were no longer present.

Diff Revision 2 (Latest)

orig
1
2

Commits

First Last Summary ID Author
Avoid fetching a StatusUpdate per Review on the review request page.
We had code in the review request page that checked for the presence of the `Review.status_update` attribute. This in turn triggered a query for the object on the other end of that relation, regardless of whether it existed. That led to a useless query per review, especially since we had already fetched all status updates on the page. This change adds some pre-processing, creating a map of reviews to status updates, and utilizes that map instead of performing the attribute check. This offers a pretty large savings on most review requests.
9510e1c617706e9c3a0362a8c289fa469e3c75a8 Christian Hammond
reviewboard/reviews/detail.py
reviewboard/reviews/tests/test_review_request_detail_view.py
reviewboard/reviews/tests/test_review_request_page_data.py
Loading...