diff --git a/lib/net/http/persistent.rb b/lib/net/http/persistent.rb index d6782da..10b6a72 100644 --- a/lib/net/http/persistent.rb +++ b/lib/net/http/persistent.rb @@ -996,7 +996,8 @@ def request_setup req_or_uri # :nodoc: end ## - # Shuts down all connections + # Shuts down all connections. Attempting to checkout a connection after + # shutdown will raise an error. # # *NOTE*: Calling shutdown for can be dangerous! # @@ -1007,6 +1008,17 @@ def shutdown @pool.shutdown { |http| http.finish } end + ## + # Discard all existing connections. Subsequent checkouts will create + # new connections as needed. + # + # If any thread is still using a connection it may cause an error! Call + # #reload when you are completely done making requests! + + def reload + @pool.reload { |http| http.finish } + end + ## # Enables SSL on +connection+ diff --git a/net-http-persistent.gemspec b/net-http-persistent.gemspec index a32fedf..5eb683f 100644 --- a/net-http-persistent.gemspec +++ b/net-http-persistent.gemspec @@ -17,6 +17,6 @@ Gem::Specification.new do |s| s.required_ruby_version = ">= 2.4".freeze s.summary = "Manages persistent connections using Net::HTTP including a thread pool for connecting to multiple hosts".freeze - s.add_runtime_dependency(%q.freeze, ["~> 2.2"]) + s.add_runtime_dependency(%q.freeze, ["~> 2.2", ">= 2.2.4"]) end diff --git a/test/test_net_http_persistent.rb b/test/test_net_http_persistent.rb index 1cd87f5..8ba4570 100644 --- a/test/test_net_http_persistent.rb +++ b/test/test_net_http_persistent.rb @@ -1255,6 +1255,17 @@ def test_shutdown refute c2.http.finished?, 'present generation connection must not be finished' end + def test_reload + c = connection + + @http.reload + + c2 = connection + + assert c.http.finished?, 'last-generation connection must be finished' + refute c2.http.finished?, 'present generation connection must not be finished' + end + def test_ssl skip 'OpenSSL is missing' unless HAVE_OPENSSL diff --git a/test/test_net_http_persistent_timed_stack_multi.rb b/test/test_net_http_persistent_timed_stack_multi.rb index 4f2c205..38e191c 100644 --- a/test/test_net_http_persistent_timed_stack_multi.rb +++ b/test/test_net_http_persistent_timed_stack_multi.rb @@ -62,7 +62,7 @@ def test_pop_empty @stack.pop timeout: 0 end - assert_match 'Waited 0 sec', e.message + assert_includes e.message, 'Waited 0 sec' end def test_pop_full