ignite-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Vladimir Ozerov <voze...@gridgain.com>
Subject Re: All BinaryObjects created by BinaryObjectBuilder stored at the same partition by default
Date Thu, 24 Mar 2016 09:38:51 GMT
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" <yzhdanov@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 <avinogradov@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?
> >
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message