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