diff options
Diffstat (limited to 'lib/mogilefs/mogilefs.rb')
-rw-r--r-- | lib/mogilefs/mogilefs.rb | 34 |
1 files changed, 20 insertions, 14 deletions
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. |