I already explained why checking specifically for FairAffintiyFunction in SQL is wrong.
On Wed, Aug 16, 2017 at 10:00 AM, Dmitriy Setrakyan <dsetrak...@apache.org> wrote: > Vladimir, I think you should look more carefully at what FairAffinity does > and why it exists. There is no way to "fix" it not to accept previous state > - it must be provided. > > I do not understand why we need to change anything in code when there is a > simple solution being proposed here. Why not just add a validation to SQL > when fair affinity is used with JOINs and be done with it? > > Alexey G, given that you originally wrote the FairAffinity function, can > you please comment? > > D. > > On Tue, Aug 15, 2017 at 10:41 PM, Vladimir Ozerov <voze...@gridgain.com> > wrote: > > > Dima, > > > > It is not hard to implement. It is hard to reason on whether your query > > will fail or not. Moreover, cache groups is an antipattern for SQL, > > personally I do not want users to use it unless absolutely needed (large > > topologies, large number of caches). Also take in count that the same > > problem with different partition distribution holds for any two caches > with > > different affinity functions, so the problem is not tied to > > FairAffinityFunction only. > > > > IMO correct fix should be as follows: > > 1) Add requirement that every affinity function must provide sensible > > implementation of equals/hashCode > > 2) Add "boolean deterministic()" method to affinity function interface; > > "true" means that function doesn't depend on any external things, such as > > topology history > > 3) Fail SQL if there are at least two PARTITIONED caches with different > or > > non-deterministic affinity functions, and distributed joins are not > enabled > > 4) Fix FairAffinityFunction and make it deterministic, it should not > depend > > on previous state. > > > > Makes sense? > > > > On Wed, Aug 16, 2017 at 3:31 AM, Dmitriy Setrakyan < > dsetrak...@apache.org> > > wrote: > > > > > On Tue, Aug 15, 2017 at 1:12 PM, Vladimir Ozerov <voze...@gridgain.com > > > > > wrote: > > > > > > > I do not like the idea as it would make it very hard to reason about > > > > whether your SQL will fail or not. Let's looks at the problem from > the > > > > different angle. I have this question for years - why in the world > > *fair* > > > > affinity function, whose only ultimate goal is to provide equal > > partition > > > > distribution, depends on it's own previous state? Can we re-design > in a > > > way > > > > that it depends only on partition count and current topology state? > > > > > > > > > > Vladimir, we must know previous state, otherwise the data partitions > will > > > be randomly moving across the network every time a topology changes. > > > > > > From the SQL standpoint, you can just fail all queries that have a JOIN > > > from different cache groups, if at least one of the groups is using > Fair > > > Affinity. I am not sure why this would be hard. > > > > > > > > > > > > > > On Thu, Aug 10, 2017 at 12:16 AM, Valentin Kulichenko < > > > > valentin.kuliche...@gmail.com> wrote: > > > > > > > > > As far as I know, all logical caches with the same affinity > function > > > and > > > > > node filter will end up in the same group. If that's the case, I > like > > > the > > > > > idea. This is exactly what I was looking for. > > > > > > > > > > -Val > > > > > > > > > > On Wed, Aug 9, 2017 at 8:18 AM, Evgenii Zhuravlev < > > > > > e.zhuravlev...@gmail.com> > > > > > wrote: > > > > > > > > > > > Dmitriy, > > > > > > > > > > > > Yes, you're right. Moreover, it looks like a good practice to > > combine > > > > > > caches that will be used for collocated JOINs in one group since > it > > > > > reduces > > > > > > overall overhead. > > > > > > > > > > > > I think it's not a problem to add this restriction to the SQL > JOIN > > > > level > > > > > if > > > > > > we will decide to use this solution. > > > > > > > > > > > > Evgenii > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > 2017-08-09 17:07 GMT+03:00 Dmitriy Setrakyan < > > dsetrak...@apache.org > > > >: > > > > > > > > > > > > > On Wed, Aug 9, 2017 at 6:28 AM, ezhuravl < > > e.zhuravlev...@gmail.com > > > > > > > > > > wrote: > > > > > > > > > > > > > > > Folks, > > > > > > > > > > > > > > > > I've started working on a https://issues.apache.org/ > > > > > > > > jira/browse/IGNITE-5836 > > > > > > > > ticket and found that the recently added feature with > > cacheGroups > > > > > doing > > > > > > > > pretty much the same that was described in this issue. > > CacheGroup > > > > > > > > guarantees > > > > > > > > that all caches within a group have same assignments since > they > > > > > share a > > > > > > > > single underlying 'physical' cache. > > > > > > > > > > > > > > > > > > > > > > > I think we can return FairAffinityFunction and add > information > > to > > > > its > > > > > > > > Javadoc that all caches with same AffinityFunction and > > NodeFilter > > > > > > should > > > > > > > be > > > > > > > > combined in cache group to avoid a problem with inconsistent > > > > previous > > > > > > > > assignments. > > > > > > > > > > > > > > > > What do you guys think? > > > > > > > > > > > > > > > > > > > > > > Are you suggesting that we can only reuse the same > > > > FairAffinityFunction > > > > > > > across the logical caches within the same group? This would > mean > > > that > > > > > > > caches from the different groups cannot participate in JOINs or > > > > > > collocated > > > > > > > compute. > > > > > > > > > > > > > > I think I like the idea, however, we need to make sure that we > > > > enforce > > > > > > this > > > > > > > restriction, at least at the SQL JOIN level. > > > > > > > > > > > > > > Alexey G, Val, would be nice to hear your thoughts on this. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Evgenii > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > -- > > > > > > > > View this message in context: http://apache-ignite- > > > > > > > > developers.2346864.n4.nabble.com/Resurrect- > > FairAffinityFunction- > > > > > > > > tp19987p20669.html > > > > > > > > Sent from the Apache Ignite Developers mailing list archive > at > > > > > > > Nabble.com. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >