[infinispan-dev] Non-blocking state transfer (ISPN-1424)
Bela Ban
bban at redhat.com
Thu Mar 15 04:09:59 EDT 2012
Sorry for the delay, been busy ...
Comments inline.
On 3/9/12 7:20 PM, Dan Berindei wrote:
> On Mar 9, 2012 4:19 PM, "Bela Ban"<bban at redhat.com> wrote:
>
>> My understanding (based on my changed in 4.2) is that state transfer
>> moves/deletes keys based on the diff between 2 subsequent views:
>> - Each node checks all of the affected keys
>> - If a key should be stored in additional nodes, the key is pushed there
>> - If a key shouldn't be stored locally anymore, it is removed
>>
>
>
> That's fine if we block all writes during state transfer, but once we start
> allowing writes during state transfer we need to log all changes and send
> them to the new owners at the end (the approach in 4.2 without your
> changes) or redirect all commands to the new owners.
OK
> In addition to that, we have to either block all commands on the new owners
> until they receive the entire state or to forward get commands to the old
> owners as well. The two options apply for lock commands as well.
Why do we have to lock at all if we use queueing of requests during a
state transfer ?
> I'm not trying to make merges more complicated on purpose :)
I didn't imply that; but I thought the London design was pretty simple,
and I'm trying to figure out why we have such a big (maybe perceived)
diff between London and what's in the document.
>> Also, why do we need to transfer ownership information ? Can't ownership
>> be calculated purely on local information ?
>>
>
>
> The current ownership information can be calculated based solely on the
> members list. But the ownership in the previous cache view(s) can not be
> computed by joiners based only on their information, so it has to be
> broadcasted by the coordinator.
OK
> One particularly nasty problem with the existing, blocking, state transfer
> is that before iterating the data container we need to wait for all the
> pending commands to finish.
Can't we queue the state transfer requests *and* the regular requests ?
When ST is done, we apply the ST requests first, then the queued regular
requests.
--
Bela Ban, JGroups lead (http://www.jgroups.org)
More information about the infinispan-dev
mailing list