[infinispan-dev] Reliability of return values
Mircea Markus
mmarkus at redhat.com
Wed May 28 13:12:42 EDT 2014
On May 28, 2014, at 11:48, Galder Zamarreño <galder at redhat.com> wrote:
> On 27 May 2014, at 18:47, Mircea Markus <mmarkus at redhat.com> wrote:
>
>>
>> On May 13, 2014, at 14:58, Dan Berindei <dan.berindei at gmail.com> wrote:
>>
>>>
>>>
>>>
>>> On Mon, May 12, 2014 at 1:54 PM, Radim Vansa <rvansa at redhat.com> wrote:
>>> @Dan: It's absolutely correct to do the further writes in order to make
>>> the cache consistent, I am not arguing against that. You've fixed the
>>> outcome (state of cache) well. My point was that we should let the user
>>> know that the value he gets is not 100% correct when we already know
>>> that - and given the API, the only option to do that seems to me as
>>> throwing an exception.
>>>
>>> The problem, as I see it, is that users also expect methods that throw an exception to *not* modify the cache.
>>> So we would break some of the users' expectations anyway.
>>
>> I don't see how we can guarantee that if a method throws an exception nothing has been applies without a 2PC/TX. I think this should be a expectation for non-tx caches. i.e. if an operation throws an exception, then the state of the data is inconsistent.
>
> If we did that, our retry logic would remain badly broken for situations like the one mentioned in ISPN-2956. Unless you want to get rid of the retry logic altogether and let the client users decide what to do, I think we should improve the retry logic to better deal with such situations, and we have ways to do so [1]
>
> [1] https://issues.jboss.org/browse/ISPN-2956?focusedCommentId=12970541&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-12970541
You are right, retrying is better client experience than failing blindly.
Cheers,
--
Mircea Markus
Infinispan lead (www.infinispan.org)
More information about the infinispan-dev
mailing list