[infinispan-dev] Retrieval operations with the IGNORE_RETURN_VALUES flag

Adrian Nistor anistor at redhat.com
Mon Jun 10 06:01:23 EDT 2013


Maybe we could just clarify the javadoc of IGNORE_RETURN_VALUES and say 
that it only applies to write operations and is ignored for everything 
else? Why punish the user with an exception when doing a 'get'?

We already document there's a (very common-sense) exception for 
conditional writes were the flag is ignored (ISPN-3141).

On 06/10/2013 12:33 PM, Dan Berindei wrote:
>
>
>
> On Thu, Jun 6, 2013 at 9:08 PM, Ray Tsang <saturnism at gmail.com 
> <mailto:saturnism at gmail.com>> wrote:
>
>     On Jun 6, 2013, at 13:26, Mircea Markus <mmarkus at redhat.com
>     <mailto:mmarkus at redhat.com>> wrote:
>
>     >
>     > On 4 Jun 2013, at 13:55, Dan Berindei <dan.berindei at gmail.com
>     <mailto:dan.berindei at gmail.com>> wrote:
>     >
>     >>>> CacheLoaderInterceptor and DistributionInterceptor both
>     honour the IGNORE_RETURN_VALUES flag for get commands, but I think
>     it would be more useful if they ignored it - just like they ignore
>     it for conditional commands.
>     >>>>
>     >>>> That would make it possible for users to only keep a
>     reference to a
>     cache.getAdvancedCache().withFlags(IGNORE_RETURN_VALUES) and use
>     it for both read and write operations.
>     >>>>
>     >>>> What do you think?
>     >>>
>     >>> If I was to take the role of a colleague of the person who's
>     written the Infinispan code, it'd be very confused to see a cache
>     reference created with IGNORE_RETURN_VALUES being used for a get()
>     operation... I can see myself thinking: "Why on earth do you call
>     get with IGNORE_RETURN_VALUES?"
>     >>
>     >> Isn't Galder's point not to allow invoking get with
>     IGNORE_RETURN_VALUES? As both of you pointed out, Get +
>     IGNORE_RETURN_VALUES doesn't make any sense :-)
>     >>
>     >>
>     >> You'd think conditional operations with IGNORE_RETURN_VALUES
>     don't make sense either, yet we have a special case to handle
>     those as if the flag wasn't present :)
>     >
>     > I guess you're referring to ISPN-3141?
>
>
> Exactly. Does it make sense to call 
> cache.withFlags(IGNORE_RETURN_VALUES).putIfAbsent(k, v)? What should 
> it return?
>
>     > Still I think Get + IGNORE_RETURN_VALUES doesn't make any sense :-)
>
>     +1. It definitely threw me off...
>
>
> Ok, maybe IGNORE_RETURN_VALUES wouldn't be the best flag name for what 
> I had in mind... I was thinking of a scenario where the application 
> needs to do both reads and writes, but for writes it never needs to 
> know the previous value. In that scenario it would make sense to call 
> something like
>
>     cache = 
> cacheManager.getCache().getAdvancedCache().withFlags(IGNORE_RETURN_VALUES_ON_WRITES)
>
> at the beginning and only ever use that reference in the application. 
> I agree that using the existing IGNORE_RETURN_VALUES flag for that 
> would be a bit misleading, though.
>
> Should we change anything about the IGNORE_RETURN_VALUES, then? I 
> guess it would be relatively simple to make it so that get() 
> operations with the flag throw an exception and (optionally) put() 
> operations always return null. Should I create an issue in JIRA for that?
>
> Cheers
> Dan
>
>
>
> _______________________________________________
> infinispan-dev mailing list
> infinispan-dev at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/infinispan-dev

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/infinispan-dev/attachments/20130610/cb20be83/attachment.html 


More information about the infinispan-dev mailing list