Skip to content

Commit 6b0f2c8

Browse files
committed
increment gradually the lock_timeout value
1 parent fe0be8d commit 6b0f2c8

File tree

2 files changed

+11
-1
lines changed

2 files changed

+11
-1
lines changed

lib/safe-pg-migrations/configuration.rb

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,9 @@ class Configuration
1313
retry_delay
1414
max_tries
1515
sensitive_logger
16+
lock_timeout
17+
safe_timeout
1618
])
17-
attr_reader :lock_timeout, :safe_timeout
1819

1920
def initialize
2021
self.default_value_backfill_threshold = nil

lib/safe-pg-migrations/plugins/statement_retrier.rb

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,15 @@ def retry_if_lock_timeout
2121
raise if transaction_open? # Retrying is useless if we're inside a transaction.
2222
raise unless remaining_tries > 0
2323

24+
number_of_retries = SafePgMigrations.config.max_tries - remaining_tries
25+
if SafePgMigrations.config.max_tries - remaining_tries <= 20
26+
SafePgMigrations.config.lock_timeout = SafePgMigrations.config.lock_timeout * number_of_retries
27+
SafePgMigrations.config.safe_timeout = SafePgMigrations.config.safe_timeout * number_of_retries
28+
else
29+
SafePgMigrations.config.lock_timeout = SafePgMigrations.config.lock_timeout * 20
30+
SafePgMigrations.config.safe_timeout = SafePgMigrations.config.safe_timeout * 20
31+
end
32+
2433
retry_delay = SafePgMigrations.config.retry_delay
2534
Helpers::Logger.say "Retrying in #{retry_delay} seconds...", sub_item: true
2635
sleep retry_delay

0 commit comments

Comments
 (0)