lib/gizzard/commands.rb in gizzmo-0.9.0 vs lib/gizzard/commands.rb in gizzmo-0.10.0

- old
+ new

@@ -39,19 +39,40 @@ else puts string end end end + + class RetryProxy + def initialize(retries, object) + @inner = object + @retries_left = retries + end + + def method_missing(*args) + @inner.send(*args) + rescue + if @retries_left > 0 + @retries_left -= 1 + STDERR.puts "Retrying..." + method_missing(*args) + else + raise + end + end + end class ShardCommand < Command def self.make_service(global_options, log) - Gizzard::Thrift::ShardManager.new(global_options.host, global_options.port, log, global_options.dry) + RetryProxy.new global_options.retry.to_i, + Gizzard::Thrift::ShardManager.new(global_options.host, global_options.port, log, global_options.dry) end end class JobCommand < Command def self.make_service(global_options, log) - Gizzard::Thrift::JobManager.new(global_options.host, global_options.port + 2, log, global_options.dry) + RetryProxy.new global_options.retry.to_i , + Gizzard::Thrift::JobManager.new(global_options.host, global_options.port + 2, log, global_options.dry) end end class AddforwardingCommand < ShardCommand def run