diff options
author | Stan Hu <stanhu@gmail.com> | 2017-09-22 22:26:48 -0400 |
---|---|---|
committer | Stan Hu <stanhu@gmail.com> | 2017-09-22 22:45:25 -0400 |
commit | 2e564ddfc7ac500b72051d56b9a6b37979296c0e (patch) | |
tree | 9e3bccd0b895032e2081ec917d993e96e350efdc | |
parent | 024d10b7adabe4ca2fc42107837367cb086fe75c (diff) | |
download | gitlab-ce-2e564ddfc7ac500b72051d56b9a6b37979296c0e.tar.gz |
Fix duplicate key errors in PostDeployMigrateUserExternalMailData migrationsh-fix-issue-38246
`email_provider` by default is NULL, and if a user had not logged the
value would remain NULL. Upgrading to GitLab 10.0 would lead to a
PG::UniqueViolation because the post-deploy migration would attempt
to reinsert the entry because the NULL comparison between
`users.email_provider` and `user_synced_attributes_metadata.email_provider`
would never match.
Closes #38246
3 files changed, 7 insertions, 2 deletions
diff --git a/changelogs/unreleased/sh-fix-issue-38246.yml b/changelogs/unreleased/sh-fix-issue-38246.yml new file mode 100644 index 00000000000..8a127559fbb --- /dev/null +++ b/changelogs/unreleased/sh-fix-issue-38246.yml @@ -0,0 +1,5 @@ +--- +title: Fix duplicate key errors in PostDeployMigrateUserExternalMailData migration +merge_request: +author: +type: fixed diff --git a/db/migrate/20170828135939_migrate_user_external_mail_data.rb b/db/migrate/20170828135939_migrate_user_external_mail_data.rb index 592e141b7e6..395181a3b22 100644 --- a/db/migrate/20170828135939_migrate_user_external_mail_data.rb +++ b/db/migrate/20170828135939_migrate_user_external_mail_data.rb @@ -33,7 +33,7 @@ class MigrateUserExternalMailData < ActiveRecord::Migration SELECT true FROM user_synced_attributes_metadata WHERE user_id = users.id - AND provider = users.email_provider + AND provider = users.email_provider OR (provider IS NULL AND users.email_provider IS NULL) ) AND id BETWEEN #{start_id} AND #{end_id} EOF diff --git a/db/post_migrate/20170828170502_post_deploy_migrate_user_external_mail_data.rb b/db/post_migrate/20170828170502_post_deploy_migrate_user_external_mail_data.rb index fefd931e5d2..a475b242921 100644 --- a/db/post_migrate/20170828170502_post_deploy_migrate_user_external_mail_data.rb +++ b/db/post_migrate/20170828170502_post_deploy_migrate_user_external_mail_data.rb @@ -33,7 +33,7 @@ class PostDeployMigrateUserExternalMailData < ActiveRecord::Migration SELECT true FROM user_synced_attributes_metadata WHERE user_id = users.id - AND provider = users.email_provider + AND provider = users.email_provider OR (provider IS NULL AND users.email_provider IS NULL) ) AND id BETWEEN #{start_id} AND #{end_id} EOF |