1
0
Fork 0
mirror of https://we.phorge.it/source/phorge.git synced 2024-12-26 23:40:57 +01:00
phorge-phorge/resources/sql/patches/029.cursors.sql
epriestley ee1e2da8fb Avoid Timeline race condition
Summary: While I should fix the transactional stuff, that patch is going to be
tricky and transactions have some performance implications. This is a simple
fix which prevents the race.

Instead of having the data point at the event ID, have the event point at a
data ID. Insert the data first, then insert the event with the right data
pointer. This is super simple and prevents the race issue.

Test Plan:
  - Ran the schema upgrade script, verified that the database was
    correctly upgraded. Was also prompted to stop daemons.
  - Ran 'repository-launch-master', verified that the discovery daemons were
    able to discover new commits and insert events for them. Verified the
    committask daemon was consuming events and converting them into tasks.
  - Verified new tasks looked correct in the database.
  - Browsed web interface.

Reviewers: jungejason

CC: tuomaspelkonen

Differential Revision: 133
2011-04-14 10:12:10 -07:00

13 lines
364 B
SQL

ALTER TABLE phabricator_timeline.timeline_event
ADD dataID int unsigned;
ALTER TABLE phabricator_timeline.timeline_event
ADD UNIQUE KEY (dataID);
UPDATE phabricator_timeline.timeline_event e,
phabricator_timeline.timeline_eventdata d
SET e.dataID = d.id
WHERE d.eventID = e.id;
ALTER TABLE phabricator_timeline.timeline_eventdata
DROP eventID;