Create a ticket: https://issues.apache.org/jira/browse/IGNITE-5836
-Val On Tue, Jul 25, 2017 at 11:54 AM, Valentin Kulichenko < valentin.kuliche...@gmail.com> wrote: > 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 >> > >> > >