summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDouwe Maan <douwe@gitlab.com>2016-08-04 20:03:14 +0000
committerRémy Coutable <remy@rymai.me>2016-08-10 14:29:29 +0200
commit61ef2d31d2261f0a276bd4d2822d0d4815e749b4 (patch)
treea333eeedbb46b2983294596911d2cd45eb201a69
parent942d997cf3c596e0b1fc8ac0b750d40afffa57e4 (diff)
downloadgitlab-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--CHANGELOG3
-rw-r--r--db/migrate/20160804150737_add_timestamps_to_members_again.rb21
-rw-r--r--db/schema.rb2
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"