[prev in list] [next in list] [prev in thread] [next in thread]
List: httpclient-users
Subject: Re: No response received by httpclient.execute(httppost) on long request
From: Oleg Kalnichevski <olegk () apache ! org>
Date: 2019-03-29 22:13:22
Message-ID: 770057733e84c332a28e928ae8267ff9a85183cb.camel () apache ! org
[Download RAW message or body]
On Fri, 2019-03-29 at 12:06 -0700, Mark Cafaro wrote:
> It then eventually times out when my socket timeout is reached:
>
>
This clearly suggests that the server fails to send a response back to
the client, so this looks like a server side issue to me.
Oleg
>
> 2019-03-29 19:03:42,884 DEBUG [org.apache.http.wire] http-outgoing-0
> << "[read] I/O error: Read timed out"
>
> 2019-03-29 19:03:42,884 DEBUG
> [org.apache.http.impl.conn.DefaultManagedHttpClientConnection] http-
> outgoing-0: Close connection
>
> 2019-03-29 19:03:42,885 DEBUG
> [org.apache.http.impl.conn.DefaultManagedHttpClientConnection] http-
> outgoing-0: Shutdown connection
>
> 2019-03-29 19:03:42,885 DEBUG
> [org.apache.http.impl.execchain.MainClientExec] Connection discarded
>
> 2019-03-29 19:03:42,886 DEBUG
> [org.apache.http.impl.conn.PoolingHttpClientConnectionManager]
> Connection released: [id: 0][route: {s}->
> https://ci.company.com:443][total kept alive: 0; route allocated: 0
> of 2; total allocated: 0 of 20]
>
> 2019-03-29 19:03:42,886 DEBUG
> [org.apache.http.impl.conn.PoolingHttpClientConnectionManager]
> Connection manager is shutting down
>
> 2019-03-29 19:03:42,886 DEBUG
> [org.apache.http.impl.conn.PoolingHttpClientConnectionManager]
> Connection manager shut down
>
>
>
>
>
> ---- On Fri, 29 Mar 2019 11:56:49 -0700 Mark Cafaro <mark@acafaro.com
> > wrote ----
>
>
>
> The wire log didn't reveal much. It doesn't output anything after
> getting stuck on httpclient.execute(). See below (I replaced
> sensitive names, IPs, and JSON with generic info):
>
>
>
> 2019-03-29 18:31:41,815 DEBUG [com.company.ci.Client] Executing
> post...
>
> 2019-03-29 18:31:42,254 DEBUG
> [org.apache.http.client.protocol.RequestAddCookies] CookieSpec
> selected: default
>
> 2019-03-29 18:31:42,263 DEBUG
> [org.apache.http.client.protocol.RequestAuthCache] Auth cache not set
> in the context
>
> 2019-03-29 18:31:42,265 DEBUG
> [org.apache.http.impl.conn.PoolingHttpClientConnectionManager]
> Connection request: [route: {s}->https://ci.company.com:443][total
> kept alive: 0; route allocated: 0 of 2; total allocated: 0 of 20]
>
> 2019-03-29 18:31:42,276 DEBUG
> [org.apache.http.impl.conn.PoolingHttpClientConnectionManager]
> Connection leased: [id: 0][route: {s}->
> https://ci.company.com:443][total kept alive: 0; route allocated: 1
> of 2; total allocated: 1 of 20]
>
> 2019-03-29 18:31:42,277 DEBUG
> [org.apache.http.impl.execchain.MainClientExec] Opening connection
> {s}->https://ci.company.com:443
>
> 2019-03-29 18:31:42,301 DEBUG
> [org.apache.http.impl.conn.DefaultHttpClientConnectionOperator]
> Connecting to ci.company.com/1.2.3.4:443
>
> 2019-03-29 18:31:42,301 DEBUG
> [org.apache.http.conn.ssl.SSLConnectionSocketFactory] Connecting
> socket to ci.company.com/1.2.3.4:443 with timeout 300000
>
> 2019-03-29 18:31:42,480 DEBUG
> [org.apache.http.conn.ssl.SSLConnectionSocketFactory] Enabled
> protocols: [TLSv1, TLSv1.1, TLSv1.2]
>
> 2019-03-29 18:31:42,484 DEBUG
> [org.apache.http.conn.ssl.SSLConnectionSocketFactory] Enabled cipher
> suites:[TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384,
> TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384,
> TLS_RSA_WITH_AES_256_CBC_SHA256,
> TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384,
> TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384,
> TLS_DHE_RSA_WITH_AES_256_CBC_SHA256,
> TLS_DHE_DSS_WITH_AES_256_CBC_SHA256,
> TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA,
> TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA, TLS_RSA_WITH_AES_256_CBC_SHA,
> TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA,
> TLS_ECDH_RSA_WITH_AES_256_CBC_SHA, TLS_DHE_RSA_WITH_AES_256_CBC_SHA,
> TLS_DHE_DSS_WITH_AES_256_CBC_SHA,
> TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256,
> TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,
> TLS_RSA_WITH_AES_128_CBC_SHA256,
> TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256,
> TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256,
> TLS_DHE_RSA_WITH_AES_128_CBC_SHA256,
> TLS_DHE_DSS_WITH_AES_128_CBC_SHA256,
> TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA,
> TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA, TLS_RSA_WITH_AES_128_CBC_SHA,
> TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA,
> TLS_ECDH_RSA_WITH_AES_128_CBC_SHA, TLS_DHE_RSA_WITH_AES_128_CBC_SHA,
> TLS_DHE_DSS_WITH_AES_128_CBC_SHA,
> TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,
> TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,
> TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,
> TLS_RSA_WITH_AES_256_GCM_SHA384,
> TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384,
> TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384,
> TLS_DHE_RSA_WITH_AES_256_GCM_SHA384,
> TLS_DHE_DSS_WITH_AES_256_GCM_SHA384,
> TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,
> TLS_RSA_WITH_AES_128_GCM_SHA256,
> TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256,
> TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256,
> TLS_DHE_RSA_WITH_AES_128_GCM_SHA256,
> TLS_DHE_DSS_WITH_AES_128_GCM_SHA256,
> TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA,
> TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA, SSL_RSA_WITH_3DES_EDE_CBC_SHA,
> TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA,
> TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA,
> SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA, SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA,
> TLS_EMPTY_RENEGOTIATION_INFO_SCSV]
>
> 2019-03-29 18:31:42,486 DEBUG
> [org.apache.http.conn.ssl.SSLConnectionSocketFactory] Starting
> handshake
>
> 2019-03-29 18:31:42,715 DEBUG
> [org.apache.http.conn.ssl.SSLConnectionSocketFactory] Secure session
> established
>
> 2019-03-29 18:31:42,716 DEBUG
> [org.apache.http.conn.ssl.SSLConnectionSocketFactory] negotiated
> protocol: TLSv1.2
>
> 2019-03-29 18:31:42,716 DEBUG
> [org.apache.http.conn.ssl.SSLConnectionSocketFactory] negotiated
> cipher suite: TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
>
> 2019-03-29 18:31:42,717 DEBUG
> [org.apache.http.conn.ssl.SSLConnectionSocketFactory] peer
> principal: CN=*.company.com, OU=EPS DevOps, O="Company, Inc.",
> L=Town, ST=ST, C=US
>
> 2019-03-29 18:31:42,717 DEBUG
> [org.apache.http.conn.ssl.SSLConnectionSocketFactory] peer
> alternative names: [*.company.com, company.com]
>
> 2019-03-29 18:31:42,718 DEBUG
> [org.apache.http.conn.ssl.SSLConnectionSocketFactory] issuer
> principal: CN=DigiCert SHA2 High Assurance Server CA, OU=
> http://www.digicert.com, O=DigiCert Inc, C=US
>
> 2019-03-29 18:31:42,721 DEBUG
> [org.apache.http.impl.conn.DefaultHttpClientConnectionOperator]
> Connection established 10.30.3.201:42816<->1.2.3.4:443
>
> 2019-03-29 18:31:42,721 DEBUG
> [org.apache.http.impl.conn.DefaultManagedHttpClientConnection] http-
> outgoing-0: set socket timeout to 1920000
>
> 2019-03-29 18:31:42,722 DEBUG
> [org.apache.http.impl.execchain.MainClientExec] Executing request
> POST /services/json HTTP/1.1
>
> 2019-03-29 18:31:42,722 DEBUG
> [org.apache.http.impl.execchain.MainClientExec] Target auth state:
> UNCHALLENGED
>
> 2019-03-29 18:31:42,722 DEBUG
> [org.apache.http.impl.execchain.MainClientExec] Proxy auth state:
> UNCHALLENGED
>
> 2019-03-29 18:31:42,723 DEBUG [org.apache.http.headers] http-
> outgoing-0 >> POST /services/json HTTP/1.1
>
> 2019-03-29 18:31:42,729 DEBUG [org.apache.http.headers] http-
> outgoing-0 >> Content-Length: 87371
>
> 2019-03-29 18:31:42,730 DEBUG [org.apache.http.headers] http-
> outgoing-0 >> Content-Type: text/plain; charset=UTF-8
>
> 2019-03-29 18:31:42,730 DEBUG [org.apache.http.headers] http-
> outgoing-0 >> Host: ci.company.com
>
> 2019-03-29 18:31:42,730 DEBUG [org.apache.http.headers] http-
> outgoing-0 >> Connection: Keep-Alive
>
> 2019-03-29 18:31:42,730 DEBUG [org.apache.http.headers] http-
> outgoing-0 >> User-Agent: Apache-HttpClient/4.5.6 (Java/1.8.0_151)
>
> 2019-03-29 18:31:42,730 DEBUG [org.apache.http.headers] http-
> outgoing-0 >> Accept-Encoding: gzip,deflate
>
> 2019-03-29 18:31:42,730 DEBUG [org.apache.http.wire] http-outgoing-0
> >> "POST /services/json HTTP/1.1[\r][\n]"
>
> 2019-03-29 18:31:42,731 DEBUG [org.apache.http.wire] http-outgoing-0
> >> "Content-Length: 87371[\r][\n]"
>
> 2019-03-29 18:31:42,731 DEBUG [org.apache.http.wire] http-outgoing-0
> >> "Content-Type: text/plain; charset=UTF-8[\r][\n]"
>
> 2019-03-29 18:31:42,731 DEBUG [org.apache.http.wire] http-outgoing-0
> >> "Host: ci.company.com[\r][\n]"
>
> 2019-03-29 18:31:42,731 DEBUG [org.apache.http.wire] http-outgoing-0
> >> "Connection: Keep-Alive[\r][\n]"
>
> 2019-03-29 18:31:42,731 DEBUG [org.apache.http.wire] http-outgoing-0
> >> "User-Agent: Apache-HttpClient/4.5.6 (Java/1.8.0_151)[\r][\n]"
>
> 2019-03-29 18:31:42,731 DEBUG [org.apache.http.wire] http-outgoing-0
> >> "Accept-Encoding: gzip,deflate[\r][\n]"
>
> 2019-03-29 18:31:42,731 DEBUG [org.apache.http.wire] http-outgoing-0
> >> "[\r][\n]"
>
> 2019-03-29 18:31:42,740 DEBUG [org.apache.http.wire] http-outgoing-0
> >> "{JSON_HERE}"
>
>
>
>
>
> ---- On Fri, 29 Mar 2019 08:57:41 -0700 Mark Cafaro <mark@acafaro.com
> > wrote ----
>
>
>
>
>
>
>
>
>
> No exception. It just stays stuck on the httpclient.execute() line.
> I'll gather the wire logs.
>
>
>
>
>
> ---- On Fri, 29 Mar 2019 08:44:02 -0700 Oleg Kalnichevski <mailto:
> oleg@ok2consulting.com> wrote ----
>
>
>
>
>
>
>
>
>
> On Fri, 2019-03-29 at 08:37 -0700, Mark Cafaro wrote:
>
> > I mean to say when I'm using the Apache client, I see the server
> > sends back a proper response but the client never receives it (it
> > just stays stuck on httpclient.execute()). So, on the server side,
> > irrespective of the execution path it is taking, I ultimately
> > know
> > it is sending back a response. Why the client is not reacting to
> > that
> > response is the head scratcher.
> >
>
>
>
> What means "not reacting to that response"? This makes no sense.
> Does
>
> it throw an exception of any sort?
>
>
>
> Oleg
>
>
>
> >
> >
> > -Mark
> >
> >
> >
> >
> > ---- On Fri, 29 Mar 2019 08:12:34 -0700 Oleg Kalnichevski <
> > mailto:olegk@apache.org> wrote ----
> >
> >
> >
> > On Fri, 2019-03-29 at 08:09 -0700, Mark Cafaro wrote:
> >
> > > What makes me think it's a client side issue is that I can take
> > > the
> > > same request and run it with cURL and properly receive a
> > > response.
> > > I
> > > can also view the logs on the server side and see that a
> > > response
> > > was
> > > sent back.
> > >
> > >
> >
> >
> >
> > So what? That means absolutely nothing. Clients can behave
> > differently
> >
> > enough to trigger a different execution path on the server side.
> >
> >
> >
> > Oleg
> >
> >
> >
> > >
> > > I'll try turning on wire logging and see if that gives me any
> > > clues.
> > > Thanks.
> > >
> > >
> > >
> > >
> > > ---- On Fri, 29 Mar 2019 06:38:45 -0700 Oleg Kalnichevski <
> > > mailto:mailto:olegk@apache.org> wrote ----
> > >
> > >
> > >
> > > On Fri, 2019-03-29 at 06:34 -0700, Mark Cafaro wrote:
> > >
> > > > The call to httpclient.execute() is just stuck until the
> > > > eventual
> > > > socket timeout is reached.
> > > >
> > > >
> > >
> > >
> > >
> > > What makes you think this is a client side issue? Have you tried
> > >
> > > running your application with HttpClient wire logging turned out
> > > and
> > >
> > > analyzing data packets sent on the wire?
> > >
> > >
> > >
> > > Oleg
> > >
> > >
> > >
> > >
> > >
> > > >
> > > > -Mark
> > > >
> > > >
> > > >
> > > > P.S. Sorry if this created a new thread. I did not subscribe
> > > > in
> > > > time
> > > > to get the first reply.
> > > >
> > > >
> > > > > What exactly do you mean by "never receives a response"?
> > > > > What
> > > > > happens
> > > > > instead?
> > > > >
> > > > > Oleg
> > > > >
> > > > > > Hi,
> > > > > >
> > > > > > I am running long HTTP post requests on Travis CI (Ubuntu
> > > > > > 14.04)
> > > > > > using the Apache HTTP Client. Strangely if a request
> > > > > > exceeds
> > > > > > about 8
> > > > > > minutes, the client never receives a response. I can see
> > > > > > on
> > > > > > the
> > > > > > server side, however, that a response was sent back. I
> > > > > > have
> > > > > > the
> > > > > > socket timeout set way beyond 8 minutes.
> > > > > >
> > > > > > If I perform the exact same request, on the exact same
> > > > > > machine,
> > > > > > using
> > > > > > cURL however, it works as expected (i.e. cURL receives a
> > > > > > response).
> > > > > > Also, if I perform the exact same request using the Apache
> > > > > > HTTP
> > > > > > Client on my local machine, it works as expected.
> > > > > >
> > > > > > I've tried playing around with sysctl
> > > > > > net.ipv4.tcp_keepalive_time, tcp_keepalive_intvl,
> > > > > > and tcp_keepalive_probes but they haven't solved the
> > > > > > issue.
> > > > > >
> > > > > > Are there any settings in the Apache HTTP Client that may
> > > > > > be
> > > > > > relevant
> > > > > > to this issue?
> > > > > >
> > > > > > Thanks,
> > > > > >
> > > > > > Mark
> > >
> > >
> > >
> > >
> > >
> > > ---------------------------------------------------------------
> > > --
> > > --
> > > --
> > >
> > > To unsubscribe, e-mail: mailto:
> > > mailto:mailto:httpclient-users-unsubscribe@hc.apache.org
> > >
> > > For additional commands, e-mail: mailto:
> > > mailto:mailto:httpclient-users-help@hc.apache.org
> >
> >
> >
> >
> >
> > -----------------------------------------------------------------
> > --
> > --
> >
> > To unsubscribe, e-mail: mailto:
> > mailto:httpclient-users-unsubscribe@hc.apache.org
> >
> > For additional commands, e-mail: mailto:
> > mailto:httpclient-users-help@hc.apache.org
>
>
>
>
>
> -------------------------------------------------------------------
> --
>
> To unsubscribe, e-mail: mailto:
> httpclient-users-unsubscribe@hc.apache.org
>
> For additional commands, e-mail: mailto:
> httpclient-users-help@hc.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: httpclient-users-unsubscribe@hc.apache.org
For additional commands, e-mail: httpclient-users-help@hc.apache.org
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic