Open jozuas opened 4 months ago
~seems like a Finch bug, could you move this issue to Finch repo?~ nevermind
Can you share which URL you hit? Is it over http or https? ipv4, ipv6? Any extra context would really help.
Looking at my logs further I've discovered another unexpected unwrapped return from Min.HTTP1.connect/4
, a nested Mint.TransportError
, which seems like a related bug:
** (CaseClauseError) no case clause matching: %Mint.TransportError{reason: %Mint.TransportError{reason: :timeout}}
(finch 0.18.0) lib/finch/http1/conn.ex:52: Finch.HTTP1.Conn.connect/2
(finch 0.18.0) lib/finch/http1/pool.ex:58: anonymous fn/10 in Finch.HTTP1.Pool.request/6
(nimble_pool 1.1.0) lib/nimble_pool.ex:462: NimblePool.checkout!/4
(finch 0.18.0) lib/finch/http1/pool.ex:52: Finch.HTTP1.Pool.request/6
(finch 0.18.0) lib/finch.ex:472: anonymous fn/4 in Finch.request/3
(telemetry 1.2.1) /opt/terrapin-app/deps/telemetry/src/telemetry.erl:321: :telemetry.span/3
(req 0.5.0) lib/req/steps.ex:953: Req.Steps.run_finch_request/3
(req 0.5.0) lib/req/steps.ex:785: Req.Steps.run_finch/4
Can you share which URL you hit? Is it over http or https? ipv4, ipv6? Any extra context would really help.
I am making Req
requests through a pool of proxies.
It looks roughly like:
@spec base_req() :: Req.Request.t()
def base_req() do
proxy = Tp.Proxy.rotate()
Req.new(
base_url: "https://...",
connect_options: [
proxy: {:http, proxy.ip, proxy.port, []},
proxy_headers: [{"Proxy-Authorization", "Basic: #{Base.encode64(proxy.userpass)}"}]
]
)
end
We have around 10 proxies. They are quite unreliable. We get intermittent HTTP 407, :timeout
, :ehostunreach
, etc. from the proxies.
The connection path is over IPv4, and looks like this:
machine in my control -> http -> proxy -> https -> url
%Mint.TransportError{reason: %Mint.TransportError{reason: :timeout}}
This is definitely an error yeah. I'll try to take a look.
I observed the following in my application logs:
lib/finch/http1/conn.ex:52:
Mint.HTTP1.connect/4 return type should be:
Not sure how to replicate given that this for me is a transient issue