[infinispan-dev] State transfer-related terms

Dan Berindei dan.berindei at gmail.com
Tue Feb 14 05:57:18 EST 2017


Oops, I thought I had replied to this...


On Thu, Jan 19, 2017 at 6:11 PM, Radim Vansa <rvansa at redhat.com> wrote:
> Hi,
>
> I've started (again) working on ISPN-5021 [1], and I'd like to get some
> common agreement on few terms. So below I summarize my understanding (or
> misunderstanding) of these, please state you opinion, thinking a bit
> more generally.
>
> State transfer: whole process beginning with some ST-related event =
> node being detected to crash/sending join or leave request, and ending
> when this event is processed. When another event happens, the current ST
> can either be finished or canceled and then *another* ST can begin.
> State transfer is a cluster-wide process, though it cannot be started
> and ended absolutely simultaneously.
>
> Rebalance: one phase of ST, when the data transfer occurs.
>

I see this exactly the opposite way: state transfer is the actual
transfer of the data, and the rebalance is the whole process of adding
a "pending" consistent hash, starting the state transfer, confirming
the transfer of state, and finally replacing the "current" consistent
hash with the pending one.

> Data rehash: this is a bit painful point: we have DataRehashEvent where
> the name suggest that it is related rather to rebalance, but currently
> it fires when CacheTopology.getPendingCH() == null (that means when ST
> is complete), and the event itself also looks more like it should be
> fired at the end of state transfer. If we have something more to do
> after the rebalance, I am not sure how useful is firing that just
> because all data has been transferred (but for example before old data
> has been wiped out). Should I add another StateTransferEvent event (and
> appropriate listeners)? That would break the compatibility with tightly
> related implementations...
>

The problem I was trying to solve with the "rebalance" name in 5.2 is
that before we had two different concepts:

1. State transfer applied only to replicated caches, and it meant
transferring state from the coordinator to a joiner.
2. Rehashing meant computing a new consistent hash based on the
JGroups view, receiving state from old owners based on the consistent
hash of the old JGroups view, and removing state no longer owned in
the new consistent hash. The coordinator didn't have a special role.

Rebalancing was meant to be an extension of rehashing to cover both
distributed and replicated caches (now with replicated caches also
being able to receive state from multiple members in parallel). Some
of the components (StateTransferManager) and events (DataRehashEvent)
kept their names, however.

> WDYT?
>
> Radim
>
> [1] https://issues.jboss.org/browse/ISPN-5021
>
>
> --
> Radim Vansa <rvansa at redhat.com>
> JBoss Performance Team
>
> _______________________________________________
> infinispan-dev mailing list
> infinispan-dev at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/infinispan-dev


More information about the infinispan-dev mailing list