Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Expose ConnectionPool#reload #140

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
14 changes: 13 additions & 1 deletion lib/net/http/persistent.rb
Expand Up @@ -947,7 +947,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!
#
Expand All @@ -958,6 +959,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+

Expand Down
2 changes: 1 addition & 1 deletion net-http-persistent.gemspec
Expand Up @@ -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<connection_pool>.freeze, ["~> 2.2"])
s.add_runtime_dependency(%q<connection_pool>.freeze, ["~> 2.2", ">= 2.2.4"])
end

11 changes: 11 additions & 0 deletions test/test_net_http_persistent.rb
Expand Up @@ -1244,6 +1244,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

Expand Down
2 changes: 1 addition & 1 deletion test/test_net_http_persistent_timed_stack_multi.rb
Expand Up @@ -57,7 +57,7 @@ def test_pop_empty
@stack.pop timeout: 0
end

assert_equal 'Waited 0 sec', e.message
assert_includes e.message, 'Waited 0 sec'
end

def test_pop_full
Expand Down