about summary refs log tree commit homepage
path: root/lib/mogilefs/backend.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/mogilefs/backend.rb')
-rw-r--r--lib/mogilefs/backend.rb7
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