Skip to content

Add merge request first reassign timestamp metric

Pavel Shutsin requested to merge 205597-start-code-review-on-assign into master

What does this MR do?

It adds data gathering for first time merge request is assigned to someone else than the author. includes !26585 (merged) It's first part of #205597 (closed)

Screenshots

Does this MR meet the acceptance criteria?

Conformity

Database information

Migration output
== 20200305121159 AddMergeRequestMetricsFirstReassignedAt: migrating ==========
-- add_column(:merge_request_metrics, :first_reassigned_at, :datetime_with_timezone)
   -> 0.0023s
== 20200305121159 AddMergeRequestMetricsFirstReassignedAt: migrated (0.0145s) =

== 20200305121159 AddMergeRequestMetricsFirstReassignedAt: reverting ==========
-- remove_column(:merge_request_metrics, :first_reassigned_at, :datetime_with_timezone)
   -> 0.0019s
== 20200305121159 AddMergeRequestMetricsFirstReassignedAt: reverted (0.0109s) =


== 20200306095654 AddMergeRequestAssigneeCreatedAt: migrating =================
-- add_column(:merge_request_assignees, :created_at, :datetime_with_timezone)
   -> 0.0020s
== 20200306095654 AddMergeRequestAssigneeCreatedAt: migrated (0.0110s) ========

== 20200306095654 AddMergeRequestAssigneeCreatedAt: reverting =================
-- remove_column(:merge_request_assignees, :created_at)
   -> 0.0032s
== 20200306095654 AddMergeRequestAssigneeCreatedAt: reverted (0.0230s) ========
first_reassigned_at calculation explain
explain SELECT "merge_request_assignees".* FROM "merge_request_assignees" WHERE "merge_request_assignees"."merge_request_id" = 51877201 AND "merge_request_assignees"."user_id" != 3482158 ORDER BY "merge_request_assignees"."id" ASC LIMIT 1

Time: 5.655 ms
  - planning: 0.156 ms
  - execution: 5.499 ms
    - I/O read: 5.313 ms
    - I/O write: 0.000 ms

Shared buffers:
  - hits: 3 (~24.00 KiB) from the buffer pool
  - reads: 3 (~24.00 KiB) from the OS file cache, including disk I/O
  - dirtied: 0
  - writes: 0

 Limit  (cost=4.46..4.47 rows=1 width=12) (actual time=5.450..5.450 rows=0 loops=1)
   Buffers: shared hit=3 read=3
   I/O Timings: read=5.313
   ->  Sort  (cost=4.46..4.47 rows=1 width=12) (actual time=5.449..5.449 rows=0 loops=1)
         Sort Key: merge_request_assignees.id
         Sort Method: quicksort  Memory: 25kB
         Buffers: shared hit=3 read=3
         I/O Timings: read=5.313
         ->  Index Scan using index_merge_request_assignees_on_merge_request_id_and_user_id on public.merge_request_assignees  (cost=0.43..4.46 rows=1 width=12) (actual time=5.344..5.344 rows=0 loops=1)
               Index Cond: (merge_request_assignees.merge_request_id = 51877201)
               Filter: (merge_request_assignees.user_id <> 3482158)
               Rows Removed by Filter: 0
               Buffers: shared read=3
               I/O Timings: read=5.313

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
Edited by Pavel Shutsin

Merge request reports