[infinispan-issues] [JBoss JIRA] (ISPN-2192) Allow using Distributed Execution against any cache (not just clustered caches)

Randall Hauch (JIRA) jira-events at lists.jboss.org
Tue Aug 21 08:58:15 EDT 2012


    [ https://issues.jboss.org/browse/ISPN-2192?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12712690#comment-12712690 ] 

Randall Hauch commented on ISPN-2192:
-------------------------------------

Well, ideally I could execute code like this on any cache:

{code:java}
Cache<K, V> cache = ...
CacheCallable<K,V,R> callable = ...
CacheExecutorService executor = cache.getExecutor(); // or perhaps from a utility or factory, 
                                                     // but something that Infinispan provides
List<Future<R>> futures = executor.submitEverywhere(callable);
{code}

Of course, I could still use my own {{CacheExecutorService}} if I knew which one would work best.

I'm not sure this is terribly different than using {{DistributedCallable}} and {{DistributedExecutorService}}, since those interfaces actually don't have anything specific to being "distributed" other than their names (which is why I originally suggested simply reusing them as-is). Perhaps if {{Cache*}} interfaces will be created, the {{Distributed*}} interfaces could extend the newer {{Cache*}} interfaces. WDYT?
                
> Allow using Distributed Execution against any cache (not just clustered caches)
> -------------------------------------------------------------------------------
>
>                 Key: ISPN-2192
>                 URL: https://issues.jboss.org/browse/ISPN-2192
>             Project: Infinispan
>          Issue Type: Enhancement
>    Affects Versions: 5.1.2.FINAL
>            Reporter: Randall Hauch
>            Assignee: Manik Surtani
>            Priority: Critical
>
> It is often desirable to process all entries in a cache, and there is no reliable and consistent way to do that for any cache. 
> If a cache is clustered, then map-reduce can be used (although IIUC it currently doesn't guarantee to process non-materialized entries for caches that have a cache store) and distributed execution can be used (IIUC this will be called for all keys owned by the cluster node). However, neither of these work on local caches.
> If a cache is local and there is no cache store, then apparently {{keySet()}} does work and allows a client to iterate over the keys in the local cache. However, if the local cache is configured to have a cache store, then the {{keySet()}} method will return only the keys for the materialized entries and does not return all of the keys in the cache. Of course, if a local cache does have a cache store, then its possible to obtain the keys using {{CacheLoader.loadAllKeys(...)}} (obviously this is probably not something a client should do).
> In short, it should be possible to use Distributed Execution against any cache, regardless of its configuration. (Ideally, it would be possible for Map-Reduce to also be used against any cache.)

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.jboss.org/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        


More information about the infinispan-issues mailing list