From 8631ff003c07a8f7acf6bb275ccd33a6cae28be3 Mon Sep 17 00:00:00 2001 From: Krasimir Angelov <kangelov@gitlab.com> Date: Tue, 23 Jul 2024 14:11:18 +1200 Subject: [PATCH] Update partition manager lock retries config Less retries, shorter sleep intervals. Partitions are synced often enough, if lock can not be obtained move to the next one instead of retrying as if it's a migration. --- .../database/partitioning/partition_manager.rb | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/lib/gitlab/database/partitioning/partition_manager.rb b/lib/gitlab/database/partitioning/partition_manager.rb index 8c892b49d87b4..45b280b665293 100644 --- a/lib/gitlab/database/partitioning/partition_manager.rb +++ b/lib/gitlab/database/partitioning/partition_manager.rb @@ -13,6 +13,19 @@ class PartitionManager MANAGEMENT_LEASE_KEY = 'database_partition_management_%s' RETAIN_DETACHED_PARTITIONS_FOR = 1.week + LOCK_RETRIES_TIMING_CONFIGURATION = [ + [0.1.seconds, 0.05.seconds], + [0.1.seconds, 0.05.seconds], + [0.2.seconds, 0.05.seconds], + [0.3.seconds, 0.10.seconds], + [0.4.seconds, 0.15.seconds], + [0.5.seconds, 2.seconds], + [0.5.seconds, 2.seconds], + [0.5.seconds, 2.seconds], + [0.5.seconds, 2.seconds], + [1.second, 5.seconds] + ].freeze + def initialize(model, connection: nil) @model = model @connection = connection || model.connection @@ -135,6 +148,7 @@ def assert_partition_detachable!(partition) def with_lock_retries(&block) Gitlab::Database::WithLockRetries.new( + timing_configuration: LOCK_RETRIES_TIMING_CONFIGURATION * 2, klass: self.class, logger: Gitlab::AppLogger, connection: connection -- GitLab