amphp / http-client

An advanced async HTTP client library for PHP, enabling efficient, non-blocking, and concurrent requests and responses.

Home Page:https://amphp.org/http-client

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

[v5.0.0-beta.14] Invalid request phase transition from Connect to RequestHeaders

PNixx opened this issue · comments

Trace:

#0 vendor/amphp/http-client/src/Connection/Http1Connection.php(558): Amp\Http\Client\Internal\EventInvoker->requestHeaderStart()
#1 vendor/amphp/http-client/src/Connection/Http1Connection.php(227): Amp\Http\Client\Connection\Http1Connection->writeRequest()
#2 vendor/amphp/http-client/src/Connection/HttpStream.php(89): Amp\Http\Client\Connection\Http1Connection->request()
#3 vendor/amphp/http-client/src/functions.php(19): Amp\Http\Client\Connection\HttpStream->Amp\Http\Client\Connection\{closure}()
#4 vendor/amphp/http-client/src/Connection/HttpStream.php(89): Amp\Http\Client\processRequest()
#5 vendor/amphp/http-client/src/Connection/ConnectionLimitingPool.php(126): Amp\Http\Client\Connection\HttpStream->request()
#6 vendor/amphp/http-client/src/Connection/HttpStream.php(89): Amp\Http\Client\Connection\ConnectionLimitingPool->Amp\Http\Client\Connection\{closure}()
#7 vendor/amphp/http-client/src/functions.php(19): Amp\Http\Client\Connection\HttpStream->Amp\Http\Client\Connection\{closure}()
#8 vendor/amphp/http-client/src/Connection/HttpStream.php(89): Amp\Http\Client\processRequest()
#9 vendor/amphp/http-client/src/Interceptor/DecompressResponse.php(43): Amp\Http\Client\Connection\HttpStream->request()
#10 vendor/amphp/http-client/src/Connection/InterceptedStream.php(56): Amp\Http\Client\Interceptor\DecompressResponse->requestViaNetwork()
#11 vendor/amphp/http-client/src/functions.php(19): Amp\Http\Client\Connection\InterceptedStream->Amp\Http\Client\Connection\{closure}()
#12 vendor/amphp/http-client/src/Connection/InterceptedStream.php(61): Amp\Http\Client\processRequest()
#13 vendor/amphp/http-client/src/Interceptor/ModifyRequest.php(40): Amp\Http\Client\Connection\InterceptedStream->request()
#14 vendor/amphp/http-client/src/Connection/InterceptedStream.php(56): Amp\Http\Client\Interceptor\ModifyRequest->requestViaNetwork()
#15 vendor/amphp/http-client/src/functions.php(19): Amp\Http\Client\Connection\InterceptedStream->Amp\Http\Client\Connection\{closure}()
#16 vendor/amphp/http-client/src/Connection/InterceptedStream.php(61): Amp\Http\Client\processRequest()
#17 vendor/amphp/http-client/src/PooledHttpClient.php(36): Amp\Http\Client\Connection\InterceptedStream->request()
#18 vendor/amphp/http-client/src/functions.php(19): Amp\Http\Client\PooledHttpClient->Amp\Http\Client\{closure}()
#19 vendor/amphp/http-client/src/PooledHttpClient.php(37): Amp\Http\Client\processRequest()
#20 vendor/amphp/http-client/src/Interceptor/FollowRedirects.php(131): Amp\Http\Client\PooledHttpClient->request()
#21 vendor/amphp/http-client/src/InterceptedHttpClient.php(44): Amp\Http\Client\Interceptor\FollowRedirects->request()
#22 vendor/amphp/http-client/src/functions.php(19): Amp\Http\Client\InterceptedHttpClient->Amp\Http\Client\{closure}()
#23 vendor/amphp/http-client/src/InterceptedHttpClient.php(49): Amp\Http\Client\processRequest()
#24 vendor/amphp/http-client/src/Interceptor/ModifyRequest.php(52): Amp\Http\Client\InterceptedHttpClient->request()
#25 vendor/amphp/http-client/src/InterceptedHttpClient.php(44): Amp\Http\Client\Interceptor\ModifyRequest->request()
#26 vendor/amphp/http-client/src/functions.php(19): Amp\Http\Client\InterceptedHttpClient->Amp\Http\Client\{closure}()
#27 vendor/amphp/http-client/src/InterceptedHttpClient.php(49): Amp\Http\Client\processRequest()
#28 vendor/amphp/http-client/src/HttpClient.php(35): Amp\Http\Client\InterceptedHttpClient->request()
#29 vendor/amphp/http-client/src/functions.php(29): Amp\Http\Client\HttpClient->Amp\Http\Client\{closure}()
#30 vendor/amphp/http-client/src/HttpClient.php(36): Amp\Http\Client\processRequest()
#31 vendor/webgriffe/amp-elasticsearch/src/Client.php(604): Amp\Http\Client\HttpClient->request()

@PNixx Thanks, that's exactly the kind of issues I'm looking for with the new beta. How can I reproduce this?

I can't advise you. After updating on the production server, such an error began to occur in various HTTP requests, and only with the HTTP 1 protocol.

I use one client initialization with connection pool for all requests. Perhaps the problem is somewhere in this place.

Thanks, the hint with only HTTP/1.x has been really helpful. I've managed to write a failing test in eba31d5. I'm not sure yet how to solve this.