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