As for JdbcPojoStore it has an option to configure "hasher". On Thu, Mar 24, 2016 at 5:20 PM, Denis Magda <dma...@gridgain.com> wrote:
> +1 for the improvement of JavaDoc because the problem arises only when > BinaryObjects are used as keys. > Readme.io already has a warning regarding this > > https://apacheignite.readme.io/docs/binary-marshaller#modifying-binary-objects-using-binaryobjectbuilder > > -- > Denis > > > On 3/24/2016 12:38 PM, Vladimir Ozerov wrote: > >> When object has been built, there is no way to know, whether hash code was >> set or not. Zero could be real hash code, as well as not set hash code. >> >> Random is not an option. Any kind of automatic generation is not an option >> as well, because we do not know, how hash code of real class instance is >> calculated. >> >> I honestly do not see a big problem here. We can simply improve JavaDocs. >> >> It could be a problem in some specific cases, like JDBC store. This >> situation require the same solution as already mentioned problems with >> equals and comparators. >> >> Vladimir. >> 24 марта 2016 г. 11:52 пользователь "Yakov Zhdanov" <yzhda...@apache.org> >> написал: >> >> Random hash code is not an option. >>> >>> I would suggest cache throws exception on update if binary object created >>> with builder does not have hash code initialized. >>> >>> Vladimir, can we somehow make it possible to know whether hash code was >>> or >>> was not inited on a binary object? >>> >>> --Yakov >>> >>> 2016-03-24 11:43 GMT+03:00 Anton Vinogradov <avinogra...@gridgain.com>: >>> >>> Hello, >>>> >>>> I found that every BinaryObject created by BinaryObjectBuilder has >>>> >>> hashcode >>> >>>> == 0 by default. >>>> This can cause situation that all objects created by code similar to: >>>> >>>> *BinaryObject key = builder.setField("id", i).build();* >>>> *streamer.addData(key, key);* >>>> >>>> will be stored at one partition and this cause grid performance drop. >>>> >>>> Of course user can set hashcode: >>>> >>>> *BinaryObject key = builder.setField("id", >>>> >>> i).hashCode(random()).build();* >>> >>>> but there is no guarantee that he will. >>>> >>>> I propose to generate random hashcode or hashcode based on field's >>>> hashcodes in case no hashcode set or to warn user somehow that he have >>>> to >>>> specify it. >>>> >>>> Thoughts? >>>> >>>> > -- Alexey Kuznetsov GridGain Systems www.gridgain.com