From: gibu.john.george@... Date: 2017-01-05T08:45:59+00:00 Subject: [ruby-core:78979] [Ruby trunk Bug#13106] Timeout does not wait for more than 120 seconds Issue #13106 has been updated by Gibu John George. sorry. missed the last line of my output ~~~ text 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 Application http://127.0.0.1:8080/myApp/isUp not up after 250 seconds ~~~ ---------------------------------------- Bug #13106: Timeout does not wait for more than 120 seconds https://bugs.ruby-lang.org/issues/13106#change-62395 * Author: Gibu John George * Status: Open * Priority: Normal * Assignee: * Target version: * ruby -v: ruby 2.3.0p0 (2015-12-25 revision 53290) [x86_64-linux] * Backport: 2.2: UNKNOWN, 2.3: UNKNOWN, 2.4: UNKNOWN ---------------------------------------- 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. ~~~ ruby 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 ~~~ ~~~ text 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? -- https://bugs.ruby-lang.org/ Unsubscribe: