Just don't break existing users.
Timeouts are tricky, and we have lots of users who have tuned them very
carefully over the years.

--
Mike Stolz
Principal Engineer, GemFire Product Manager
Mobile: +1-631-835-4771

On Wed, Sep 6, 2017 at 1:18 PM, Mark Hanson <mhan...@pivotal.io> wrote:

> So the basic challenge here is for specific API, do we want to focus on
> providing a
> wait forever approach or just use the standard MAX_UNSIGNED and duration.
> I
> think that variable delay is something someone would implement in their own
> API
> and would not be done in the public API where consistency is valuable. I
> could be
> wrong in that belief.
>
> Further, it is sounding like a move away from overloading is the desired
> direction.
> Do we have any points against it??
>
> On Fri, Sep 1, 2017 at 2:45 PM, Michael Stolz <mst...@pivotal.io> wrote:
>
> > We would certainly rather have the time-out set correctly, but one of the
> > things I've noticed is, sometimes there is just one query or one function
> > that takes a really long time, and because we keep retrying it with the
> > same timeout, it keeps timing out each retry. It would probably be much
> > smarter to use some sort of increasing timeout on the retries until we
> give
> > up.
> >
> > --
> > Mike Stolz
> > Principal Engineer, GemFire Product Manager
> > Mobile: +1-631-835-4771
> >
> > On Fri, Sep 1, 2017 at 2:07 PM, Mark Hanson <mhan...@pivotal.io> wrote:
> >
> > > I actually don’t really have a strong opinion one way or the other. I
> get
> > > both approaches. If we want to tailor the code to use a timeout instead
> > of
> > > retry attempts I guess that is fine. It seems kind of like we are
> > > perpetuating the same API problem, that the LCD approach alleviates,
> but
> > ok.
> > >
> > > It is more complicated to code because now you need to push everything
> > > through poll or select. Such as the connect. Not that that is a bad
> > thing,
> > > because it is not. It is just more complicated.
> > >
> > > Thanks,
> > > Mark
> > >
> > > http://developerweb.net/viewtopic.php?id=3196 <
> http://developerweb.net/
> > > viewtopic.php?id=3196>
> > > > On Aug 31, 2017, at 3:47 PM, Jacob Barrett <jbarr...@pivotal.io>
> > wrote:
> > > >
> > > > None of the time spent performing the request is deterministic that’s
> > > why there are timeouts. I don’t follow your rational for claiming it
> > > complicated to code.
> > > >
> > > >> On Aug 31, 2017, at 3:27 PM, Mark Hanson <mhan...@pivotal.io>
> wrote:
> > > >>
> > > >> The only problem with that is the time to connect to another server
> is
> > > non-deterministic. So,  the code one would have to write to enable this
> > > would involve a select and a bit of not fun code, but in general could
> be
> > > not very useful as an API.
> > > >>
> > > >> I would say the lowest common denominator approach or the server
> based
> > > approach is better.
> > > >>
> > > >> Just two cents.
> > > >>
> > > >> Thanks,
> > > >> Mark
> > > >>> On Aug 31, 2017, at 1:41 PM, Jacob Barrett <jbarr...@pivotal.io>
> > > wrote:
> > > >>>
> > > >>> I believe what Bruce was saying is that the behavior should be
> > covered
> > > by
> > > >>> timeouts not iteration attempts. If the client is able to
> > successfully
> > > send
> > > >>> the command to a server but a failure occurs waiting for a reply we
> > > would
> > > >>> not retry. If the client is unable to send the request to a sever
> > > because
> > > >>> the connection closes then we would try the next server, and the
> > next,
> > > up
> > > >>> to the timeout value.
> > > >>>
> > > >>>> On Thu, Aug 31, 2017 at 1:31 PM Mark Hanson <mhan...@pivotal.io>
> > > wrote:
> > > >>>>
> > > >>>> I can also see why the user doing the retries themselves has
> value.
> > > As a
> > > >>>> lowest common denominator approach, pulling the API is sound.
> > > >>>>
> > > >>>>> On Thu, Aug 31, 2017 at 1:26 PM, Mark Hanson <mhan...@pivotal.io
> >
> > > wrote:
> > > >>>>>
> > > >>>>> I think the setRetryAttempts really harks back to the case that
> > > Bruce was
> > > >>>>> alluding to in which the server goes down. Which is the one valid
> > > case
> > > >>>> for
> > > >>>>> this kind of API in theory. Are we say that in that case we don't
> > > retry?
> > > >>>>> Seems like we are making the API a little less nice for people.
> > > >>>>> As a developer using an API, I want to do as little as possible
> and
> > > get
> > > >>>>> the most robust solution possible. This seems to go the wrong
> > > direction
> > > >>>> of
> > > >>>>> that kind of intent in a way. I want the client to automatically
> > try
> > > >>>> every
> > > >>>>> server. I don't ever want to configure the value. I could limit
> > with
> > > this
> > > >>>>> API and force it to never retry or I could cause it to retry more
> > > times
> > > >>>>> than I care for it to.  If we are going to get rid of this API in
> > > >>>>> particular, I would favor having it automatically try some number
> > of
> > > >>>>> servers or all, but not retrying at all would not be my choice.
> > > >>>>>
> > > >>>>> On Thu, Aug 31, 2017 at 1:08 PM, Jacob Barrett <
> > jbarr...@pivotal.io>
> > > >>>>> wrote:
> > > >>>>>
> > > >>>>>>> On Thu, Aug 31, 2017 at 1:00 PM Mark Hanson <
> mhan...@pivotal.io>
> > > wrote:
> > > >>>>>>>
> > > >>>>>>> I would have to go looking, but the key concept is that this
> is a
> > > >>>> bigger
> > > >>>>>>> problem.
> > > >>>>>>>
> > > >>>>>>> interval such as the time between retries....
> > > >>>>>>> wait as in how long to wait for a response...
> > > >>>>>>>
> > > >>>>>>
> > > >>>>>> All time intervals should be expressed in terms of
> > > std::chrono::duration
> > > >>>>>> values. A value of std::chrono::duration::zero means don't
> wait. I
> > > would
> > > >>>>>> suggest that a negative time not be allowed and that some very
> > > large,
> > > >>>>>> MAXINT, value could take the place of "forever". There is a
> ticket
> > > >>>> already
> > > >>>>>> open and in progress to replace all time based values with
> > > std::chrono.
> > > >>>>>>
> > > >>>>>>
> > > >>>>>>> retry as how many times to retry after a failure
> > > >>>>>>> attempts as in how many times to do a thing before giving up
> > > >>>>>>> Set of objects as in the setRetryAttempts code which , will
> try a
> > > >>>>>> number of
> > > >>>>>>> servers before giving up. where n is the number, -1 equals all,
> > > and 0
> > > >>>>>> means
> > > >>>>>>> (1 server, no retries).
> > > >>>>>>>
> > > >>>>>>
> > > >>>>>> If there are other examples of "iteration" then we should
> consider
> > > them
> > > >>>>>> based on what they iterate. I think the consensus on
> > > setRetryAttempts is
> > > >>>>>> to
> > > >>>>>> abolish it.
> > > >>>>>>
> > > >>>>>> -Jake
> > > >>>>>>
> > > >>>>>
> > > >>>>>
> > > >>>>
> > > >>
> > >
> > >
> >
>

Reply via email to