Re: svn commit: r1164186 - in /jakarta/jmeter/trunk: bin/jmeter.properties src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPHC4Impl.java xdocs/changes.xml xdocs/usermanual/component_reference.xml

sebb <[email protected]> Fri, 23 Sep 2011 13:34:07 +0100
Newsgroups gmane.comp.jakarta.cactus.devel
Message-ID <CAOGo0VbjhuQHmOVkyde-Xqq6jbFpMETjDjeECyUMrYy_01PUxw@mail.gmail.com>
On 23 September 2011 13:29, Philippe Mouawad <[email protected]> wrote:
> Again,
> I just implemented Retry on HTTPHC3.1 setting it to 0 and I get low 0.12%
> error like with HTTP 4.1.
> Do you want me to submit a patch to HTTPHC3.1 ?

Would be useful, thanks.

> Regards
> Philippe
>
>
> On Fri, Sep 23, 2011 at 2:23 PM, Philippe Mouawad <
> [email protected]> wrote:
>
>> Hello,
>> Don't you think you should keep default to 0 and add same configuration to
>> HTTPHC3 ?
>> Maybe it's a real server issue that is hidden by retry set to 3.
>> Can't we check in Jakarta apache logs to see if these errors are mentionned
>> ?
>>
>> Regards
>> Philippe
>>
>>
>> On Fri, Sep 23, 2011 at 11:12 AM, Milamber <[email protected]> wrote:
>>
>>> Hello,
>>>
>>> (on JMeter 2.5.1RC1)
>>> Don't retry automatically with HC4 sampler seems introduce a bug on load
>>> tests using HC4.
>>>
>>> When you run a load test, some errors "The target server failed to
>>> respond" can appear on response data.
>>>
>>> With wireshark, this error arrives at the end of TCP conversations: the
>>> GET request is sent, but no server response (the connection has been
>>> closed, I suppose).
>>>
>>> If I changes the property httpclient4.retrycount to 3, the load tests
>>> works fine, with no errors.
>>>
>>> This bug is tested on Linux with JVM5/7 and WinXP with JVM7
>>>
>>> Test case is the Simple Test Case on this bugs:
>>> https://issues.apache.org/bugzilla/show_bug.cgi?id=51863
>>>
>>> (Note: no errors with HC3.1)
>>> (Questions: retrycount exists on HC3.1? if yes what default value?)
>>>
>>> ====Response data====
>>> org.apache.http.NoHttpResponseException: The target server failed to
>>> respond
>>>    at
>>>
>>> org.apache.http.impl.conn.DefaultResponseParser.parseHead(DefaultResponseParser.java:101)
>>>    at
>>>
>>> org.apache.http.impl.io.AbstractMessageParser.parse(AbstractMessageParser.java:252)
>>>    at
>>>
>>> org.apache.http.impl.AbstractHttpClientConnection.receiveResponseHeader(AbstractHttpClientConnection.java:281)
>>>    at
>>>
>>> org.apache.http.impl.conn.DefaultClientConnection.receiveResponseHeader(DefaultClientConnection.java:247)
>>>    at
>>>
>>> org.apache.http.impl.conn.AbstractClientConnAdapter.receiveResponseHeader(AbstractClientConnAdapter.java:219)
>>>    at
>>>
>>> org.apache.http.protocol.HttpRequestExecutor.doReceiveResponse(HttpRequestExecutor.java:298)
>>>    at
>>>
>>> org.apache.http.protocol.HttpRequestExecutor.execute(HttpRequestExecutor.java:125)
>>>    at
>>>
>>> org.apache.http.impl.client.DefaultRequestDirector.tryExecute(DefaultRequestDirector.java:645)
>>>    at
>>>
>>> org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:464)
>>>    at
>>>
>>> org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:820)
>>>    at
>>>
>>> org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:754)
>>>    at
>>>
>>> org.apache.jmeter.protocol.http.sampler.HTTPHC4Impl.sample(HTTPHC4Impl.java:265)
>>>    at
>>>
>>> org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy.sample(HTTPSamplerProxy.java:62)
>>>    at
>>>
>>> org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase.sample(HTTPSamplerBase.java:1010)
>>>    at
>>>
>>> org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase.sample(HTTPSamplerBase.java:996)
>>>    at
>>>
>>> org.apache.jmeter.threads.JMeterThread.process_sampler(JMeterThread.java:383)
>>>    at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:276)
>>>    at java.lang.Thread.run(Thread.java:595)
>>> =====================
>>>
>>> Milamber
>>>
>>> Le 01/09/2011 17:52, [email protected] a ecrit :
>>> > Author: sebb
>>> > Date: Thu Sep  1 17:52:41 2011
>>> > New Revision: 1164186
>>> >
>>> > URL: http://svn.apache.org/viewvc?rev=1164186&view=rev
>>> > Log:
>>> > Don't automatically retry with HttpCLient4 sampler
>>> >
>>> > Modified:
>>> >     jakarta/jmeter/trunk/bin/jmeter.properties
>>> >
>>> jakarta/jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPHC4Impl.java
>>> >     jakarta/jmeter/trunk/xdocs/changes.xml
>>> >     jakarta/jmeter/trunk/xdocs/usermanual/component_reference.xml
>>> >
>>> > Modified: jakarta/jmeter/trunk/bin/jmeter.properties
>>> > URL:
>>> http://svn.apache.org/viewvc/jakarta/jmeter/trunk/bin/jmeter.properties?rev=1164186&r1=1164185&r2=1164186&view=diff
>>> >
>>> ==============================================================================
>>> > --- jakarta/jmeter/trunk/bin/jmeter.properties (original)
>>> > +++ jakarta/jmeter/trunk/bin/jmeter.properties Thu Sep  1 17:52:41 2011
>>> > @@ -251,7 +251,7 @@ log_level.jorphan=INFO
>>> >  # 0 now means don't retry connection (in 2.3 and before it meant no
>>> tries at all!)
>>> >
>>> >
>>>  #---------------------------------------------------------------------------
>>> > -# HTTPClient configuration
>>> > +# Commons HTTPClient configuration
>>> >
>>>  #---------------------------------------------------------------------------
>>> >
>>> >  # define a properties file for overriding Commons HttpClient parameters
>>> > @@ -302,7 +302,7 @@ log_level.jorphan=INFO
>>> >  #log_file.httpclient=httpclient.log
>>> >
>>> >
>>> > -#         Apache HttpClient logging examples
>>> > +#         Apache Commons HttpClient logging examples
>>> >  #
>>> >  # Enable header wire + context logging - Best for Debugging
>>> >  #log_level.org.apache.http=DEBUG
>>> > @@ -320,6 +320,13 @@ log_level.jorphan=INFO
>>> >  #log_level.org.apache.http.client=DEBUG
>>> >
>>> >
>>>  #---------------------------------------------------------------------------
>>> > +# Apache HttpComponents HTTPClient configuration (HTTPClient4)
>>> >
>>> +#---------------------------------------------------------------------------
>>> > +
>>> > +# Number of retries to attempt (default 0)
>>> > +#httpclient4.retrycount=0
>>> > +
>>> >
>>> +#---------------------------------------------------------------------------
>>> >  # Results file configuration
>>> >
>>>  #---------------------------------------------------------------------------
>>> >
>>> >
>>> > Modified:
>>> jakarta/jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPHC4Impl.java
>>> > URL:
>>> http://svn.apache.org/viewvc/jakarta/jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPHC4Impl.java?rev=1164186&r1=1164185&r2=1164186&view=diff
>>> >
>>> ==============================================================================
>>> > ---
>>> jakarta/jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPHC4Impl.java
>>> (original)
>>> > +++
>>> jakarta/jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPHC4Impl.java
>>> Thu Sep  1 17:52:41 2011
>>> > @@ -50,6 +50,7 @@ import org.apache.http.auth.NTCredential
>>> >  import org.apache.http.auth.UsernamePasswordCredentials;
>>> >  import org.apache.http.client.CredentialsProvider;
>>> >  import org.apache.http.client.HttpClient;
>>> > +import org.apache.http.client.HttpRequestRetryHandler;
>>> >  import org.apache.http.client.entity.UrlEncodedFormEntity;
>>> >  import org.apache.http.client.methods.HttpDelete;
>>> >  import org.apache.http.client.methods.HttpGet;
>>> > @@ -74,6 +75,7 @@ import org.apache.http.entity.mime.conte
>>> >  import org.apache.http.entity.mime.content.StringBody;
>>> >  import org.apache.http.impl.client.AbstractHttpClient;
>>> >  import org.apache.http.impl.client.DefaultHttpClient;
>>> > +import org.apache.http.impl.client.DefaultHttpRequestRetryHandler;
>>> >  import org.apache.http.message.BasicNameValuePair;
>>> >  import org.apache.http.params.BasicHttpParams;
>>> >  import org.apache.http.params.CoreConnectionPNames;
>>> > @@ -109,6 +111,9 @@ public class HTTPHC4Impl extends HTTPHCA
>>> >
>>> >      private static final Logger log =
>>> LoggingManager.getLoggerForClass();
>>> >
>>> > +    /** retry count to be used; defaults to 0 = disable retries */
>>> > +    private static final int RETRY_COUNT =
>>> JMeterUtils.getPropDefault("httpclient4.retrycount", 0);
>>> > +
>>> >      private static final String CONTEXT_METRICS = "jmeter_metrics"; //
>>> TODO hack, to be removed later
>>> >
>>> >      private static final HttpResponseInterceptor METRICS_SAVER = new
>>> HttpResponseInterceptor(){
>>> > @@ -447,7 +452,12 @@ public class HTTPHC4Impl extends HTTPHCA
>>> >
>>> >              HttpParams clientParams = new DefaultedHttpParams(new
>>> BasicHttpParams(), DEFAULT_HTTP_PARAMS);
>>> >
>>> > -            httpClient = new DefaultHttpClient(clientParams);
>>> > +            httpClient = new DefaultHttpClient(clientParams){
>>> > +                @Override
>>> > +                protected HttpRequestRetryHandler
>>> createHttpRequestRetryHandler() {
>>> > +                    return new
>>> DefaultHttpRequestRetryHandler(RETRY_COUNT, false); // set retry count
>>> > +                }
>>> > +            };
>>> >              ((AbstractHttpClient)
>>> httpClient).addResponseInterceptor(new ResponseContentEncoding());
>>> >              ((AbstractHttpClient)
>>> httpClient).addResponseInterceptor(METRICS_SAVER); // HACK
>>> >
>>> >
>>> > Modified: jakarta/jmeter/trunk/xdocs/changes.xml
>>> > URL:
>>> http://svn.apache.org/viewvc/jakarta/jmeter/trunk/xdocs/changes.xml?rev=1164186&r1=1164185&r2=1164186&view=diff
>>> >
>>> ==============================================================================
>>> > --- jakarta/jmeter/trunk/xdocs/changes.xml (original)
>>> > +++ jakarta/jmeter/trunk/xdocs/changes.xml Thu Sep  1 17:52:41 2011
>>> > @@ -60,6 +60,9 @@ To override the default local language f
>>> >  <h2>Incompatible changes</h2>
>>> >
>>> >  <p>
>>> > +The HttpClient4 sampler as implemented in version 2.5 used a retry
>>> count of 3.
>>> > +As this can hide server errors, JMeter now sets the retry count to 0 to
>>> prevent any automatic retries.
>>> > +This can be overridden by setting the JMeter property
>>> <b>httpclient4.retrycount</b>.
>>> >  </p>
>>> >
>>> >  <h2>Bug fixes</h2>
>>> > @@ -67,6 +70,7 @@ To override the default local language f
>>> >  <h3>HTTP Samplers and Proxy</h3>
>>> >  <ul>
>>> >  <li>Bug 51750 - Retrieve all embedded resources doesn't follow
>>> IFRAME</li>
>>> > +<li>Change the default so the HttpClient 4 sampler does not retry</li>
>>> >  </ul>
>>> >
>>> >  <h3>Other Samplers</h3>
>>> >
>>> > Modified: jakarta/jmeter/trunk/xdocs/usermanual/component_reference.xml
>>> > URL:
>>> http://svn.apache.org/viewvc/jakarta/jmeter/trunk/xdocs/usermanual/component_reference.xml?rev=1164186&r1=1164185&r2=1164186&view=diff
>>> >
>>> ==============================================================================
>>> > --- jakarta/jmeter/trunk/xdocs/usermanual/component_reference.xml
>>> (original)
>>> > +++ jakarta/jmeter/trunk/xdocs/usermanual/component_reference.xml Thu
>>> Sep  1 17:52:41 2011
>>> > @@ -93,7 +93,7 @@ Latency is set to the time it takes to l
>>> >          <li>applets</li>
>>> >          <li>stylesheets</li>
>>> >          <li>external scripts</li>
>>> > -        <li>frames</li>
>>> > +        <li>frames, iframes</li>
>>> >          <li>background images (body, table, TD, TR)</li>
>>> >          <li>background sound</li>
>>> >          </ul>
>>> > @@ -353,6 +353,12 @@ Optional properties to allow change the
>>> >  <note>Versions of JMeter before 2.5 returns only data response size
>>> (uncompressed if request uses gzip/defate mode).
>>> >  <br></br>To return to settings before version 2.5, set the two
>>> properties to false.</note>
>>> >  </p>
>>> > +<p>
>>> > +<b>Retry handling</b><br></br>
>>> > +In version 2.5 of JMeter, the HttpClient4 sampler used the default
>>> retry count, which was 3.
>>> > +As this can hide server errors, JMeter now sets the retry count to 0 to
>>> prevent any automatic retries.
>>> > +This can be overridden by setting the JMeter property
>>> <b>httpclient4.retrycount</b>.
>>> > +</p>
>>> >  <links>
>>> >          <link href="test_plan.html#assertions">Assertion</link>
>>> >          <link href="build-web-test-plan.html">Building a Web Test
>>> Plan</link>
>>> >
>>> >
>>> >
>>> > ---------------------------------------------------------------------
>>> > To unsubscribe, e-mail: [email protected]
>>> > For additional commands, e-mail: [email protected]
>>> >
>>> >
>>> >
>>>
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: [email protected]
>>> For additional commands, e-mail: [email protected]
>>>
>>>
>>
>>
>> --
>> Cordialement.
>> Philippe Mouawad.
>> Ubik-Ingénierie
>>
>>
>>
>>
>
>
> --
> Cordialement.
> Philippe Mouawad.
> Ubik-Ingénierie
>