Fix deprecation warning in MergeRequest.total_time_to_merge
requested to merge 391393-remove-deprecation-warning-from-merge-request-total-time-to-merge-method into master
What does this MR do and why?
This MR removes this deprecation warning
DEPRECATION WARNING: Merging ("merge_request_metrics"."merged_at" >= '2023-02-01 00:00:00') and ("merge_request_metrics"."merged_at" > "merge_request_metrics"."created_at") no longer maintain both conditions, and will be replaced by the latter in Rails 7.0. To migrate to Rails 7.0's behavior, use `relation.merge(other, rewhere: true)`. (called from total_time_to_merge at /srv/gitlab/app/models/merge_request.rb:454)
It is required for the Rails 7 upgrade epic
Note we cannot use the solution of adding rewhere: true
suggested by the deprecation warning, this breaks the existing behaviour. See this thread
Screenshots or screen recordings
Database queries are unchanged by this MR:
/* Before */
SELECT
EXTRACT(epoch FROM SUM(AGE(merge_request_metrics.merged_at, merge_request_metrics.created_at)))
FROM
"merge_requests"
INNER JOIN "merge_request_metrics" ON "merge_request_metrics"."merge_request_id" = "merge_requests"."id"
WHERE
"merge_request_metrics"."target_project_id" = 24
AND "merge_request_metrics"."merged_at" >= '2023-01-31 11:00:00'
AND "merge_request_metrics"."merged_at" <= '2023-02-12 11:00:00'
AND "merge_request_metrics"."merged_at" > "merge_request_metrics"."created_at"
LIMIT 1
/* After */
SELECT
EXTRACT(epoch FROM SUM(AGE(merge_request_metrics.merged_at, merge_request_metrics.created_at)))
FROM
"merge_requests"
INNER JOIN "merge_request_metrics" ON "merge_request_metrics"."merge_request_id" = "merge_requests"."id"
WHERE
"merge_request_metrics"."target_project_id" = 24
AND "merge_request_metrics"."merged_at" >= '2023-01-31 11:00:00'
AND "merge_request_metrics"."merged_at" <= '2023-02-12 11:00:00'
AND "merge_request_metrics"."merged_at" > "merge_request_metrics"."created_at"
LIMIT 1
How to set up and validate locally
Numbered steps to set up and validate the change are strongly suggested.
- Check out
master
- Navigate to a project and go to Analytics -> Merge Request
- You should see an number of
DEPRECATION WARNING
messages inlog/development.log
from the page above. - Check out this MR branch and reload the Analytics -> Merge Request page. The page content should be as before but you should no longer see the
DEPRECATION WARNING
entries inlog/development.log
MR acceptance checklist
This checklist encourages us to confirm any changes have been analyzed to reduce risks in quality, performance, reliability, security, and maintainability.
-
I have evaluated the MR acceptance checklist for this MR.
Related to #391393 (closed)
Edited by Malcolm Locke