diff options
author | Douwe Maan <douwe@gitlab.com> | 2016-08-04 20:03:14 +0000 |
---|---|---|
committer | Rémy Coutable <remy@rymai.me> | 2016-08-10 14:29:29 +0200 |
commit | 61ef2d31d2261f0a276bd4d2822d0d4815e749b4 (patch) | |
tree | a333eeedbb46b2983294596911d2cd45eb201a69 | |
parent | 942d997cf3c596e0b1fc8ac0b750d40afffa57e4 (diff) | |
download | gitlab-ce-61ef2d31d2261f0a276bd4d2822d0d4815e749b4.tar.gz |
Merge branch '20568-fix-member-data-again' into 'master'
Add a data migration to fix some missing timestamps in the members table (again)
Repeats an earlier migration to fix historic bad data in the members table (missing created_at and updated_at fields)
I'm expecting the WHERE clauses to be fast enough, and to return few enough rows, that the migration doesn't need to use batches, but I'm not too familiar with the size of these tables in the wild, so perhaps that's a poor assumption.
8.10 introduced a dependency on the `members.created_at` field in the project and namespace member view. If bad data is present, viewing the list of members now results in an NoMethodError and a 500 response from GitLab. Although the previous migration should have fixed all bad rows, we have evidence that it didn't in at least one case, despite the migration claiming to have run in the past.
Closes #20568
See merge request !5670
Signed-off-by: Rémy Coutable <remy@rymai.me>
-rw-r--r-- | CHANGELOG | 3 | ||||
-rw-r--r-- | db/migrate/20160804150737_add_timestamps_to_members_again.rb | 21 | ||||
-rw-r--r-- | db/schema.rb | 2 |
3 files changed, 24 insertions, 2 deletions
diff --git a/CHANGELOG b/CHANGELOG index 7918470b200..e8384ebaa1b 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,6 +1,7 @@ Please view this file on the master branch, on stable branches it's out of date. -v 8.10.5 (unreleased) +v 8.10.5 + - Add a data migration to fix some missing timestamps in the members table. !5670 v 8.10.4 - Don't close referenced upstream issues from a forked project. diff --git a/db/migrate/20160804150737_add_timestamps_to_members_again.rb b/db/migrate/20160804150737_add_timestamps_to_members_again.rb new file mode 100644 index 00000000000..6691ba57fbb --- /dev/null +++ b/db/migrate/20160804150737_add_timestamps_to_members_again.rb @@ -0,0 +1,21 @@ +# rubocop:disable all +# 20141121133009_add_timestamps_to_members.rb was meant to ensure that all +# rows in the members table had created_at and updated_at set, following an +# error in a previous migration. This failed to set all rows in at least one +# case: https://gitlab.com/gitlab-org/gitlab-ce/issues/20568 +# +# Why this happened is lost in the mists of time, so repeat the SQL query +# without speculation, just in case more than one person was affected. +class AddTimestampsToMembersAgain < ActiveRecord::Migration + DOWNTIME = false + + def up + execute "UPDATE members SET created_at = NOW() WHERE created_at IS NULL" + execute "UPDATE members SET updated_at = NOW() WHERE updated_at IS NULL" + end + + def down + # no change + end + +end diff --git a/db/schema.rb b/db/schema.rb index 15cee55a7bf..6aebcc4ab31 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -11,7 +11,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 20160722221922) do +ActiveRecord::Schema.define(version: 20160804150737) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" |