[infinispan-dev] Distributed execution framework API - final review

Emmanuel Bernard emmanuel at hibernate.org
Fri Jan 14 12:55:06 EST 2011


On 14 janv. 2011, at 17:47, Pete Muir wrote:

> 
> On 14 Jan 2011, at 15:47, Vladimir Blagojevic wrote:
> 
>> Hi,
>> 
>> Manik and I agreed on final look of distributed execution framework 
>> API[1]. We removed DistributedTask used for migrating 
>> DistributedCallable to execution nodes and replaced it with 
>> DistributedExecutorService which follows ideas of a familiar 
>> ExecutorService from util.concurrent.
>> 
>> MapReduce is still a beast of its own that can not fit into 
>> ExecutorService paradigm but I think we nailed it with a simple and easy 
>> to use API. See in particular examples provided.
>> 
>> 
>> The last item Manik and I disagree on is use of DistributedTaskContext. 
>> DistributedTaskContext is given to each DistributedCallable once it has 
>> migrated to remote node for execution. DistributedTaskContext might 
>> evolve and I'd rather keep it in the framework while Manik wants to have 
>> a simple setter on DistributedCallable:
>> 
>> setEnvironment(Cache, K...)
> 
> I prefer Manik's design, I generally try to design APIs for known use cases.

I've taken a middle ground in Bean Validation.
When a contract needed A and B for 90% of the forseable use cases (currently covered and potential alike), we went for the following

void contract(A a, B b, ContractContext context);

It has proven to be quite robust for a few reasons including:
 - people know what's really important
 - we kept doors open for the future
 - various implementations used these doors to provide provider specific extensions
 - we will use these for BV 1.1 or 2

Also, I am a bit worried about K...
in theory it looks good but how are keys going to be carried. Are they known a compilation time (where varargs shine) or are they likely going to be added to a Set and passed around (in which case varargs is a pain as you need to convert from a set to an array).




More information about the infinispan-dev mailing list