Actions
Bug #13106
closedTimeout does not wait for more than 120 seconds
Status:
Rejected
Assignee:
-
Target version:
-
ruby -v:
ruby 2.3.0p0 (2015-12-25 revision 53290) [x86_64-linux]
Description
Hi All,
I have encountered an issue where Timeout does not wait for more than 120 seconds when asked to wait for a greater period.
This is my ruby code, that supposed to wait for 250 seconds to check if an application deployed on tomcat is up or not. As seen in the logs, it exits are 120 seconds.
require 'timeout'
require 'socket'
require 'net/http'
ip = '127.0.0.1'
port = '8080'
url = 'http://127.0.0.1:8080/myApp/isUp'
def wait_till_port_open(ip, port)
TCPSocket.new(ip, port).close
puts "#{port} is open"
return true
rescue Errno::ECONNREFUSED, Errno::EHOSTUNREACH, Errno::EADDRNOTAVAIL
return false
end
def wait_till_port_close(ip, port)
TCPSocket.new(ip, port).close
puts "#{port} is open"
return false
rescue Errno::ECONNREFUSED, Errno::EHOSTUNREACH, Errno::EADDRNOTAVAIL
return true
end
def wait_till_app_up(url)
resp_code = Net::HTTP.get_response(URI.parse(url.to_s)).code
if resp_code.eql?('200')
puts 'Application is up'
return true
end
rescue Errno::ECONNREFUSED, Errno::EHOSTUNREACH
return false
end
begin
Timeout::timeout(250) do
until wait_till_port_open(ip, port)
end
end
rescue Timeout::Error
abort("Port #{port} not up after 250 seconds")
end
puts Time.now
begin
Timeout::timeout(250) do
until wait_till_app_up(url)
end
end
rescue Timeout::Error
puts Time.now
abort("Application #{url} not up after 250 seconds")
end
8080 is open
2017-01-05 13:58:49 +0530
sec : 250 -> added a puts at https://github.com/ruby/ruby/blob/0d74082eced0254a30b8f09a4d65fff357fdc6cd/lib/timeout.rb#L84 to ensure that value is correctly being passed.
2017-01-05 14:00:50 +0530
Why is this happening? Any fixes for this?
Actions
Like0
Like0Like0Like0