diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2023-02-25 00:08:03 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2023-02-25 00:08:03 +0300 |
commit | 0b5e5c78a9d7acbf773d7ba5fd5c2ce9b6ffdb52 (patch) | |
tree | 64e092630aca6e42462003414519f22266dcbc25 /lib/gitlab/database | |
parent | d48b87d4675d6b8b56dd9b40afa9eb2dce32ad3b (diff) |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'lib/gitlab/database')
-rw-r--r-- | lib/gitlab/database/async_constraints.rb (renamed from lib/gitlab/database/async_foreign_keys.rb) | 4 | ||||
-rw-r--r-- | lib/gitlab/database/async_constraints/foreign_key_validator.rb (renamed from lib/gitlab/database/async_foreign_keys/foreign_key_validator.rb) | 2 | ||||
-rw-r--r-- | lib/gitlab/database/async_constraints/migration_helpers.rb (renamed from lib/gitlab/database/async_foreign_keys/migration_helpers.rb) | 20 | ||||
-rw-r--r-- | lib/gitlab/database/async_constraints/postgres_async_constraint_validation.rb (renamed from lib/gitlab/database/async_foreign_keys/postgres_async_foreign_key_validation.rb) | 8 | ||||
-rw-r--r-- | lib/gitlab/database/migration_helpers.rb | 2 | ||||
-rw-r--r-- | lib/gitlab/database/reindexing.rb | 2 |
6 files changed, 21 insertions, 17 deletions
diff --git a/lib/gitlab/database/async_foreign_keys.rb b/lib/gitlab/database/async_constraints.rb index 115ae9ba2e8..c4e05a88430 100644 --- a/lib/gitlab/database/async_foreign_keys.rb +++ b/lib/gitlab/database/async_constraints.rb @@ -2,11 +2,11 @@ module Gitlab module Database - module AsyncForeignKeys + module AsyncConstraints DEFAULT_ENTRIES_PER_INVOCATION = 2 def self.validate_pending_entries!(how_many: DEFAULT_ENTRIES_PER_INVOCATION) - PostgresAsyncForeignKeyValidation.ordered.limit(how_many).each do |record| + PostgresAsyncConstraintValidation.ordered.limit(how_many).each do |record| ForeignKeyValidator.new(record).perform end end diff --git a/lib/gitlab/database/async_foreign_keys/foreign_key_validator.rb b/lib/gitlab/database/async_constraints/foreign_key_validator.rb index 1eb8588405d..a535a86913c 100644 --- a/lib/gitlab/database/async_foreign_keys/foreign_key_validator.rb +++ b/lib/gitlab/database/async_constraints/foreign_key_validator.rb @@ -2,7 +2,7 @@ module Gitlab module Database - module AsyncForeignKeys + module AsyncConstraints class ForeignKeyValidator include AsyncDdlExclusiveLeaseGuard diff --git a/lib/gitlab/database/async_foreign_keys/migration_helpers.rb b/lib/gitlab/database/async_constraints/migration_helpers.rb index eb33b9dc1f6..f51bb015c88 100644 --- a/lib/gitlab/database/async_foreign_keys/migration_helpers.rb +++ b/lib/gitlab/database/async_constraints/migration_helpers.rb @@ -2,17 +2,17 @@ module Gitlab module Database - module AsyncForeignKeys + module AsyncConstraints module MigrationHelpers # Prepares a foreign key for asynchronous validation. # - # Stores the FK information in the postgres_async_foreign_key_validations + # Stores the FK information in the postgres_async_constraint_validations # table to be executed later. # def prepare_async_foreign_key_validation(table_name, column_name = nil, name: nil) Gitlab::Database::QueryAnalyzers::RestrictAllowedSchemas.require_ddl_mode! - return unless async_fk_validation_available? + return unless async_constraint_validation_available? fk_name = name || concurrent_foreign_key_name(table_name, column_name) @@ -20,7 +20,7 @@ module Gitlab raise missing_schema_object_message(table_name, "foreign key", fk_name) end - async_validation = PostgresAsyncForeignKeyValidation + async_validation = PostgresAsyncConstraintValidation .find_or_create_by!(name: fk_name, table_name: table_name) Gitlab::AppLogger.info( @@ -34,11 +34,11 @@ module Gitlab def unprepare_async_foreign_key_validation(table_name, column_name = nil, name: nil) Gitlab::Database::QueryAnalyzers::RestrictAllowedSchemas.require_ddl_mode! - return unless async_fk_validation_available? + return unless async_constraint_validation_available? fk_name = name || concurrent_foreign_key_name(table_name, column_name) - PostgresAsyncForeignKeyValidation + PostgresAsyncConstraintValidation .find_by(name: fk_name, table_name: table_name) .try(&:destroy!) end @@ -46,7 +46,7 @@ module Gitlab def prepare_partitioned_async_foreign_key_validation(table_name, column_name = nil, name: nil) Gitlab::Database::QueryAnalyzers::RestrictAllowedSchemas.require_ddl_mode! - return unless async_fk_validation_available? + return unless async_constraint_validation_available? Gitlab::Database::PostgresPartitionedTable.each_partition(table_name) do |partition| prepare_async_foreign_key_validation(partition.identifier, column_name, name: name) @@ -56,7 +56,7 @@ module Gitlab def unprepare_partitioned_async_foreign_key_validation(table_name, column_name = nil, name: nil) Gitlab::Database::QueryAnalyzers::RestrictAllowedSchemas.require_ddl_mode! - return unless async_fk_validation_available? + return unless async_constraint_validation_available? Gitlab::Database::PostgresPartitionedTable.each_partition(table_name) do |partition| unprepare_async_foreign_key_validation(partition.identifier, column_name, name: name) @@ -65,8 +65,8 @@ module Gitlab private - def async_fk_validation_available? - connection.table_exists?(:postgres_async_foreign_key_validations) + def async_constraint_validation_available? + PostgresAsyncConstraintValidation.table_available? end end end diff --git a/lib/gitlab/database/async_foreign_keys/postgres_async_foreign_key_validation.rb b/lib/gitlab/database/async_constraints/postgres_async_constraint_validation.rb index fb01c1e2025..ae996600f7c 100644 --- a/lib/gitlab/database/async_foreign_keys/postgres_async_foreign_key_validation.rb +++ b/lib/gitlab/database/async_constraints/postgres_async_constraint_validation.rb @@ -2,8 +2,8 @@ module Gitlab module Database - module AsyncForeignKeys - class PostgresAsyncForeignKeyValidation < SharedModel + module AsyncConstraints + class PostgresAsyncConstraintValidation < SharedModel include QueueErrorHandlingConcern self.table_name = 'postgres_async_foreign_key_validations' @@ -15,6 +15,10 @@ module Gitlab validates :table_name, presence: true, length: { maximum: MAX_IDENTIFIER_LENGTH } scope :ordered, -> { order(attempts: :asc, id: :asc) } + + def self.table_available? + connection.table_exists?(table_name) + end end end end diff --git a/lib/gitlab/database/migration_helpers.rb b/lib/gitlab/database/migration_helpers.rb index 08122875abc..271da2edbc9 100644 --- a/lib/gitlab/database/migration_helpers.rb +++ b/lib/gitlab/database/migration_helpers.rb @@ -14,7 +14,7 @@ module Gitlab include DynamicModelHelpers include RenameTableHelpers include AsyncIndexes::MigrationHelpers - include AsyncForeignKeys::MigrationHelpers + include AsyncConstraints::MigrationHelpers def define_batchable_model(table_name, connection: self.connection) super(table_name, connection: connection) diff --git a/lib/gitlab/database/reindexing.rb b/lib/gitlab/database/reindexing.rb index 78de7161a0f..739e573b6c4 100644 --- a/lib/gitlab/database/reindexing.rb +++ b/lib/gitlab/database/reindexing.rb @@ -28,7 +28,7 @@ module Gitlab # Hack: Before we do actual reindexing work, create async indexes Gitlab::Database::AsyncIndexes.create_pending_indexes! if Feature.enabled?(:database_async_index_creation, type: :ops) Gitlab::Database::AsyncIndexes.drop_pending_indexes! - Gitlab::Database::AsyncForeignKeys.validate_pending_entries! if Feature.enabled?(:database_async_foreign_key_validation, type: :ops) + Gitlab::Database::AsyncConstraints.validate_pending_entries! if Feature.enabled?(:database_async_foreign_key_validation, type: :ops) automatic_reindexing end |