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