On 11-01-11 11:45 AM, Manik Surtani wrote:
And for the distributed executor API, how's this as an
alternative
(suggested by Eduardo earlier)?
DistributedExecutorService extends ExecutorService [1], adds
overloaded methods of submit(Callable) with submit(Callable, K...).
In keeping with the ExecutorService contract, submit() will ensure
the Callable is executed just once, on any one node. We could add a
submitEverywhere(Callable) and submitEverywhere(Callable, K...) to
mean execution on _all_ nodes.
Also ships with a DistributedCallable which extends Callable, adds
setCache() and setEmbeddedCacheManager() setters. If the callable is
a DistributedCallable, then these setters are called before
Callable.call(); otherwise just do Callable.call().
WDYT?
[1]
http://download.oracle.com/javase/6/docs/api/java/util/concurrent/Executo...
Ok no problem but I'd prefer to have one setter
setDistributedTaskContext that has access to caches and input keys. WDYT?
public interface DistributedTaskContext<K, V> {
public Collection<K> inputKeys();
/**
* Retrieves the default cache associated with this context.
* <p/>
*
* @return the associated cache.
*/
Cache<K, V> getCache();
/**
* Allows access to an arbitrary cache where this
DistributedTaskContext is being provided
*
* @param <T>
* @param <R>
* @param cacheName
* @return
*/
<T, R> Cache<T, R> getCache(String cacheName);
/**
* Returns Infinispan address where this DistributedTaskContext is
being provided
*
* @return
*/
Address getExecutionNode();
}