[infinispan-dev] Distribution, take 2

Manik Surtani manik at jboss.org
Mon Jul 20 06:36:10 EDT 2009


On 20 Jul 2009, at 09:24, Galder Zamarreno wrote:

>
>
> On 07/17/2009 08:24 PM, Manik Surtani wrote:
>> 6.3. Nodes (L - replCount + 1), (L + 1) and (L + replCount) kick  
>> off a
>> LeaveTask.
>
> Shouldn't (L - replCount + 1) be (L - 1) ?

Well spotted.  That was leftover from an earlier version I was working  
on.  It should be (L - 1).

>
>> 6.3.1. Not everyone in the cluster need be involved in this rehash
>> thanks to fixed CH positions.
>>
>> 7. LeaveTask: This is PUSH based
>> 7.1. If an existing LeaveTask is running, the existing task should be
>> cancelled first.
>
> Why should it be cancelled? In a cluster of 3 nodes, A:B:C:D,  
> imagine A leaves and while B is pushing state for A, C leaves as  
> well. Are you gonna cancel B's push?

So in the case of cluster {A, B, C, D, E, F}

Let's take the case of C leaving.

B pushes C's state to D.

This task being cancelled will only happen if A or D were to leave  
(others leaving will not trigger a LeaveTask on B)

So if D leaves, it should be cancelled and restarted since there is no  
point in beaming state to D.  Even if A leaves, a rehash should only  
happen once.  So a rehash due to A leaving should cover state being  
pushed to D as well.

While typing this I realised that points 7.4.1 and 8.2. in my original  
email will prevent this from working since the conditions in those  
steps do not assume that a task could be cancelled.  A potential way  
for this is to maintain a "leavers list".  Every time a LeaveTask  
completes, the LeaversList is emptied.  Every time the LeaveTask  
starts, it adds the leaver's address to the LeaversList.  Conditions  
7.4.1 and 8.2 consider all leavers in the LeaversList, not just the  
current leaver, L.

Thoughts?

Cheers
Manik

--
Manik Surtani
manik at jboss.org
Lead, Infinispan
Lead, JBoss Cache
http://www.infinispan.org
http://www.jbosscache.org







More information about the infinispan-dev mailing list