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, 4 insertions, 3 deletions
diff --git a/lib/mogilefs/backend.rb b/lib/mogilefs/backend.rb
index cbeec3d..afc2f1a 100644
--- a/lib/mogilefs/backend.rb
+++ b/lib/mogilefs/backend.rb
@@ -246,15 +246,16 @@ class MogileFS::Backend
           raise EOFError, "end of file reached after: #{request.inspect}"
         # fall through to retry in loop
       rescue SystemCallError,
-             MogileFS::UnreadableSocketError,
-             MogileFS::InvalidResponseError, # truncated response
-             MogileFS::Timeout
+             MogileFS::InvalidResponseError # truncated response
         # we got a successful timed_write, but not a timed_gets
         if idempotent
           failed = true
+          shutdown_unlocked(false)
           retry
         end
         shutdown_unlocked(true)
+      rescue MogileFS::UnreadableSocketError, MogileFS::Timeout
+        shutdown_unlocked(true)
       rescue
         # we DO NOT want the response we timed out waiting for, to crop up later
         # on, on the same socket, intersperesed with a subsequent request!  we