From 7bedbf3ed5920a922da89874a2bd134fb1a82c83 Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Sat, 12 Nov 2011 12:28:49 +0000 Subject: list_keys_verbose: retry on pipeline error Sometimes a server will shut down on us in the middle of a pipeline. That is bad. --- lib/mogilefs/mogilefs.rb | 34 ++++++++++++++++++++-------------- 1 file changed, 20 insertions(+), 14 deletions(-) (limited to 'lib/mogilefs/mogilefs.rb') diff --git a/lib/mogilefs/mogilefs.rb b/lib/mogilefs/mogilefs.rb index cfbf082..73827c3 100644 --- a/lib/mogilefs/mogilefs.rb +++ b/lib/mogilefs/mogilefs.rb @@ -263,21 +263,27 @@ class MogileFS::MogileFS < MogileFS::Client end end opts = { :domain => @domain } - keys.each do |key| - opts[:key] = key - @backend.pipeline_dispatch(:file_info, opts, &on_file_info) - end - @backend.pipeline_wait - rescue MogileFS::Backend::UnknownCommandError # MogileFS < 2.45 - @backend.shutdown # reset the socket - args = { :pathcount => 0x7fffffff } - keys.each do |key| - paths = get_paths(key, args) - block.call(key, paths_size(paths), paths.size) + begin + keys.each do |key| + opts[:key] = key + @backend.pipeline_dispatch(:file_info, opts, &on_file_info) + end + @backend.pipeline_wait + rescue MogileFS::Backend::UnknownCommandError # MogileFS < 2.45 + @backend.shutdown # reset the socket + args = { :pathcount => 0x7fffffff } + keys.each do |key| + paths = get_paths(key, args) + block.call(key, paths_size(paths), paths.size) + end + rescue MogileFS::PipelineError + @backend.shutdown + keys = ordered - ready.keys + retry + rescue + @backend.shutdown + raise end - rescue - @backend.shutdown - raise end # Return metadata about a file as a hash. -- cgit v1.2.3-24-ge0c7