diff options
Diffstat (limited to 'lib/mogilefs/backend.rb')
-rw-r--r-- | lib/mogilefs/backend.rb | 7 |
1 files changed, 3 insertions, 4 deletions
diff --git a/lib/mogilefs/backend.rb b/lib/mogilefs/backend.rb index f33c42d..a45cbed 100644 --- a/lib/mogilefs/backend.rb +++ b/lib/mogilefs/backend.rb @@ -70,6 +70,7 @@ class MogileFS::Backend def initialize(args) @hosts = args[:hosts] + @fail_timeout = args[:fail_timeout] || 5 raise ArgumentError, "must specify at least one host" unless @hosts raise ArgumentError, "must specify at least one host" if @hosts.empty? unless @hosts == @hosts.select { |h| h =~ /:\d+$/ } then @@ -361,17 +362,15 @@ class MogileFS::Backend def socket return @socket if @socket and not @socket.closed? - now = Time.now - @hosts.shuffle.each do |host| - next if @dead.include?(host) and @dead[host][0] > now - 5 + next if dead = @dead[host] and dead[0] > (Time.now - @fail_timeout) begin addr, port = host.split(/:/) @socket = MogileFS::Socket.tcp(addr, port, @timeout) @active_host = host rescue SystemCallError, MogileFS::Timeout => err - @dead[host] = [ now, err ] + @dead[host] = [ Time.now, err ] next end |