37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
|
# File 'lib/bunny/reader_loop.rb', line 37
def run_loop
loop do
begin
break if @mutex.synchronize { @stopping || @stopped || @network_is_down }
run_once
rescue AMQ::Protocol::EmptyResponseError, IOError, SystemCallError, Timeout::Error,
OpenSSL::OpenSSLError => e
break if terminate? || @session.closing? || @session.closed?
@network_is_down = true
if @session.automatically_recover?
log_exception(e, level: :warn)
@session.handle_network_failure(e)
else
log_exception(e)
@session_error_handler.raise(Bunny::NetworkFailure.new("detected a network failure: #{e.message}", e))
end
rescue ShutdownSignal => _
@mutex.synchronize { @stopping = true }
break
rescue Exception => e
break if terminate?
if !(@session.closing? || @session.closed?)
log_exception(e)
@network_is_down = true
@session_error_handler.raise(Bunny::NetworkFailure.new("caught an unexpected exception in the network loop: #{e.message}", e))
end
rescue Errno::EBADF => _ebadf
break if terminate?
@mutex.synchronize { @stopping = true }
end
end
@mutex.synchronize { @stopped = true }
end
|