From 0a660b2fc762ad4d4f37b059978032b230a054bb Mon Sep 17 00:00:00 2001 From: Sergey Yelin Date: Fri, 5 Jun 2026 19:54:32 +0300 Subject: [PATCH] Fix race in hackney_pool --- src/hackney_pool.erl | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/hackney_pool.erl b/src/hackney_pool.erl index c92ad487..3ea8e308 100644 --- a/src/hackney_pool.erl +++ b/src/hackney_pool.erl @@ -779,15 +779,20 @@ find_available(Key, Available) -> case is_process_alive(Pid) of true -> %% is_ready checks both state and socket health in one call - case hackney_conn:is_ready(Pid) of + try hackney_conn:is_ready(Pid) of {ok, connected} -> {ok, Pid, Available2}; {ok, closed} -> %% Connection closed, try reconnect - case hackney_conn:connect(Pid) of + try hackney_conn:connect(Pid) of ok -> {ok, Pid, Available2}; _ -> find_available(Key, Available2) + catch + _:_ -> find_available(Key, Available2) end; _ -> find_available(Key, Available2) + catch + _:_ -> + find_available(Key, Available2) end; false -> find_available(Key, Available2)