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:
authorGitLab Bot <gitlab-bot@gitlab.com>2022-09-20 02:18:09 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2022-09-20 02:18:09 +0300
commit6ed4ec3e0b1340f96b7c043ef51d1b33bbe85fde (patch)
treedc4d20fe6064752c0bd323187252c77e0a89144b /lib/gitlab/database/partitioning/partition_manager.rb
parent9868dae7fc0655bd7ce4a6887d4e6d487690eeed (diff)
Add latest changes from gitlab-org/gitlab@15-4-stable-eev15.4.0-rc42
Diffstat (limited to 'lib/gitlab/database/partitioning/partition_manager.rb')
-rw-r--r--lib/gitlab/database/partitioning/partition_manager.rb25
1 files changed, 20 insertions, 5 deletions
diff --git a/lib/gitlab/database/partitioning/partition_manager.rb b/lib/gitlab/database/partitioning/partition_manager.rb
index aac91eaadb1..55ca9ff8645 100644
--- a/lib/gitlab/database/partitioning/partition_manager.rb
+++ b/lib/gitlab/database/partitioning/partition_manager.rb
@@ -10,12 +10,15 @@ module Gitlab
MANAGEMENT_LEASE_KEY = 'database_partition_management_%s'
RETAIN_DETACHED_PARTITIONS_FOR = 1.week
- def initialize(model)
+ def initialize(model, connection: nil)
@model = model
- @connection_name = model.connection.pool.db_config.name
+ @connection = connection || model.connection
+ @connection_name = @connection.pool.db_config.name
end
def sync_partitions
+ return skip_synching_partitions unless table_partitioned?
+
Gitlab::AppLogger.info(
message: "Checking state of dynamic postgres partitions",
table_name: model.table_name,
@@ -43,9 +46,7 @@ module Gitlab
private
- attr_reader :model
-
- delegate :connection, to: :model
+ attr_reader :model, :connection
def missing_partitions
return [] unless connection.table_exists?(model.table_name)
@@ -129,6 +130,20 @@ module Gitlab
connection: connection
).run(&block)
end
+
+ def table_partitioned?
+ Gitlab::Database::SharedModel.using_connection(connection) do
+ Gitlab::Database::PostgresPartitionedTable.find_by_name_in_current_schema(model.table_name).present?
+ end
+ end
+
+ def skip_synching_partitions
+ Gitlab::AppLogger.warn(
+ message: "Skipping synching partitions",
+ table_name: model.table_name,
+ connection_name: @connection_name
+ )
+ end
end
end
end