hc-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Gary Gregory <garydgreg...@gmail.com>
Subject Re: Core 4 and problem with socket timeout to origin server
Date Wed, 16 Aug 2017 22:37:09 GMT
Oleg,

I created a ticket and a branch for
https://issues.apache.org/jira/browse/HTTPCORE-482

Can you please review/update and merge if OK?

Thank you,
Gary

On Wed, Aug 16, 2017 at 3:00 PM, Gary Gregory <garydgregory@gmail.com>
wrote:

> Hi All (Oleg, really)
>
> I am wondering how to fix/deal with the a timeout occurring in an async
> proxy when an origin server takes too long to reply.
>
> You can reproduce this issue with our asyn example NHttpReverseProxy:
>
> Start it with: http://postman-echo.com 8888
>
> Then run:
>
> curl --verbose --max-time 1000 http://localhost:8888/delay/3
>
> and you will get an EMPTY response from the server, no HTTP status code
> where I would expect a 504 or 500.
>
> The proxy prints out:
>
> Reverse proxy to http://postman-echo.com:80
> [client->proxy] connection open 127.0.0.1:8888<->127.0.0.1:61128
> [client->proxy] 00000001 GET /delay/3 HTTP/1.1
> [client->proxy] 00000001 request completed
> [proxy->origin] connection open 192.168.0.112:61130<->52.44.234.173:80
> [proxy->origin] 00000001 GET /delay/3 HTTP/1.1
> [proxy->origin] 00000001 request completed
> [client->proxy] connection closed 127.0.0.1:8888<->127.0.0.1:61128
> [client<-proxy] 00000001 java.net.SocketTimeoutException
> [proxy->origin] connection released 192.168.0.112:61130<->52.44.234.173:80
> [proxy->origin] [total kept alive: 0; total allocated: 0 of 100]
> [proxy->origin] connection closed 192.168.0.112:61130<->52.44.234.173:80
>
> Curl prints:
>
> * STATE: INIT => CONNECT handle 0x600057930; line 1410 (connection #-5000)
> * Added connection 0. The cache now contains 1 members
> * STATE: CONNECT => WAITRESOLVE handle 0x600057930; line 1446 (connection
> #0)
> *   Trying ::1...
> * TCP_NODELAY set
> * STATE: WAITRESOLVE => WAITCONNECT handle 0x600057930; line 1527
> (connection #0)
> *   Trying 127.0.0.1...
> * TCP_NODELAY set
> * Connected to localhost (127.0.0.1) port 8888 (#0)
> * STATE: WAITCONNECT => SENDPROTOCONNECT handle 0x600057930; line 1579
> (connection #0)
> * Marked for [keep alive]: HTTP default
> * STATE: SENDPROTOCONNECT => DO handle 0x600057930; line 1597 (connection
> #0)
> > GET /delay/3 HTTP/1.1
> > Host: localhost:8888
> > User-Agent: curl/7.54.1
> > Accept: */*
> >
> * STATE: DO => DO_DONE handle 0x600057930; line 1676 (connection #0)
> * STATE: DO_DONE => WAITPERFORM handle 0x600057930; line 1801 (connection
> #0)
> * STATE: WAITPERFORM => PERFORM handle 0x600057930; line 1811 (connection
> #0)
> * STATE: PERFORM => DONE handle 0x600057930; line 1980 (connection #0)
> * multi_done
> * Empty reply from server
> * Connection #0 to host localhost left intact
> * Expire cleared
> *curl: (52) Empty reply from server*
>
> A bug in the example proxy? In HttpCore? Both? Or something missing in the
> implementation of the example async proxy?
>
> Thoughts?
>
> Thank you,
> Gary
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message