[ 
https://issues.apache.org/jira/browse/HTTPCLIENT-2118?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17206490#comment-17206490
 ] 

Carter Kozak commented on HTTPCLIENT-2118:
------------------------------------------

>  I think I should set it to 0 so that a connection is validation every time 
>before it is reused

Please make sure you're using 5.0.2, otherwise you may be impacted by 
HTTPCLIENT-2094 which disabled the checks entirely when 0 is configured.

I have an optimization (or hack, depending on perspective) in a project I work 
on which disables these checks when the server responds with a "Keep-Alive: 
timeout=<seconds>". In my case we trust the server not to close these 
connections prematurely, and have generally strong support for retries if they 
happen to fail (metrics will alert us if this occurs frequently). We require 
relatively low latency, so the 1ms sleep incurred by the check isn't something 
we could realistically allow before each request. I'm certainly wouldn't 
recommend that behavior by default for a general purpose http client, but could 
be interesting to provide an interface that allows greater control over when 
the check is executed. For example, always validating after a non-2xx response, 
but after some interval of inactivity when a 2xx is received, or based on 
whether or not the next request is repeatable (though that part might break 
some abstractions that are better left intact).

> Difference in behavior between 4.5.x and 5.0.x - CloseableHttpClient returns 
> 403 after NoHttpResponseException
> --------------------------------------------------------------------------------------------------------------
>
>                 Key: HTTPCLIENT-2118
>                 URL: https://issues.apache.org/jira/browse/HTTPCLIENT-2118
>             Project: HttpComponents HttpClient
>          Issue Type: Bug
>          Components: HttpClient (classic), HttpClient (Windows)
>    Affects Versions: 5.0.2
>         Environment: Microsoft Windows 10 version 2004 [10.0.19041.508]
> Oracle JDK 11.0.8
>            Reporter: Michael Lee
>            Priority: Major
>         Attachments: all_except_wire.log, all_except_wire.setMaxTotal5.log, 
> all_except_wire.setMaxTotal6.log, demo.zip, headers.log, test_output.txt, 
> wireshark.pcapng
>
>
> My application reuses an instance of CloseableHttpClient to retrieve the 
> content from a list of URLs. After upgrading HttpClient from 4.5.x to 5.0.2 
> (also 5.0 and 5.0.1), it always gets a NoHttpResponseException followed by a 
> response code of 403 for a particular URL in the list.  When using 4.5.x, it 
> always gets a 200 or 304 for that particular URL.
> The behavior may be different if the order of the URLs in the list is changed.
> To illustrate the problem, I have extracted code from my application into the 
> sample Maven project attached. In the JUnit test, testHttpClient4() will get 
> either 200 or 304 for all the URLs. On the other hand, testHttpClient5() 
> always gets 403 for the last URL in the list. In this project, I 
> intentionally added a If-Modified-Since header with the value being current 
> time minus 1 minute so that we should get a 304 from most of the URLs.
> Can you investigate if this is really an obscure bug or an undocumented 
> behavior change related to how CloseableHttpClient handles redirects?
> Thanks.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

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

Reply via email to