diff --git a/lib/gitlab/database/partitioning/partition_manager.rb b/lib/gitlab/database/partitioning/partition_manager.rb index 8c892b49d87b4fc451d22342c3564b3d95bbe16c..45b280b66529363e5880493666674b3cdad50760 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