Hi! I make requests using ::Async::HTTP::Internet.new. Everything works well until there is an error before reading the body of the response. So closing ::Async::HTTP::Internet instance without calling response.read leads to Waiting for Async::HTTP::Protocol::HTTP1 pool to drain: #<Async::Pool::Controller(1/∞) 1/1/1> error which blocks the Fiber process (infinity loop I guess).
Question: Is there any way how to force close::Async::HTTP::Internet instance without calling .read function?
Code example:
def make_get_request(url)
client_instance = ::Async::HTTP::Internet.new
response = client_instance.get(url)
raise "Any Error" # Any logic that can raise an exception
response.read
ensure
client_instance.close # Warning and Fiber process hanging => Waiting for Async::HTTP::Protocol::HTTP1 pool to drain: #<Async::Pool::Controller(1/∞) 1/1/1>
end
Research:
The error happens here in the Async::Client#close function:
def close
while @pool.busy?
Console.logger.warn(self) { "Waiting for #{@protocol} pool to drain: #{@pool}" }
@pool.wait
end
@pool.close
end
Hi! I make requests using
::Async::HTTP::Internet.new
. Everything works well until there is an error before reading the body of the response. So closing::Async::HTTP::Internet
instance without callingresponse.read
leads toWaiting for Async::HTTP::Protocol::HTTP1 pool to drain: #<Async::Pool::Controller(1/∞) 1/1/1>
error which blocks the Fiber process (infinity loop I guess).Question: Is there any way how to force close
::Async::HTTP::Internet
instance without calling.read
function?Code example:
Research: The error happens here in the Async::Client#close function:
I would appreciate any help! Thank you!