WIP Fix orphaned epics events
What does this MR do?
This fixes note events created for epics before !15649 (merged) was merged,
in that case before group_id
was introduced to events column.
We have 6000 records with nil group_id
:
gitlabhq_production=> SELECT count(*)
gitlabhq_production-> FROM "events"
gitlabhq_production-> INNER JOIN notes
gitlabhq_production-> ON notes.id = events.target_id
gitlabhq_production-> AND events.target_type = 'Note'
gitlabhq_production-> WHERE ( events.group_id IS NULL )
gitlabhq_production-> AND ( events.project_id IS NULL )
gitlabhq_production-> AND ( notes.noteable_type = 'Epic' )
gitlabhq_production-> AND ( events.target_type = 'Note' ) \g
count
-------
6497
(1 row)
Current migration output
I did use batch size of 2
just for example purposes, the default is 1000
.
==> Setting up GitLab Elasticsearch Indexer...
GitLab Elasticsearch Indexer set up in 0.000339162 seconds...
== 20191202175443 FixOrphanEpicsEvents: migrating =============================
-- execute("SET statement_timeout TO 0")
-> 0.0004s
-- execute("UPDATE events\nSET group_id = epics.group_id\nFROM notes\nINNER JOIN epics ON epics.id = notes.noteable_id AND notes.noteable_type = 'Epic'\nWHERE events.target_type = 'Note'\nAND notes.id = events.target_id\nAND events.id IN (SELECT \"events\".\"id\" FROM \"events\" INNER JOIN notes ON notes.id = events.target_id AND events.target_type = 'Note' WHERE (events.group_id IS NULL) AND (events.project_id IS NULL) AND (notes.noteable_type ='Epic') AND (events.target_type = 'Note') AND \"events\".\"id\" >= 1 AND \"events\".\"id\" < 6)\n")
-> 0.0036s
-- execute("UPDATE events\nSET group_id = epics.group_id\nFROM notes\nINNER JOIN epics ON epics.id = notes.noteable_id AND notes.noteable_type = 'Epic'\nWHERE events.target_type = 'Note'\nAND notes.id = events.target_id\nAND events.id IN (SELECT \"events\".\"id\" FROM \"events\" INNER JOIN notes ON notes.id = events.target_id AND events.target_type = 'Note' WHERE (events.group_id IS NULL) AND (events.project_id IS NULL) AND (notes.noteable_type ='Epic') AND (events.target_type = 'Note') AND \"events\".\"id\" >= 6 AND \"events\".\"id\" < 8)\n")
-> 0.0055s
-- execute("UPDATE events\nSET group_id = epics.group_id\nFROM notes\nINNER JOIN epics ON epics.id = notes.noteable_id AND notes.noteable_type = 'Epic'\nWHERE events.target_type = 'Note'\nAND notes.id = events.target_id\nAND events.id IN (SELECT \"events\".\"id\" FROM \"events\" INNER JOIN notes ON notes.id = events.target_id AND events.target_type = 'Note' WHERE (events.group_id IS NULL) AND (events.project_id IS NULL) AND (notes.noteable_type ='Epic') AND (events.target_type = 'Note') AND \"events\".\"id\" >= 8 AND \"events\".\"id\" < 10)\n")
-> 0.0030s
-- execute("UPDATE events\nSET group_id = epics.group_id\nFROM notes\nINNER JOIN epics ON epics.id = notes.noteable_id AND notes.noteable_type = 'Epic'\nWHERE events.target_type = 'Note'\nAND notes.id = events.target_id\nAND events.id IN (SELECT \"events\".\"id\" FROM \"events\" INNER JOIN notes ON notes.id = events.target_id AND events.target_type = 'Note' WHERE (events.group_id IS NULL) AND (events.project_id IS NULL) AND (notes.noteable_type ='Epic') AND (events.target_type = 'Note') AND \"events\".\"id\" >= 10 AND \"events\".\"id\" < 12)\n")
-> 0.0050s
-- execute("UPDATE events\nSET group_id = epics.group_id\nFROM notes\nINNER JOIN epics ON epics.id = notes.noteable_id AND notes.noteable_type = 'Epic'\nWHERE events.target_type = 'Note'\nAND notes.id = events.target_id\nAND events.id IN (SELECT \"events\".\"id\" FROM \"events\" INNER JOIN notes ON notes.id = events.target_id AND events.target_type = 'Note' WHERE (events.group_id IS NULL) AND (events.project_id IS NULL) AND (notes.noteable_type ='Epic') AND (events.target_type = 'Note') AND \"events\".\"id\" >= 12 AND \"events\".\"id\" < 14)\n")
-> 0.0027s
-- execute("UPDATE events\nSET group_id = epics.group_id\nFROM notes\nINNER JOIN epics ON epics.id = notes.noteable_id AND notes.noteable_type = 'Epic'\nWHERE events.target_type = 'Note'\nAND notes.id = events.target_id\nAND events.id IN (SELECT \"events\".\"id\" FROM \"events\" INNER JOIN notes ON notes.id = events.target_id AND events.target_type = 'Note' WHERE (events.group_id IS NULL) AND (events.project_id IS NULL) AND (notes.noteable_type ='Epic') AND (events.target_type = 'Note') AND \"events\".\"id\" >= 14)\n")
-> 0.0033s
-- execute("RESET ALL")
-> 0.0015s
== 20191202175443 FixOrphanEpicsEvents: migrated (0.0729s) ====================
related to #34200 (closed)
Conformity
Edited by 🤖 GitLab Bot 🤖