[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