Semyon,

We had some improvements, but to knowledge fair affinity still provides
much better distribution (at least I haven't seen any results showing
otherwise). Please correct me if I'm wrong.

Actually, I think it's not an issue with fair function in particular, but
rather a design flow in affinity manager. The exact same issue will exist
not only with fair function, but with ANY function that
uses AffinityFunctionContext#previousAssignment to calculate assignments.
And the context is provided from the outside, function has nothing to do
with it.

So let's fix the root cause and bring innocent FairAF back :)

-Val

On Tue, Jul 25, 2017 at 1:07 AM, Semyon Boikov <sboi...@gridgain.com> wrote:

> Valentin,
>
> As far as I know in 2.0 some changes were made in rendezvous function so
> now it can provide better result. Do you have some numbers for 2.0 so that
> we can compare rendezvous and fair affinity functions?
>
> Thanks
>
> On Tue, Jul 25, 2017 at 5:13 AM, <dsetrak...@apache.org> wrote:
>
> > Agree with Val, we should bring it back.
> >
> > ⁣D.​
> >
> > On Jul 24, 2017, 8:14 PM, at 8:14 PM, Valentin Kulichenko <
> > valentin.kuliche...@gmail.com> wrote:
> > >Guys,
> > >
> > >Some time ago we removed FairAffinityFunction from the project.
> > >However, my
> > >communication with users clearly shows that is was a rush decision.
> > >Distribution showed by Fair AF is much better than default and for some
> > >users it's extremely important. Basically, there are cases when
> > >rendezvous
> > >function is no-go.
> > >
> > >The reason for removal was that it was possible to get inconsistent
> > >results
> > >in case multiple caches were created on different topologies. However,
> > >I
> > >think this is fixable. As far as I understand, the only thing we need
> > >to do
> > >is to maintain a single AffinityFunctionContext for all the caches with
> > >same affinity function. Currently for each cache we have separate
> > >context
> > >which holds the state used by Fair AF. If the state is different, we
> > >have
> > >an issue.
> > >
> > >The only question is how to check whether two functions are the same or
> > >not. In case both cache node filter and backup filter are not
> > >configured,
> > >this is easy - if number of partitions and excludeNeighbors flag are
> > >equal
> > >for two functions, these functions are also equal.
> > >
> > >With filters it's a bit more complicated as these are custom
> > >implementations and in general case we don't know how to compare them.
> > >Although, to solve this problem, we can enforce user to implement
> > >equals()
> > >method for these implementation if Fair AF is used.
> > >
> > >I propose to make changes described above and bring Fair AF back.
> > >
> > >Thoughts?
> > >
> > >-Val
> >
>

Reply via email to