On Thursday, March 9, 2017, Tuukka Mustonen <[email protected]>
wrote:

> Hi Philippe and thanks for speedy actions!
>
> 1) Retrying only idempotent requests makes sense, as usual. But this (retry
> on idempotent) seems to be only documented on wiki page (
> https://wiki.apache.org/jmeter/JMeterSocketClosed). You should add it also
> to http://jmeter.apache.org/usermanual/component_reference.html.
>
> 2) In this case, the requests are GETs (and without body) so they should be
> retried.

Yes.
I debugged it and I confirm they are unless you face the exceptions I
mentionned.

>
> So the bug you fixed shouldn't affect this scenario.

Yes

>
> There must be
> something else - any pointers to what logging module/level I should enable
> to inspect the (failing) retry logic?

As you can see there is no logging in this HC4 class
Try the calling class. I' ll provide its name later

>
> 3) AFAIK PUT is idempotent - shouldn't you retry also that?

No it's not IMU, it changes state of server.

>
> 4) In this case, once I add tests for POST/PATCH/DELETE etc. I also want to
> retry these non-idempotent requests (to tolerate ALBs ugly behavior). These
> are "just" performance tests so I don't care if I'm creating duplicate
> data. Is there way to specify custom method whitelist to retry any HTTP
> method? I see requestSentRetryEnabled in HC4 source code - can I enable
> that somehow?

Not for now.
You case is a bit soecific no ?

>
> 5) *Related question:
> is http.connection.stalecheck$Boolean=false (in hc.parameters file) valid
> anymore on JMeter 3.x with improved retry/stale logic
> (and httpclient4.validate_after_inactivity)? The line is still there in
> bundled hc.parameters file...*

i'll double check

>
> Tuukka
>
>
> On Thu, Mar 9, 2017 at 12:25 AM, Philippe Mouawad <
> [email protected] <javascript:;>> wrote:
>
> > Hello,
> > The issue with Get with body should be fixed now:
> > - https://bz.apache.org/bugzilla/show_bug.cgi?id=60837
> >
> > Regards
> > Philippe
> >
> > On Wed, Mar 8, 2017 at 8:53 PM, Philippe Mouawad <
> > [email protected] <javascript:;>
> > > wrote:
> >
> > > Hello Tuukka,
> > >
> > > In my recent tests I didn't face any issue with httpclient4.retrycount.
> > > For me it works  but be aware that JMeter (HC4) does not retry all
> > > requests, it only retries those it is allowed to :
> > > - Idempotent HTTP methods which are by default those that do not
> > implement
> > > HttpEntityEnclosingRequest, so not POST, PUT,DELETE, PATCH, GET With
> body
> > > (<= That might be a bug thinking more about it)
> > > - Non retriable exceptions (InterruptedIOException.class,
> > > UnknownHostException.class, ConnectException.class,
> SSLException.class)
> > > - + Some other reasons
> > >
> > > See:
> > > https://github.com/apache/httpclient/blob/4.5.x/
> > > httpclient/src/main/java/org/apache/http/impl/client/
> > > DefaultHttpRequestRetryHandler.java#L129
> > >
> > >
> > > Regards
> > > Philippe
> > >
> > >
> > > On Wed, Mar 8, 2017 at 2:14 PM, Tuukka Mustonen <
> > [email protected] <javascript:;>
> > > > wrote:
> > >
> > >> My problem is that AWS Application Load Balancer (ALB) terminates all
> > >> existing connections during configuration changes (including
> > >> auto-scaling).
> > >> As my perf tests trigger auto-scaling, I want to retry failed requests
> > >> that
> > >> ALB connection termination causes.
> > >>
> > >> This results in a bunch of NoHttpResponseException whenever scaling
> > occurs
> > >> (=when ALB terminates existing connections).
> > >>
> > >> (And yeah, this load balancer behavior is weird and ugly but it's what
> > >> they
> > >> confirmed).
> > >>
> > >> Using HttpClient 4, In user.properties I have set:
> > >>
> > >> httpclient4.retrycount=1
> > >>
> > >> But that does nothing. I even tried:
> > >>
> > >> httpclient4.retrycount=100000000
> > >>
> > >> But zero effect.
> > >>
> > >> Switching to HttpClient 3.1 reproduces the problem. However, with
> > >> HttpClient 3 and:
> > >>
> > >> httpclient3.retrycount=1
> > >>
> > >> The problem vanishes so I assume retrying then works.
> > >>
> > >> I couldn't find where retry-attempts are logged so I have no "proof"
> > that
> > >> HttpClient 4 wouldn't actually retry, but a) retrycount makes
> difference
> > >> on
> > >> HttpClient 3.1 but not on 4 b) I would assume my whole process should
> > >> crash
> > >> with retrycount=100000000 if it was really applied.
> > >>
> > >> Related question: is http.connection.stalecheck$Boolean=false (in
> > >> hc.parameters file) valid anymore on JMeter 3.x with improved
> > retry/stale
> > >> logic (and httpclient4.validate_after_inactivity)? The line is still
> > >> there
> > >> in bundled hc.parameters file...
> > >>
> > >> Tested on JMeter 3.1.
> > >>
> > >> Any open (or already fixed) tickets about this? Couldn't find any...
> > >>
> > >> FYI: to describe better what happens during ALB connection
> termination:
> > >>
> > >> ...Successful communication with keep-alive...
> > >> - ALB responds to a request, and sends Connection: keep-alive so
> JMeter
> > >> leaves the connection open
> > >> - JMeter sends a new request
> > >> - ALB may might or might not ack it (not sure if there was pattern)
> > >> - ALB closes connection on TCP level (FIN)
> > >> - Connection gets closed and so sent request failed and needs to be
> > >> retried
> > >>
> > >> I think this generates NoHttpResponseException in JMeter.
> > >>
> > >> Tuukka
> > >>
> > >
> > >
> > >
> > > --
> > > Cordialement.
> > > Philippe Mouawad.
> > >
> > >
> > >
> >
> >
> > --
> > Cordialement.
> > Philippe Mouawad.
> >
>


-- 
Cordialement.
Philippe Mouawad.

Reply via email to