Add resource_assignment_events table
What does this MR do and why?
This MR sets up the ResourceEvents::AssignmentEvent
model for tracking assignments of users within issues and MRs. The table will be used by value stream analytics for tracking time between various events, for example: mr creation time - mr first assignment time.
This MR contains the DB schema, model definition and tests.
Migration
Up:
main: == [advisory_lock_connection] object_id: 274120, pg_backend_pid: 1213006
main: == 20230412073614 CreateIssueAssignmentEvents: migrating ======================
main: -- create_table(:issue_assignment_events)
main: -> 0.0096s
main: == 20230412073614 CreateIssueAssignmentEvents: migrated (0.0676s) =============
main: == [advisory_lock_connection] object_id: 274120, pg_backend_pid: 1213343
main: == 20230412080242 AddConcurrentFkToIssueAssignmentEvents: migrating ===========
main: -- transaction_open?()
main: -> 0.0000s
main: -- transaction_open?()
main: -> 0.0000s
main: -- execute("ALTER TABLE issue_assignment_events ADD CONSTRAINT fk_cfd2073177 FOREIGN KEY (issue_id) REFERENCES issues (id) ON DELETE CASCADE NOT VALID;")
main: -> 0.0015s
main: -- execute("SET statement_timeout TO 0")
main: -> 0.0003s
main: -- execute("ALTER TABLE issue_assignment_events VALIDATE CONSTRAINT fk_cfd2073177;")
main: -> 0.0018s
main: -- execute("RESET statement_timeout")
main: -> 0.0003s
main: == 20230412080242 AddConcurrentFkToIssueAssignmentEvents: migrated (0.0938s) ==
main: == 20230413080906 CreateMergeRequestAssignmentEvents: migrating ===============
main: -- create_table(:merge_request_assignment_events)
main: -> 0.0061s
main: == 20230413080906 CreateMergeRequestAssignmentEvents: migrated (0.0101s) ======
main: == 20230413080918 AddConcurrentFkToMergeRequestAssignmentEvents: migrating ====
main: -- transaction_open?()
main: -> 0.0000s
main: -- transaction_open?()
main: -> 0.0000s
main: -- execute("ALTER TABLE merge_request_assignment_events ADD CONSTRAINT fk_08f7602bfd FOREIGN KEY (merge_request_id) REFERENCES merge_requests (id) ON DELETE CASCADE NOT VALID;")
main: -> 0.0012s
main: -- execute("ALTER TABLE merge_request_assignment_events VALIDATE CONSTRAINT fk_08f7602bfd;")
main: -> 0.0016s
main: == 20230413080918 AddConcurrentFkToMergeRequestAssignmentEvents: migrated (0.0212s)
main: == [advisory_lock_connection] object_id: 274120, pg_backend_pid: 1213343
ci: == [advisory_lock_connection] object_id: 274580, pg_backend_pid: 1213346
ci: == 20230413080906 CreateMergeRequestAssignmentEvents: migrating ===============
ci: -- create_table(:merge_request_assignment_events)
ci: -> 0.0071s
I, [2023-04-13T10:33:28.644953 #1213178] INFO -- : Database: 'ci', Table: 'merge_request_assignment_events': Lock Writes
ci: == 20230413080906 CreateMergeRequestAssignmentEvents: migrated (0.0204s) ======
ci: == 20230413080918 AddConcurrentFkToMergeRequestAssignmentEvents: migrating ====
ci: -- transaction_open?()
ci: -> 0.0000s
ci: -- transaction_open?()
ci: -> 0.0000s
ci: -- execute("ALTER TABLE merge_request_assignment_events ADD CONSTRAINT fk_08f7602bfd FOREIGN KEY (merge_request_id) REFERENCES merge_requests (id) ON DELETE CASCADE NOT VALID;")
ci: -> 0.0009s
ci: -- execute("SET statement_timeout TO 0")
ci: -> 0.0004s
ci: -- execute("ALTER TABLE merge_request_assignment_events VALIDATE CONSTRAINT fk_08f7602bfd;")
ci: -> 0.0017s
ci: -- execute("RESET statement_timeout")
ci: -> 0.0003s
ci: == 20230413080918 AddConcurrentFkToMergeRequestAssignmentEvents: migrated (0.0298s)
ci: == [advisory_lock_connection] object_id: 274580, pg_backend_pid: 1213346
Down:
main: == [advisory_lock_connection] object_id: 273900, pg_backend_pid: 1215596
main: == 20230413080918 AddConcurrentFkToMergeRequestAssignmentEvents: reverting ====
main: -- remove_foreign_key(:merge_request_assignment_events, {:column=>:merge_request_id})
main: -> 0.0037s
main: == 20230413080918 AddConcurrentFkToMergeRequestAssignmentEvents: reverted (0.0642s)
main: == [advisory_lock_connection] object_id: 273900, pg_backend_pid: 1215596
main: == [advisory_lock_connection] object_id: 273840, pg_backend_pid: 1216102
main: == 20230413080906 CreateMergeRequestAssignmentEvents: reverting ===============
main: -- drop_table(:merge_request_assignment_events)
main: -> 0.0023s
main: == 20230413080906 CreateMergeRequestAssignmentEvents: reverted (0.0086s) ======
main: == [advisory_lock_connection] object_id: 273840, pg_backend_pid: 1216102
main: == [advisory_lock_connection] object_id: 273840, pg_backend_pid: 1216517
main: == 20230412080242 AddConcurrentFkToIssueAssignmentEvents: reverting ===========
main: == 20230412080242 AddConcurrentFkToIssueAssignmentEvents: reverted (0.0722s) ==
main: == [advisory_lock_connection] object_id: 273840, pg_backend_pid: 1216517
main: == [advisory_lock_connection] object_id: 273840, pg_backend_pid: 1216930
main: == 20230412073614 CreateIssueAssignmentEvents: reverting ======================
main: -- drop_table(:issue_assignment_events)
main: -> 0.0035s
main: == 20230412073614 CreateIssueAssignmentEvents: reverted (0.0104s) =============
main: == [advisory_lock_connection] object_id: 273840, pg_backend_pid: 1216930
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 #397050 (closed)
Edited by Adam Hegyi