Class: OnlineMigrations::ExponentialLockRetrier
- Inherits:
-
LockRetrier
- Object
- LockRetrier
- OnlineMigrations::ExponentialLockRetrier
- Defined in:
- lib/online_migrations/lock_retrier.rb
Overview
‘LockRetrier` implementation that uses exponential delay with jitter between tries and constant lock timeout for each try
Instance Method Summary collapse
-
#attempts(_command = nil, _arguments = []) ⇒ Integer
LockRetrier API implementation.
-
#delay(attempt, _command = nil, _arguments = []) ⇒ Numeric
LockRetrier API implementation.
-
#initialize(attempts:, base_delay:, max_delay:, lock_timeout: nil) ⇒ ExponentialLockRetrier
constructor
Create a new ExponentialLockRetrier instance.
-
#lock_timeout(_attempt, _command = nil, _arguments = []) ⇒ Numeric
LockRetrier API implementation.
Methods inherited from LockRetrier
Constructor Details
#initialize(attempts:, base_delay:, max_delay:, lock_timeout: nil) ⇒ ExponentialLockRetrier
Create a new ExponentialLockRetrier instance
205 206 207 208 209 210 211 |
# File 'lib/online_migrations/lock_retrier.rb', line 205 def initialize(attempts:, base_delay:, max_delay:, lock_timeout: nil) super() @attempts = attempts @base_delay = base_delay @max_delay = max_delay @lock_timeout = lock_timeout end |
Instance Method Details
#attempts(_command = nil, _arguments = []) ⇒ Integer
LockRetrier API implementation
218 219 220 |
# File 'lib/online_migrations/lock_retrier.rb', line 218 def attempts(_command = nil, _arguments = []) @attempts end |
#delay(attempt, _command = nil, _arguments = []) ⇒ Numeric
LockRetrier API implementation
237 238 239 |
# File 'lib/online_migrations/lock_retrier.rb', line 237 def delay(attempt, _command = nil, _arguments = []) (rand * [@max_delay, @base_delay * (2**(attempt - 1))].min).ceil end |
#lock_timeout(_attempt, _command = nil, _arguments = []) ⇒ Numeric
LockRetrier API implementation
227 228 229 |
# File 'lib/online_migrations/lock_retrier.rb', line 227 def lock_timeout(_attempt, _command = nil, _arguments = []) @lock_timeout end |