Skip to content

Commit 7f2672d

Browse files
authored
fix(http_requester): use host url as connections cache key (#496)
1 parent 3eb1002 commit 7f2672d

File tree

2 files changed

+28
-1
lines changed

2 files changed

+28
-1
lines changed

lib/algolia/http/http_requester.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ def send_request(host, method, path, body, headers, timeout, connect_timeout)
6565
# @return [Faraday::Connection]
6666
#
6767
def connection(host)
68-
@connections[host.accept] ||= Faraday.new(build_url(host)) do |f|
68+
@connections[host.url] ||= Faraday.new(build_url(host)) do |f|
6969
f.adapter @adapter.to_sym
7070
end
7171
end
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
require 'algolia'
2+
require 'test_helper'
3+
4+
class HttpRequesterTest
5+
describe 'connection' do
6+
def test_caches_http_client_connections
7+
requester = Algolia::Http::HttpRequester.new(Defaults::ADAPTER, nil)
8+
host1 = Algolia::Transport::StatefulHost.new('host1')
9+
10+
# rubocop:disable Lint/UselessComparison
11+
assert requester.connection(host1) == requester.connection(host1)
12+
# rubocop:enable Lint/UselessComparison
13+
assert_equal requester.connection(host1).url_prefix.host, 'host1'
14+
end
15+
16+
def test_caches_hosts_independent_of_each_other
17+
requester = Algolia::Http::HttpRequester.new(Defaults::ADAPTER, nil)
18+
host1 = Algolia::Transport::StatefulHost.new('host1')
19+
host2 = Algolia::Transport::StatefulHost.new('host2')
20+
21+
assert requester.connection(host1) != requester.connection(host2)
22+
23+
assert_equal requester.connection(host1).url_prefix.host, 'host1'
24+
assert_equal requester.connection(host2).url_prefix.host, 'host2'
25+
end
26+
end
27+
end

0 commit comments

Comments
 (0)