summaryrefslogtreecommitdiff
path: root/db
diff options
context:
space:
mode:
Diffstat (limited to 'db')
-rw-r--r--db/migrate/20200508203901_add_repository_storages_weighted_to_application_settings.rb26
-rw-r--r--db/migrate/20200509203901_reseed_repository_storages_weighted.rb37
-rw-r--r--db/post_migrate/20200526000407_seed_repository_storages_weighted.rb9
-rw-r--r--db/post_migrate/20200602143020_update_routes_for_lost_and_found_group_and_orphaned_projects.rb10
-rw-r--r--db/structure.sql1
5 files changed, 82 insertions, 1 deletions
diff --git a/db/migrate/20200508203901_add_repository_storages_weighted_to_application_settings.rb b/db/migrate/20200508203901_add_repository_storages_weighted_to_application_settings.rb
index b9d4f65989a..fecaed9a7a0 100644
--- a/db/migrate/20200508203901_add_repository_storages_weighted_to_application_settings.rb
+++ b/db/migrate/20200508203901_add_repository_storages_weighted_to_application_settings.rb
@@ -3,11 +3,37 @@
class AddRepositoryStoragesWeightedToApplicationSettings < ActiveRecord::Migration[6.0]
DOWNTIME = false
+ class ApplicationSetting < ActiveRecord::Base
+ serialize :repository_storages
+ self.table_name = 'application_settings'
+ end
+
def up
add_column :application_settings, :repository_storages_weighted, :jsonb, default: {}, null: false
+
+ seed_repository_storages_weighted
end
def down
remove_column :application_settings, :repository_storages_weighted
end
+
+ private
+
+ def seed_repository_storages_weighted
+ # We need to flush the cache to ensure the newly-added column is loaded
+ ApplicationSetting.reset_column_information
+
+ # There should only be one row here due to
+ # 20200420162730_remove_additional_application_settings_rows.rb
+ ApplicationSetting.all.each do |settings|
+ storages = Gitlab.config.repositories.storages.keys.collect do |storage|
+ weight = settings.repository_storages.include?(storage) ? 100 : 0
+ [storage.to_sym, weight]
+ end
+
+ settings.repository_storages_weighted = Hash[storages]
+ settings.save!
+ end
+ end
end
diff --git a/db/migrate/20200509203901_reseed_repository_storages_weighted.rb b/db/migrate/20200509203901_reseed_repository_storages_weighted.rb
new file mode 100644
index 00000000000..7a751b77c1c
--- /dev/null
+++ b/db/migrate/20200509203901_reseed_repository_storages_weighted.rb
@@ -0,0 +1,37 @@
+# frozen_string_literal: true
+
+class ReseedRepositoryStoragesWeighted < ActiveRecord::Migration[6.0]
+ DOWNTIME = false
+
+ class ApplicationSetting < ActiveRecord::Base
+ serialize :repository_storages
+ self.table_name = 'application_settings'
+ end
+
+ def up
+ reseed_repository_storages_weighted
+ end
+
+ private
+
+ def reseed_repository_storages_weighted
+ # We need to flush the cache to ensure the newly-added column is loaded
+ ApplicationSetting.reset_column_information
+
+ # There should only be one row here due to
+ # 20200420162730_remove_additional_application_settings_rows.rb
+ ApplicationSetting.all.each do |settings|
+ # Admins may have already tweaked these values, so don't do anything
+ # if there is data already.
+ next if settings.repository_storages_weighted.present?
+
+ storages = Gitlab.config.repositories.storages.keys.collect do |storage|
+ weight = settings.repository_storages.include?(storage) ? 100 : 0
+ [storage.to_sym, weight]
+ end
+
+ settings.repository_storages_weighted = Hash[storages]
+ settings.save!
+ end
+ end
+end
diff --git a/db/post_migrate/20200526000407_seed_repository_storages_weighted.rb b/db/post_migrate/20200526000407_seed_repository_storages_weighted.rb
index e5a0acb9cd8..979f16e75ed 100644
--- a/db/post_migrate/20200526000407_seed_repository_storages_weighted.rb
+++ b/db/post_migrate/20200526000407_seed_repository_storages_weighted.rb
@@ -1,16 +1,23 @@
# frozen_string_literal: true
class SeedRepositoryStoragesWeighted < ActiveRecord::Migration[6.0]
+ DOWNTIME = false
+
class ApplicationSetting < ActiveRecord::Base
serialize :repository_storages
self.table_name = 'application_settings'
end
def up
+ # We need to flush the cache to ensure the newly-added column is loaded
+ ApplicationSetting.reset_column_information
+
+ # There should only be one row here due to
+ # 20200420162730_remove_additional_application_settings_rows.rb
ApplicationSetting.all.each do |settings|
storages = Gitlab.config.repositories.storages.keys.collect do |storage|
weight = settings.repository_storages.include?(storage) ? 100 : 0
- [storage, weight]
+ [storage.to_sym, weight]
end
settings.repository_storages_weighted = Hash[storages]
diff --git a/db/post_migrate/20200602143020_update_routes_for_lost_and_found_group_and_orphaned_projects.rb b/db/post_migrate/20200602143020_update_routes_for_lost_and_found_group_and_orphaned_projects.rb
index 1935eaa1237..faa3c4161a0 100644
--- a/db/post_migrate/20200602143020_update_routes_for_lost_and_found_group_and_orphaned_projects.rb
+++ b/db/post_migrate/20200602143020_update_routes_for_lost_and_found_group_and_orphaned_projects.rb
@@ -136,6 +136,7 @@ class UpdateRoutesForLostAndFoundGroupAndOrphanedProjects < ActiveRecord::Migrat
# to ensure the Active Record's knowledge of the table structure is current
Namespace.reset_column_information
Route.reset_column_information
+ User.reset_column_information
# Find the ghost user, its namespace and the "lost and found" group
ghost_user = User.ghost
@@ -158,6 +159,15 @@ class UpdateRoutesForLostAndFoundGroupAndOrphanedProjects < ActiveRecord::Migrat
'More info: gitlab.com/gitlab-org/gitlab/-/issues/198603'
lost_and_found_group.save!
+ # make sure that the ghost namespace has a unique path
+ ghost_namespace.generate_unique_path
+
+ if ghost_namespace.path_changed?
+ ghost_namespace.save!
+ # If the path changed, also update the Ghost User's username to match the new path.
+ ghost_user.update!(username: ghost_namespace.path)
+ end
+
# Update the routes for the Ghost user, the "lost and found" group
# and all the orphaned projects
ghost_namespace.ensure_route!
diff --git a/db/structure.sql b/db/structure.sql
index 7cd30c15c33..fbcbcfc0f16 100644
--- a/db/structure.sql
+++ b/db/structure.sql
@@ -13903,6 +13903,7 @@ COPY "schema_migrations" (version) FROM STDIN;
20200508091106
20200508140959
20200508203901
+20200509203901
20200511080113
20200511083541
20200511092246