On 12/13/2013 02:44 PM, Galder Zamarreño wrote:
> On Dec 6, 2013, at 10:45 AM, Radim Vansa <rva...@redhat.com> wrote:
>
>> Hi,
>>
>> 1) IMO, filtering for specific key is a very important use case. Registering 
>> a filterId is a very powerful feature, but as long as you don't provide 
>> runtime parameter for this filter, you cannot implement one-key filtering.
> What do you mean by runtime parameter exactly? Can you give a concrete 
> example of what you want to achieve that is not possible with what I've 
> written up?

As I stressed, if the client wants to listen for events on key_123456, 
then you can deploy a filter matching key_{number} (and additional 
constraints) but the 123456 is not known at deployment time.

>
>> 2) setting ack/no ack in listener, and then configuring server-wise whether 
>> you should ack each / only last event sounds weird. I'd replace the boolean 
>> with enum { NO_ACK, ACK_EACH, ACK_LAST }.
> Makes a lot of sense, +1.
>
>> 3) should the client provide source id when registering listener or when 
>> starting RemoteCacheManager? No API for that.
> Every operation will require a source ID from now on, so clients must provide 
> it from first operation sent to the server. From a Java client perspective, 
> you'd have this from the start via the configuration.
>
>> 4) clustered events design does not specify any means to replicating the 
>> clustered event listener - all it does is that you register the listener on 
>> one node and the other nodes then route events to this node, until the node 
>> dies/deregisters the listener. No replication. Please specify, how should it 
>> piggyback on clustered events, and how should the listener list be 
>> replicated.
> In clustered listeners, the other nodes you talk about are gonna need to know 
> about the clustered listeners so that they route events. Some kind of 
> information about these clustered listeners will need to be sent around the 
> cluster. The exact details are probably implementation details but we have a 
> clustered registry already in place for this kind of things. In any case, 
> it'd make a lot of sense that both use cases reuse as much as logic in this 
> area.

OK, this is probably the desired behaviour, it just is not covered by 
the Clustered Events design draft. Probably something to add - I'll ping 
Mircea about that. And you're right that it would make a lot of sense to 
have shared structure for the listeners, and two implementations of the 
delivery boy (one to the node where a clustered event has been 
registered and second to local component handling HotRod clients).

>
>> 5) non-acked events: how exactly do you expect the ack data to be 
>> replicated, and updated? I see three options:
>> A) Let non-acked list be a part of the listener record in replicated cache, 
>> and the primary owner which executes the event should update these via delta 
>> messages. I guess for proper reliability it should add operation record 
>> synchronously before confirming the operation to the originator, and then it 
>> might asynchronously remove it after the ack from client. When a node 
>> becomes primary owner, it should send events to client for all non-acked 
>> events.
>> B) Having the non-acked list attached directly to cache entry (updating it 
>> together with regular backup), and then asynchronously updating the non-ack 
>> list after ack comes
>> C) Separate cache for acks by entry keys, similar to B, consistent hash 
>> synced with the main entry cache
> Definitely not B. I don't wanna tie the internal cache entry to the ACKs. The 
> two should be independent. Either C or A. For C, you'd wished to have a 
> single cache for all listeners+caches, but you'd have to think about the keys 
> and to have the same consistent hash, you'd have to have same keys. A might 
> be better, but you certainly don't want this ACK info in a replicated 
> structure. You'd want ACKs in a distributed cache preferably, and clustered 
> listener info in the clustered replicated registry.
There already is some CH implementation which aims at sharing the same 
distribution for all caches, SyncConsistentHash. Is there some problem 
with C and forcing this for the caches? Dan?

Radim
_______________________________________________
infinispan-dev mailing list
infinispan-dev@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/infinispan-dev

Reply via email to