From 829d459f7335cb6eb6a2f6d24e0d6f984cef2d52 Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Tue, 6 Dec 2011 20:53:42 +0000 Subject: improve diagnostics on unreadable sockets with timeout --- lib/mogilefs/socket/kgio.rb | 4 ++-- lib/mogilefs/socket/pure_ruby.rb | 4 ++-- lib/mogilefs/socket_common.rb | 7 ++++--- test/test_backend.rb | 2 +- 4 files changed, 9 insertions(+), 8 deletions(-) diff --git a/lib/mogilefs/socket/kgio.rb b/lib/mogilefs/socket/kgio.rb index f752e83..38ebd4d 100644 --- a/lib/mogilefs/socket/kgio.rb +++ b/lib/mogilefs/socket/kgio.rb @@ -22,7 +22,7 @@ class MogileFS::Socket < Kgio::Socket def timed_read(len, dst = "", timeout = 5) case rc = kgio_tryread(len, dst) when :wait_readable - kgio_wait_readable(timeout) or unreadable_socket! + kgio_wait_readable(timeout) or unreadable_socket!(timeout) else return rc end while true @@ -31,7 +31,7 @@ class MogileFS::Socket < Kgio::Socket def timed_peek(len, dst, timeout = 5) case rc = kgio_trypeek(len, dst) when :wait_readable - kgio_wait_readable(timeout) or unreadable_socket! + kgio_wait_readable(timeout) or unreadable_socket!(timeout) else return rc end while true diff --git a/lib/mogilefs/socket/pure_ruby.rb b/lib/mogilefs/socket/pure_ruby.rb index 25e0bfb..8833d22 100644 --- a/lib/mogilefs/socket/pure_ruby.rb +++ b/lib/mogilefs/socket/pure_ruby.rb @@ -24,7 +24,7 @@ class MogileFS::Socket < Socket def timed_read(len, dst = "", timeout = 5) begin - IO.select([self], nil, nil, timeout) or unreadable_socket! + IO.select([self], nil, nil, timeout) or unreadable_socket!(timeout) return read_nonblock(len, dst) rescue Errno::EAGAIN rescue EOFError @@ -34,7 +34,7 @@ class MogileFS::Socket < Socket def timed_peek(len, dst, timeout = 5) begin - IO.select([self], nil, nil, timeout) or unreadable_socket! + IO.select([self], nil, nil, timeout) or unreadable_socket!(timeout) rc = recv_nonblock(len, Socket::MSG_PEEK) return rc.empty? ? nil : dst.replace(rc) rescue Errno::EAGAIN diff --git a/lib/mogilefs/socket_common.rb b/lib/mogilefs/socket_common.rb index 404acd0..a716d35 100644 --- a/lib/mogilefs/socket_common.rb +++ b/lib/mogilefs/socket_common.rb @@ -12,14 +12,15 @@ module MogileFS::SocketCommon self end - def unreadable_socket! + def unreadable_socket!(timeout) raise MogileFS::UnreadableSocketError, - "#@mogilefs_addr never became readable" + "#@mogilefs_addr never became readable (timeout=#{timeout.inspect})" end def request_truncated!(written, expect, timeout) + timeout = timeout.inspect raise MogileFS::RequestTruncatedError, - "request truncated (sent #{written} expected #{expect}) after #{timeout}s" + "request truncated (sent #{written} expected #{expect} timeout=#{timeout})" end SEP_RE = /\A(.*?#{Regexp.escape("\n")})/ diff --git a/test/test_backend.rb b/test/test_backend.rb index 860be8f..707c312 100644 --- a/test/test_backend.rb +++ b/test/test_backend.rb @@ -117,7 +117,7 @@ class TestBackend < Test::Unit::TestCase begin @backend.do_request 'foo', {} rescue MogileFS::UnreadableSocketError => e - assert_equal "127.0.0.1:#{port} never became readable", e.message + assert_match(/127\.0\.0\.1:#{port} never became readable/, e.message) rescue Exception => err flunk "MogileFS::UnreadableSocketError not raised #{err} #{err.backtrace}" else -- cgit v1.2.3-24-ge0c7