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 <m...@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 <m...@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:
> o...@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:ol...@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:ol...@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-unsubscr...@hc.apache.org 
> > > 
> > > For additional commands, e-mail: mailto: 
> > > mailto:mailto:httpclient-users-h...@hc.apache.org 
> > 
> > 
> > 
> > 
> > 
> > -----------------------------------------------------------------
> > -- 
> > -- 
> > 
> > To unsubscribe, e-mail: mailto: 
> > mailto:httpclient-users-unsubscr...@hc.apache.org 
> > 
> > For additional commands, e-mail: mailto: 
> > mailto:httpclient-users-h...@hc.apache.org 
> 
> 
> 
> 
> 
> -------------------------------------------------------------------
> -- 
> 
> To unsubscribe, e-mail: mailto:
> httpclient-users-unsubscr...@hc.apache.org 
> 
> For additional commands, e-mail: mailto:
> httpclient-users-h...@hc.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: httpclient-users-unsubscr...@hc.apache.org
For additional commands, e-mail: httpclient-users-h...@hc.apache.org

Reply via email to