diff options
author | Eric Wong <normalperson@yhbt.net> | 2011-11-12 12:28:49 +0000 |
---|---|---|
committer | Eric Wong <normalperson@yhbt.net> | 2011-11-12 12:28:49 +0000 |
commit | 7bedbf3ed5920a922da89874a2bd134fb1a82c83 (patch) | |
tree | b5e00c841dcc372f8ef7e48dbbe6f74dcf71a52b /lib/mogilefs/mogilefs.rb | |
parent | 435d43d6b85481e7b678c3092dec7fcb246e30e8 (diff) | |
download | mogilefs-client-7bedbf3ed5920a922da89874a2bd134fb1a82c83.tar.gz |
Sometimes a server will shut down on us in the middle of a pipeline. That is bad.
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. |