diff options
Diffstat (limited to 'db')
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 |