Denis, My use case:
In my legacy database I have table Organization with compound ID: (sbjID; orgID). For Pojo store will be generated key with 2 fields inside: OrganizationKey(int sbjID; int orgID). And store will load this key into cache. Of course usual scenario will be when key is primitive (int or long), but portable also could be a key. And one more case: several types in same cache: for store we should have different key types. On Wed, Oct 28, 2015 at 12:58 PM, Denis Magda <dma...@gridgain.com> wrote: > Sure, makes sense to add a documentation section to PortableObject > describing default implementation of hashCode/equals. > > However, I don’t see any significant reason why the end user needs to use > portable objects as keys. > > — > Denis > > > On 28 окт. 2015 г., at 7:42, Alexey Kuznetsov <akuznet...@gridgain.com> > wrote: > > > > Dmitriy, > > > >>> How about we check that dashcode is not 0 when storing portable keys in > > cache? > > > > And print warning in log? Sounds good for me. > > > > ----- > > > > But I will try to describe once again my concern. > > > > I'm don't know anything about portables. So, I open javadoc and see some > > idiomatic code like this: > > > > builder = ... > > > > for ( fileds) { > > builder.setField(..) > > } > > > > portable = builder.build(); > > > > And I in my PojoStore I do as described. > > > > If there was a NOTE in javadoc about hashCode() it will save 4 hours of > > debug for me :) > > > > > > > > > > On Wed, Oct 28, 2015 at 11:32 AM, Dmitriy Setrakyan < > dsetrak...@apache.org> > > wrote: > > > >> How about we check that dashcode is not 0 when storing portable keys in > >> cache? > >> > >> On Tue, Oct 27, 2015 at 8:42 PM, Alexey Kuznetsov < > akuznet...@gridgain.com > >>> > >> wrote: > >> > >>> Andrey, thanks. > >>> > >>> Actually I use this not well documented method to solve my problem. > >>> > >>> And I'm proposed to at least add more info for PortableBuilder about > this > >>> method. > >>> > >>> On Wed, Oct 28, 2015 at 10:19 AM, Andrey Kornev < > >> andrewkor...@hotmail.com> > >>> wrote: > >>> > >>>> Alexey, > >>>> > >>>> PortableBuilder has an (un-documented) method hashCode(int hashCode) > >> that > >>>> should be used to explicitly set the hashCode for the portable > instance > >>>> being built. I'm not sure why this has been designed this way, but I'm > >>>> guessing that since the PortableBuilder is pretty dumb and it wouldn't > >>> know > >>>> which fields to use for hash code computation (in some cases you'd > only > >>>> want to include specific portable fields rather than all fields). > >>>> > >>>> Regards > >>>> Andrey > >>>> > >>>>> Date: Wed, 28 Oct 2015 09:49:07 +0700 > >>>>> Subject: Portables hash code. > >>>>> From: akuznet...@gridgain.com > >>>>> To: dev@ignite.apache.org > >>>>> > >>>>> Igniters, > >>>>> > >>>>> I'm working on [1] "IGNITE-1753 Rework CacheJdbcPojoStore to new > >> API." > >>>>> > >>>>> And one of subtasks is to support portable objects with JDBC store. > >>>>> > >>>>> I implemented this and during tests found a huge performance drop > >> when > >>> I > >>>>> have PortableObject as key. > >>>>> > >>>>> After some debugging I found that all my portable objects have > >> hashCode > >>>> = 0. > >>>>> I'm using PortableBuilder to build my portable objects. > >>>>> > >>>>> And I expected that PortableBuilder will calculate proper hash code > >> for > >>>> me > >>>>> out of the box. > >>>>> > >>>>> I think we should at least describe in PortableBuilder javadocs that > >> by > >>>>> default PortableBuilder will return zero hashcode? > >>>>> > >>>>> Or we should calculate hashcode in PortableBuilder.build() method? > >>>>> > >>>>> Or may be we could add boolean argument PortableBuilder.build(boolean > >>>>> generateHashCode)? > >>>>> > >>>>> Thoughts? > >>>>> > >>>>> P.S. After I added manual hashcode calculation to my > >> CacheJdbcPojoStore > >>>>> performance drop is gone away. > >>>>> > >>>>> > >>>>> [1] https://issues.apache.org/jira/browse/IGNITE-1753 > >>>>> -- > >>>>> Alexey Kuznetsov > >>>>> GridGain Systems > >>>>> www.gridgain.com > >>>> > >>>> > >>> > >>> > >>> > >>> -- > >>> Alexey Kuznetsov > >>> GridGain Systems > >>> www.gridgain.com > >>> > >> > > > > > > > > -- > > Alexey Kuznetsov > > GridGain Systems > > www.gridgain.com > > -- Alexey Kuznetsov GridGain Systems www.gridgain.com