There is no more such resolver. It was removed. On Mon, Apr 10, 2017 at 8:58 PM, Denis Magda <dma...@apache.org> wrote:
> Vovan, > > Before I fix the documentation, what’t the replacement for > BinaryFieldIdentiyResolver we used to define field for hash code > calculation and equality comparison when DML statements are used? > https://apacheignite.readme.io/docs/binary-marshaller# > section-binary-field-identity-resolver <https://apacheignite.readme. > io/docs/binary-marshaller#section-binary-field-identity-resolver> > > — > Denis > > > On Apr 9, 2017, at 7:39 AM, Vladimir Ozerov <voze...@gridgain.com> > wrote: > > > > Resolvers were essential for DML because we had broken comparison > semantics > > of binary objects. This is not the case now. > > > > Resolver as a whole is normal practice. E.g. it is implemented in .NET on > > core language level and widely used in many cases. Hazelcast has it as > well > > AFAIK. So it is wrong to think that the whole idea is useless. Think of > it > > as a comparator's brother. > > > > The only reason why we need to remove it is missing hash index in new > > architecture. It makes sense, as it is better to have AI 2.0 without > them, > > than no AI 2.0 :-) > > > > 09 апр. 2017 г. 17:31 пользователь "Sergi Vladykin" < > > sergi.vlady...@gmail.com> написал: > > > >> I guess Resolvers were added to DML just because they already existed > since > >> 1.9 and we were forced to support them in all the parts of our product. > >> > >> We have to stop this practice to add features without clear real life > use > >> cases for them. > >> > >> Sergi > >> > >> 2017-04-09 17:00 GMT+03:00 Denis Magda <dma...@gridgain.com>: > >> > >>> Sergi, Vovan, > >>> > >>> Sorry for being annoying but I still didn't get an answer on whether > the > >>> resolvers are the must for DML. The main reason why we made them up > some > >>> time ago is to support specific DML use cases. However I can't recall > the > >>> use cases. > >>> > >>> -- > >>> Denis > >>> > >>> On Sun, Apr 9, 2017 at 6:54 AM, Sergi Vladykin < > sergi.vlady...@gmail.com > >>> > >>> wrote: > >>> > >>>> Ok, we need to do 2 things here: > >>>> > >>>> 1. Drop the resolvers from the source code. > >>>> 2. Write a good page in docs on "What makes a correct cache key". > >>>> > >>>> Who can do that? > >>>> > >>>> Sergi > >>>> > >>>> 2017-04-07 9:48 GMT+03:00 Sergi Vladykin <sergi.vlady...@gmail.com>: > >>>> > >>>>> It is possible to try adding support of comparison to Resolvers, but > >>> the > >>>>> whole approach looks wrong and for now it is better to get rid of it > >>>> while > >>>>> we have a chance to break compatibility. > >>>>> > >>>>> Sergi > >>>>> > >>>>> 2017-04-07 9:19 GMT+03:00 Valentin Kulichenko < > >>>>> valentin.kuliche...@gmail.com>: > >>>>> > >>>>>> The discussion should've been started with that :) If supporting > >>>> resolvers > >>>>>> in new architecture is not possible or means too big effort, then > >> it's > >>>>>> definitely not worth it. > >>>>>> > >>>>>> -Val > >>>>>> > >>>>>> On Thu, Apr 6, 2017 at 8:52 PM, Vladimir Ozerov < > >> voze...@gridgain.com > >>>> > >>>>>> wrote: > >>>>>> > >>>>>>> Dima, > >>>>>>> > >>>>>>> Yes, they may explode some internals of our indexes. > >>>>>>> > >>>>>>> 06 апр. 2017 г. 23:32 пользователь "Dmitriy Setrakyan" < > >>>>>>> dsetrak...@apache.org> написал: > >>>>>>> > >>>>>>>> Guys, > >>>>>>>> > >>>>>>>> Isn't the main issue here that we cannot use the Identity > >>> Resolvers > >>>> in > >>>>>>>> BTrees in the 2.0 version? If yes, then we have to remove them > >> no > >>>>>> matter > >>>>>>>> what. > >>>>>>>> > >>>>>>>> D. > >>>>>>>> > >>>>>>>> On Thu, Apr 6, 2017 at 1:23 PM, Sergi Vladykin < > >>>>>> sergi.vlady...@gmail.com > >>>>>>>> > >>>>>>>> wrote: > >>>>>>>> > >>>>>>>>> Binary key representation is stable when we always have equal > >>>>>>> serialized > >>>>>>>>> bytes when the original keys are equal. > >>>>>>>>> > >>>>>>>>> Resolver allows you to have some extra info in the Key and > >> equal > >>>>>> Keys > >>>>>>>> will > >>>>>>>>> be serialized into different bytes, which is wrong. > >>>>>>>>> > >>>>>>>>> Look at the example what you can do with resolvers: > >>>>>>>>> > >>>>>>>>> We may have some data entry with fields a, b, c. Let's say the > >>>>>> unique > >>>>>>>> part > >>>>>>>>> here is `a` and it the only fields used in Key equals() and > >>>>>> hashCode(). > >>>>>>>>> Still we may have the following layouts: > >>>>>>>>> > >>>>>>>>> 1. Ka -> Vbc > >>>>>>>>> 2. Kab -> Vc > >>>>>>>>> 3. Kabc -> Boolean.TRUE > >>>>>>>>> > >>>>>>>>> The only 1 is a correct layout, others are plain wrong > >> variants > >>>> (but > >>>>>>> they > >>>>>>>>> are still possible with Resolvers) because everything that > >> does > >>>> not > >>>>>>> make > >>>>>>>>> Key unique must be in Value. > >>>>>>>>> > >>>>>>>>> We want to clearly state that if you have something in Key, > >> that > >>>> is > >>>>>> not > >>>>>>>>> part of equals(), then the Key is invalid and that stuff must > >> be > >>>> in > >>>>>>>> Value. > >>>>>>>>> This allows us to rely on binary representation of a Key to be > >>>>>> stable > >>>>>>> and > >>>>>>>>> have some more optimizations and code simplifications with > >>> respect > >>>>>> to > >>>>>>>> these > >>>>>>>>> assumptions. > >>>>>>>>> > >>>>>>>>> Sergi > >>>>>>>>> > >>>>>>>>> 2017-04-06 14:24 GMT+03:00 Valentin Kulichenko < > >>>>>>>>> valentin.kuliche...@gmail.com>: > >>>>>>>>> > >>>>>>>>>> Even with my vast expirience I would never claim that I've > >>> seen > >>>>>>>>>> "everything" :) > >>>>>>>>>> > >>>>>>>>>> What do you mean by stable binary key representation and how > >>>>>>> resolvers > >>>>>>>>> make > >>>>>>>>>> it unstable? > >>>>>>>>>> > >>>>>>>>>> -Val > >>>>>>>>>> > >>>>>>>>>> On Thu, Apr 6, 2017 at 2:36 AM, Sergi Vladykin < > >>>>>>>> sergi.vlady...@gmail.com > >>>>>>>>>> > >>>>>>>>>> wrote: > >>>>>>>>>> > >>>>>>>>>>> Val, > >>>>>>>>>>> > >>>>>>>>>>> I know that you have really vast experience in Ignite > >>>>>> deployments > >>>>>>> and > >>>>>>>>>>> probably saw everything that can happen. Did you ever see > >>>>>> identity > >>>>>>>>>>> resolvers use in real life? I guess no. > >>>>>>>>>>> > >>>>>>>>>>> Hibernate example is bad here, because if their key is > >>>> unstable > >>>>>>>> across > >>>>>>>>>>> multiple JVMs, it means that it was not designed for > >>>> distributed > >>>>>>>>> caches a > >>>>>>>>>>> priori. > >>>>>>>>>>> > >>>>>>>>>>> Also knowing in advance about stable binary key > >>> representation > >>>>>>> allows > >>>>>>>>> us > >>>>>>>>>> to > >>>>>>>>>>> apply additional optimizations, like comparing keys > >> without > >>>>>>> detaching > >>>>>>>>>> them > >>>>>>>>>>> from offheap memory. > >>>>>>>>>>> > >>>>>>>>>>> We always will be able to add this stuff back if we see > >>> users > >>>>>>> really > >>>>>>>>> need > >>>>>>>>>>> it. Let's remove it for 2.0. > >>>>>>>>>>> > >>>>>>>>>>> Sergi > >>>>>>>>>>> > >>>>>>>>>>> 2017-04-06 11:21 GMT+03:00 Valentin Kulichenko < > >>>>>>>>>>> valentin.kuliche...@gmail.com>: > >>>>>>>>>>> > >>>>>>>>>>>> Alex, > >>>>>>>>>>>> > >>>>>>>>>>>> To be honest, I don't understand the reasoning behind > >> the > >>>>>>> removal. > >>>>>>>> I > >>>>>>>>>>> think > >>>>>>>>>>>> resolvers provide good flexibility for different corner > >>>> cases > >>>>>> and > >>>>>>>>> it's > >>>>>>>>>> a > >>>>>>>>>>>> good thing to have them. Note that they can be applied > >> not > >>>>>> only > >>>>>>> to > >>>>>>>>>> cache > >>>>>>>>>>>> keys, but to any binary objects. > >>>>>>>>>>>> > >>>>>>>>>>>> Hibernate issue is actually a good example of such use > >>> case. > >>>>>> The > >>>>>>>> fact > >>>>>>>>>>> that > >>>>>>>>>>>> we found an alternative solution doesn't actually mean > >>>>>> anything, > >>>>>>>>>> because > >>>>>>>>>>>> what if this happened not in our module, but in user's > >>>>>>> application? > >>>>>>>>>>>> Unfortunately, we can't predict everything. > >>>>>>>>>>>> > >>>>>>>>>>>> Error proneness is not a very strong argument either, > >>>> because > >>>>>> in > >>>>>>> my > >>>>>>>>>> view > >>>>>>>>>>>> these resolvers are as much error prone as > >> BinaryIdMapper, > >>>> for > >>>>>>>>> example. > >>>>>>>>>>>> > >>>>>>>>>>>> -Val > >>>>>>>>>>>> > >>>>>>>>>>>> On Wed, Apr 5, 2017 at 11:44 PM, Alexey Goncharuk < > >>>>>>>>>>>> alexey.goncha...@gmail.com> wrote: > >>>>>>>>>>>> > >>>>>>>>>>>>> Denis, > >>>>>>>>>>>>> > >>>>>>>>>>>>> Can you suggest a use-case where identity resolver is > >>>> needed > >>>>>>>> (given > >>>>>>>>>>> that > >>>>>>>>>>>> we > >>>>>>>>>>>>> agree that a key must contain only valuable fields)? > >>>>>>>>>>>>> > >>>>>>>>>>>>> 2017-04-05 22:08 GMT+03:00 Denis Magda < > >>> dma...@apache.org > >>>>> : > >>>>>>>>>>>>> > >>>>>>>>>>>>>> Where do you want to remove the identity resolvers > >>> from? > >>>>>> If > >>>>>>>> it’s > >>>>>>>>>>>> related > >>>>>>>>>>>>>> to the internals of Hibernate module then it’s fine > >>> but > >>>> if > >>>>>>> you > >>>>>>>>>>> suggest > >>>>>>>>>>>>>> removing identity resolvers public interfaces then > >> it > >>>>>> might > >>>>>>> be > >>>>>>>> a > >>>>>>>>>>> haste > >>>>>>>>>>>>>> decision. > >>>>>>>>>>>>>> > >>>>>>>>>>>>>> — > >>>>>>>>>>>>>> Denis > >>>>>>>>>>>>>> > >>>>>>>>>>>>>>> On Apr 5, 2017, at 7:42 AM, Alexey Goncharuk < > >>>>>>>>>>>>> alexey.goncha...@gmail.com> > >>>>>>>>>>>>>> wrote: > >>>>>>>>>>>>>>> > >>>>>>>>>>>>>>> +1, I see no other reasons to keep it. > >>>>>>>>>>>>>>> > >>>>>>>>>>>>>>> 2017-04-05 13:59 GMT+03:00 Sergi Vladykin < > >>>>>>>>>>> sergi.vlady...@gmail.com > >>>>>>>>>>>>> : > >>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>> +1 > >>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>> Lets drop them. > >>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>> Sergi > >>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>> 2017-04-05 13:50 GMT+03:00 Dmitriy Govorukhin < > >>>>>>>>>>>>>>>> dmitriy.govoruk...@gmail.com> > >>>>>>>>>>>>>>>> : > >>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>> Hi guys, i implemented proxy for IgniteCache in > >>>>>> hibernate > >>>>>>>>>>>>> integration, > >>>>>>>>>>>>>>>> this > >>>>>>>>>>>>>>>>> proxy transformate cacheKey to our key wrapper, > >>>> leaves > >>>>>>> only > >>>>>>>>>>>> required > >>>>>>>>>>>>>>>>> field. I think we can remove identity resolve, > >> it > >>>>>> should > >>>>>>>> not > >>>>>>>>>>> broke > >>>>>>>>>>>>>>>>> integration with hibernate. Any objections? > >>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>> On Wed, Mar 29, 2017 at 11:07 PM, Valentin > >>>> Kulichenko > >>>>>> < > >>>>>>>>>>>>>>>>> valentin.kuliche...@gmail.com> wrote: > >>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>> I'm not saying there is no alternative > >> solution. > >>>> But > >>>>>>> let's > >>>>>>>>>>>> implement > >>>>>>>>>>>>>> it > >>>>>>>>>>>>>>>>> and > >>>>>>>>>>>>>>>>>> prove that it works first, and remove resolvers > >>>> only > >>>>>>> after > >>>>>>>>>> that. > >>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>> -Val > >>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>> On Wed, Mar 29, 2017 at 12:18 PM, Sergi > >> Vladykin > >>> < > >>>>>>>>>>>>>>>>> sergi.vlady...@gmail.com > >>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>> wrote: > >>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>> Guys, nothing is impossible if you know a bit > >>>> about > >>>>>>>>>> reflection > >>>>>>>>>>> in > >>>>>>>>>>>>>>>> Java > >>>>>>>>>>>>>>>>> :) > >>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>> We had a look at the CacheKey class and it is > >>>> easily > >>>>>>>>>>> replaceable. > >>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>> Sergi > >>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>> 2017-03-29 21:49 GMT+03:00 Dmitriy Setrakyan < > >>>>>>>>>>>>> dsetrak...@apache.org > >>>>>>>>>>>>>>>>> : > >>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>>> On Wed, Mar 29, 2017 at 11:43 AM, Valentin > >>>>>> Kulichenko > >>>>>>> < > >>>>>>>>>>>>>>>>>>>> valentin.kuliche...@gmail.com> wrote: > >>>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>>>> "Hibernate key" is the CacheKey class I was > >>>>>> referring > >>>>>>>> to. > >>>>>>>>>>> It's > >>>>>>>>>>>>>>>>>> provided > >>>>>>>>>>>>>>>>>>>> by > >>>>>>>>>>>>>>>>>>>>> Hibernate, not by user and not by us. So I'm > >>> not > >>>>>> sure > >>>>>>>>> it's > >>>>>>>>>>>>>>>> possible > >>>>>>>>>>>>>>>>>> to > >>>>>>>>>>>>>>>>>>>>> replace it. > >>>>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>>> If it is impossible to replace or get rid of > >>> the > >>>>>>>> Hibernate > >>>>>>>>>>> key, > >>>>>>>>>>>> is > >>>>>>>>>>>>>>>>> this > >>>>>>>>>>>>>>>>>>>> discussion valid at all? > >>>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>> > >>>>>>>>>>>>>> > >>>>>>>>>>>>>> > >>>>>>>>>>>>> > >>>>>>>>>>>> > >>>>>>>>>>> > >>>>>>>>>> > >>>>>>>>> > >>>>>>>> > >>>>>>> > >>>>>> > >>>>> > >>>>> > >>>> > >>> > >> > >