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: [email protected]
> To: [email protected]
> 
> 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
                                          

Reply via email to