Yeah, that seems like it would work!

On Thu, Oct 2, 2014 at 12:45 PM, Jordan Zimmerman <
[email protected]> wrote:

> I think the recipe could be improved by having an alternate trySetValue
> that takes a version. So, you get the current value AND version, then
> trySetValue with both the value and expected version.
>
> -JZ
>
>
> On October 1, 2014 at 4:43:00 PM, Jordan Zimmerman (
> [email protected]) wrote:
>
>  That’s fair. I don’t remember how this recipe came to be. I think someone
> at Netflix needed it.
>
>  -JZ
>
>
> On October 1, 2014 at 4:38:51 PM, Scott Blum ([email protected])
> wrote:
>
>  I think, on further reflection, what bothers me is that the class as a
> whole appears to be misleading.  From the user's point of view, there's no
> actual way to achieve optimistic locking.  The method description on
> trySetValue() states "Changes the shared value only if its value has not
> changed since this client last read it" -- but this is a meaningless
> statement from the point of view of the user, because the user has no
> visibility into SharedValue's internal state and no way to make any kind of
> correlation between the user's last read and sharedValue's last read.  The
> most you can say is that it's a best-effort value cache with no user-facing
> lock semantics at all.
>
> I would suggest a serious update to the class's doc, perhaps linking to
> the DistributedAtomic equivalents.
>
>
> On Wed, Oct 1, 2014 at 5:23 PM, Jordan Zimmerman <
> [email protected]> wrote:
>
>>  On October 1, 2014 at 4:18:52 PM, Scott Blum ([email protected])
>> wrote:
>>
>>  4) Meanwhile user computes  A -> A'.
>>
>>  5) User calls sharedValue.trySetValue(A').  This succeeds because
>> sharedValue thinks it's up to date; it has no idea that the user is setting
>> a value based on old data.
>>
>>  Well, I’d call that a user error. SharedValue is not an atomic value
>> (you found that recipe already). It’s meant to get updated in the
>> background as a kind of cache. It can be thought of as a cached node that
>> has optimistic locking semantics for updating.
>>
>> -JZ
>>
>
>

Reply via email to