[infinispan-dev] State transfer-related terms
Radim Vansa
rvansa at redhat.com
Mon Jan 23 04:13:34 EST 2017
On 01/19/2017 11:14 PM, William Burns wrote:
>
>
> On Thu, Jan 19, 2017 at 11:13 AM Radim Vansa <rvansa at redhat.com
> <mailto: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.
>
> 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 stream retry mechanism currently uses DataRehashedEvent. It is
> beneficial but not required for it to be notified immediately after
> all entries have been transferred but before any have been removed.
> This shortens the window for when a stream operation is retried since
> it has to be sure that all entries for a given segment are present,
> but we don't care if entries for a non owned segment are present. But
> the good thing is that the code shouldn't require much work at all to
> be changed if we needed to.
>
> I am personally not keen on having another event that is like
> DataRehashedEvent, but only signifies entries were removed. It seems a
> bit confusing. Is there any usage you were thinking that required the
> old entries to be removed that could benefit from the new event/listeners?
Okay, so from streams POV, DataRehashedEvent should mark rebalance, and
be fired once all incoming segments arrive. The implementation does not
rely on pendingCH being null when the event is fired, right? I like such
definition as "data rehash" sounds like moving data around.
I can see StateTransferEvent being useful when downscaling the cluster,
and you want to remove one node at a time (as the current leave is not
too graceful and calling cacheManager.stop() does not wait until ST
completes).
R.
>
> WDYT?
>
> Radim
>
> [1] https://issues.jboss.org/browse/ISPN-5021
>
>
> --
> Radim Vansa <rvansa at redhat.com <mailto:rvansa at redhat.com>>
> JBoss Performance Team
>
> _______________________________________________
> infinispan-dev mailing list
> infinispan-dev at lists.jboss.org <mailto:infinispan-dev at lists.jboss.org>
> https://lists.jboss.org/mailman/listinfo/infinispan-dev
>
>
>
> _______________________________________________
> infinispan-dev mailing list
> infinispan-dev at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/infinispan-dev
--
Radim Vansa <rvansa at redhat.com>
JBoss Performance Team
More information about the infinispan-dev
mailing list