Class: Cottus::RetryableRoundRobinStrategy
- Inherits:
-
RoundRobinStrategy
- Object
- Strategy
- RoundRobinStrategy
- Cottus::RetryableRoundRobinStrategy
- Defined in:
- lib/cottus/strategies.rb
Instance Method Summary collapse
- #execute(meth, path, options = {}) ⇒ Object
-
#initialize(connections, options = {}) ⇒ RetryableRoundRobinStrategy
constructor
A new instance of RetryableRoundRobinStrategy.
Constructor Details
#initialize(connections, options = {}) ⇒ RetryableRoundRobinStrategy
Returns a new instance of RetryableRoundRobinStrategy.
58 59 60 61 62 |
# File 'lib/cottus/strategies.rb', line 58 def initialize(connections, ={}) super @timeouts = [:timeouts] || [1, 3, 5] end |
Instance Method Details
#execute(meth, path, options = {}) ⇒ Object
64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 |
# File 'lib/cottus/strategies.rb', line 64 def execute(meth, path, ={}) tries = 0 starting_connection = connection = next_connection begin connection.send(meth, path, ) rescue *VALID_EXCEPTIONS => e if tries < @timeouts.size sleep @timeouts[tries] tries += 1 retry else connection = next_connection raise e if connection == starting_connection tries = 0 retry end end end |