Skip to content

Fix deprecation warning in MergeRequest.total_time_to_merge

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.

  1. Check out master
  2. Navigate to a project and go to Analytics -> Merge Request
  3. You should see an number of DEPRECATION WARNING messages in log/development.log from the page above.
  4. 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 in log/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.

Related to #391393 (closed)

Edited by Malcolm Locke

Merge request reports