> You confirm it's this night nightly or yesterday's one ?
> Did you use the property:
> httpclient4.request_sent_retry_enabled=true

It was this build: https://builds.apache.org/job/JMeter-trunk/6020/

No, I didn't enable that property - I thought that property was to also
retry non-idempotent methods.

> If you used httpclient4.request_sent_retry_enabled=true and it works while
> it doesn't with httpclient4.request_sent_retry_enabled=false
> It's a good reason to add it.
> BUt if it already works with :
> httpclient4.request_sent_retry_enabled=false
>
> Then it might not be useful. Can you give feedback on this ?

Yeah, I didn't declare it at so I guess it's not needed then...

However, can you crystalize what that new property is supposed to do? As I
wrote above I thought it was to retry also non-idempotent methods, but I
guess it's actually supposed to do something else?

> And we'll wait a week for your test on non idempotent methods.

Ok.

> Yes but it's not a good setting, in this case better use stalecheck.

Ok.

Tuukka


On Fri, Mar 10, 2017 at 11:27 AM, Philippe Mouawad <
philippe.moua...@gmail.com> wrote:

> On Fri, Mar 10, 2017 at 8:08 AM, Tuukka Mustonen <
> tuukka.musto...@gmail.com>
> wrote:
>
> > > > +DELETE also like sebb said.
> > > >
> > > True but iIt was not concerned by bug.
> >
> > Maybe I got something wrong, but you did paste DELETE originally as
> > non-idemponent in list of non-retryable methods:
> >
> > Delete not being implementation of HttpEntityEnclosingRequest, it was not
> concerned by issue.
> Yes I thought wrongly Delete was not idempotent
>
> > > - Idempotent HTTP methods which are by default those that do not
> > implement
> > > > HttpEntityEnclosingRequest, so not POST, PUT,DELETE, PATCH, GET With
> > body
> >
> > > 1/ To diagnose set those classes in debug mode:
> > > org.apache.http.impl.client.DefaultRequestDirector
> > >
> > > You should see:
> > > Retrying connect to
> > > Retrying request to
> > >
> > > Log level can be set in log4j2.xml
> >
> > Ok, with latest nightly build, retrying works just fine, I got:
> >
> > 2017-03-10 08:50:57,856 INFO o.a.j.p.h.s.HTTPHC4Impl$3: I/O exception
> > (org.apache.http.NoHttpResponseException) caught when processing request
> > to
> > {}->http://client-api.perf.ew1.cosmos-ci.fsapi.com:80: The target server
> > failed to respond
> > 2017-03-10 08:50:57,856 INFO o.a.j.p.h.s.HTTPHC4Impl$3: Retrying request
> to
> > {}->http://client-api.perf.ew1.cosmos-ci.fsapi.com:80
> >
> > However, with exact same testplan/configuration/scenario, retrying just
> > does not work with HC4 on JMeter 3.1. Unfortunately, I wasn't able to
> > configure logging on JMeter 3.1 so that it would print similar lines. I
> > tried adding to user.properties:
> >
> > log_level.org.apache.http.impl.client.DefaultRequestDirector=DEBUG
> >
> > But that didn't do anything. Also tried tuning bin/log4j.conf. Maybe that
> > class does not exist in JMeter 3.1?
> >
> > Anyway, I can confirm that retying with HC4 does not work on JMeter 3.1
> but
> > does work on latest nightly.
>
>
> You confirm it's this night nightly or yesterday's one ?
> Did you use the property:
> httpclient4.request_sent_retry_enabled=true
>
>
> > Not for me at least (I don't believe I have
> > anything special in my JMeter 3.1 installation, just same plugins that I
> > downloaded into nightly build also).
> >
> > > I have added a property that you can set and try in user.properties:
> > > httpclient4.request_sent_retry_enabled=true
> > > Please give your feedback rapidly, so that we decide what to do if it
> > has an
> > effect.
> >
> > Unfortunately, I don't have a test case with non-idempotent method at
> hand
> > just now. I can give it a try at the start of next week.
> >
>
> If you used httpclient4.request_sent_retry_enabled=true and it works while
> it doesn't with httpclient4.request_sent_retry_enabled=false
> It's a good reason to add it.
> BUt if it already works with :
> httpclient4.request_sent_retry_enabled=false
>
> Then it might not be useful. Can you give feedback on this ?
> And we'll wait a week for your test on non idempotent methods.
>
> >
> > > But setting  httpclient4.validate_after_inactivity=0 means you disable
> > the
> > > validation which is not a good idea as you'll end up having broken
> > > connection.
> >
> > Maybe httpclient4.validate_after_inactivity=1 then?
>
>
> Yes but it's not a good setting, in this case better use stalecheck.
>
>
> > I assume that's pretty
> > much the same as the old stale check?
> >
>
>
>
> >
> > Tuukka
> >
> >
> > On Thu, Mar 9, 2017 at 10:38 PM, Philippe Mouawad <
> > philippe.moua...@gmail.com> wrote:
> >
> > > On Thu, Mar 9, 2017 at 5:28 PM, Tuukka Mustonen <
> > tuukka.musto...@gmail.com
> > > >
> > > wrote:
> > >
> > > > Sorry for the late reply,
> > > >
> > > > About customizing retry method whitelist:
> > > >
> > > > > You case is a bit soecific no ?
> > > >
> > > > True, it's very undesirable scenario, but that's what you get with
> AWS
> > > ALB
> > > > for now - I believe there are lots and lots of other users that will
> > face
> > > > the same problem.
> > > >
> > > > I have added a property that you can set and try in user.properties:
> > > httpclient4.request_sent_retry_enabled=true
> > >
> > > Please give your feedback rapidly, so that we decide what to do if it
> has
> > > an effect.
> > >
> > > Having said that, I am in discussion with AWS about if they will fix it
> > and
> > > > with what timeline - current behavior is complete nonsense...
> > > >
> > > > > In this case, the bug is larger than what I thought as for now we
> > > > consider
> > > > > PUT as non idempotent.
> > > >
> > > > +DELETE also like sebb said.
> > > >
> > > True but iIt was not concerned by bug.
> > >
> > > >
> > > > > 1/ To diagnose set those classes in debug mode:
> > > > > org.apache.http.impl.client.DefaultRequestDirector
> > > > >
> > > > > You should see:
> > > > > Retrying connect to
> > > > > Retrying request to
> > > > >
> > > > > Log level can be set in log4j2.xml
> > > >
> > > > Thanks! I'll try to find time to check that tomorrow...
> > > >
> > > > > 2/ I confirm stalecheck is still available.
> > > >
> > > > Can you clarify what is the difference to having
> > > > httpclient4.validate_after_inactivity=0?
> > > >
> > >
> > > It was an optimisation added by HC4 to replace stalecheck which was
> very
> > > costly.
> > > But setting  httpclient4.validate_after_inactivity=0 means you disable
> > the
> > > validation which is not a good idea as you'll end up having broken
> > > connection.
> > > This value should be set to a value lower than the keepalive set on
> > server
> > > side.
> > >
> > >
> > > > Tuukka
> > > >
> > > >
> > > > On Thu, Mar 9, 2017 at 2:23 PM, Philippe Mouawad <
> > > > philippe.moua...@gmail.com
> > > > > wrote:
> > > >
> > > > > Thanks for link sebb.
> > > > >
> > > > > In this case, the bug is larger than what I thought as for now we
> > > > consider
> > > > > PUT as non idempotent.
> > > > >
> > > > > I'll commit a new fix.
> > > > > Regards
> > > > >
> > > > > On Thu, Mar 9, 2017 at 12:20 PM, sebb <seb...@gmail.com> wrote:
> > > > >
> > > > > > On 9 March 2017 at 06:42, Philippe Mouawad <
> > > philippe.moua...@gmail.com
> > > > >
> > > > > > wrote:
> > > > > > > On Thursday, March 9, 2017, Tuukka Mustonen <
> > > > tuukka.musto...@gmail.com
> > > > > >
> > > > > > > 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.
> > > > > >
> > > > > > PUT *is* idempotent.
> > > > > >
> > > > > > It may change the state of the server the first time it is sent,
> > but
> > > > > > subsequent PUTs should not change the state further.
> > > > > > So it can be repeated as required.
> > > > > >
> > > > > > Similarly for DELETE
> > > > > >
> > > > > > https://tools.ietf.org/html/rfc2616#section-9.1.2
> > > > > >
> > > > > > >>
> > > > > > >> 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 <
> > > > > > >> philippe.moua...@gmail.com <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 <
> > > > > > >> > philippe.moua...@gmail.com <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 <
> > > > > > >> > tuukka.musto...@gmail.com <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.
> > > > > >
> > > > > > ------------------------------------------------------------
> > > ---------
> > > > > > To unsubscribe, e-mail: user-unsubscr...@jmeter.apache.org
> > > > > > For additional commands, e-mail: user-h...@jmeter.apache.org
> > > > > >
> > > > > >
> > > > >
> > > > >
> > > > > --
> > > > > Cordialement.
> > > > > Philippe Mouawad.
> > > > >
> > > >
> > >
> > >
> > >
> > > --
> > > Cordialement.
> > > Philippe Mouawad.
> > >
> >
>
>
>
> --
> Cordialement.
> Philippe Mouawad.
>

Reply via email to