Add merge request first reassign timestamp metric
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
-
Changelog entry -
Documentation (if required) -
Code review guidelines -
Merge request performance guidelines -
Style guides -
Database guides -
Separation of EE specific content
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
-
Review and add/update tests for this feature/bug. Consider all test levels. See the Test Planning Process. -
Tested in all supported browsers -
Informed Infrastructure department of a default or new setting change, if applicable per definition of done
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