Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'lib/tasks/gitlab/db.rake')
-rw-r--r--lib/tasks/gitlab/db.rake54
1 files changed, 37 insertions, 17 deletions
diff --git a/lib/tasks/gitlab/db.rake b/lib/tasks/gitlab/db.rake
index c4dc7b938cc..72fe190bc8f 100644
--- a/lib/tasks/gitlab/db.rake
+++ b/lib/tasks/gitlab/db.rake
@@ -131,7 +131,7 @@ namespace :gitlab do
end
end
- desc 'This adjusts and cleans db/structure.sql - it runs after db:structure:dump'
+ desc 'This adjusts and cleans db/structure.sql - it runs after db:schema:dump'
task :clean_structure_sql do |task_name|
ActiveRecord::Base.configurations.configs_for(env_name: ActiveRecord::Tasks::DatabaseTasks.env).each do |db_config|
structure_file = ActiveRecord::Tasks::DatabaseTasks.dump_filename(db_config.name)
@@ -147,26 +147,13 @@ namespace :gitlab do
Rake::Task[task_name].reenable
end
- # Inform Rake that custom tasks should be run every time rake db:structure:dump is run
- #
- # Rails 6.1 deprecates db:structure:dump in favor of db:schema:dump
- Rake::Task['db:structure:dump'].enhance do
- Rake::Task['gitlab:db:clean_structure_sql'].invoke
- end
-
# Inform Rake that custom tasks should be run every time rake db:schema:dump is run
Rake::Task['db:schema:dump'].enhance do
Rake::Task['gitlab:db:clean_structure_sql'].invoke
end
ActiveRecord::Tasks::DatabaseTasks.for_each(databases) do |name|
- # Inform Rake that custom tasks should be run every time rake db:structure:dump is run
- #
- # Rails 6.1 deprecates db:structure:dump in favor of db:schema:dump
- Rake::Task["db:structure:dump:#{name}"].enhance do
- Rake::Task['gitlab:db:clean_structure_sql'].invoke
- end
-
+ # Inform Rake that custom tasks should be run every time rake db:schema:dump is run
Rake::Task["db:schema:dump:#{name}"].enhance do
Rake::Task['gitlab:db:clean_structure_sql'].invoke
end
@@ -313,6 +300,36 @@ namespace :gitlab do
end
end
+ namespace :validate_async_constraints do
+ each_database(databases) do |database_name|
+ task database_name, [:pick] => :environment do |_, args|
+ args.with_defaults(pick: 2)
+
+ if Feature.disabled?(:database_async_foreign_key_validation, type: :ops)
+ puts <<~NOTE.color(:yellow)
+ Note: database async foreign key validation feature is currently disabled.
+
+ Enable with: Feature.enable(:database_async_foreign_key_validation)
+ NOTE
+ exit
+ end
+
+ Gitlab::Database::EachDatabase.each_database_connection(only: database_name) do
+ Gitlab::Database::AsyncConstraints.validate_pending_entries!(how_many: args[:pick].to_i)
+ end
+ end
+ end
+
+ task :all, [:pick] => :environment do |_, args|
+ default_pick = Gitlab.dev_or_test_env? ? 1000 : 2
+ args.with_defaults(pick: default_pick)
+
+ each_database(databases) do |database_name|
+ Rake::Task["gitlab:db:validate_async_constraints:#{database_name}"].invoke(args[:pick])
+ end
+ end
+ end
+
desc 'Check if there have been user additions to the database'
task active: :environment do
if ActiveRecord::Base.connection.migration_context.needs_migration?
@@ -433,13 +450,15 @@ namespace :gitlab do
desc 'Generate database docs yaml'
task generate: :environment do
+ next if Gitlab.jh?
+
FileUtils.mkdir_p(DB_DOCS_PATH)
FileUtils.mkdir_p(EE_DICTIONARY_PATH) if Gitlab.ee?
Rails.application.eager_load!
version = Gem::Version.new(File.read('VERSION'))
- milestone = version.release.segments[0..1].join('.')
+ milestone = version.release.segments.first(2).join('.')
classes = {}
@@ -459,6 +478,7 @@ namespace :gitlab do
.reject(&:abstract_class)
.reject { |c| c.name =~ /^(?:EE::)?Gitlab::(?:BackgroundMigration|DatabaseImporters)::/ }
.reject { |c| c.name =~ /^HABTM_/ }
+ .reject { |c| c < Gitlab::Database::Migration[1.0]::MigrationRecord }
.each { |c| classes[c.table_name] << c.name if classes.has_key?(c.table_name) }
sources.each do |source_name|
@@ -488,7 +508,7 @@ namespace :gitlab do
end
if existing_metadata['classes'] && existing_metadata['classes'].sort != table_metadata['classes'].sort
- existing_metadata['classes'] = table_metadata['classes']
+ existing_metadata['classes'] = (existing_metadata['classes'] + table_metadata['classes']).uniq.sort
outdated = true
end