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