There is a technique we already use to see if a field is initialized by application code. By default a field has to be a reference to a predefined object and the reference comparison (not equals) is used to check if the field is initialized by the user.
Refer to IgniteConfiguration.failureDetectionTimeout and IgniteSpiAdapter.initializeFailureDetectionTimeout for more details. — Denis > On Aug 2, 2016, at 12:14 AM, Alexander Paschenko > <alexander.a.pasche...@gmail.com> wrote: > > Dmitriy, > > Good point, however, currently there's no way to distinguish hash code > of zero which is a valid case from missing hash code. We probably > should enhance binary builder for it to handle this case. > > - Alex > > 2016-08-02 9:47 GMT+03:00 Dmitriy Setrakyan <dsetrak...@apache.org>: >> On Mon, Aug 1, 2016 at 11:38 PM, Vladimir Ozerov <voze...@gridgain.com> >> wrote: >> >>> Andrey, >>> >>> The question is when to print this warning. I doubt we can print a warning >>> when calling *BinaryObjectBuilder.build() *method, because an object >>> without a hash code is normal situation. >>> >>> >> I would not only print warning, but throw exception, if an object without a >> hashCode ends up on a put or read operation in cache. >> >> >>> On Tue, Aug 2, 2016 at 9:00 AM, Andrey Gura <ag...@gridgain.com> wrote: >>> >>>> I think we also should print some warning in case when hashCode() wasn't >>>> called on BinaryObject explicitly. >>>> >>>> On Tue, Aug 2, 2016 at 2:20 AM, Dmitriy Setrakyan <dsetrak...@apache.org >>>> >>>> wrote: >>>> >>>>> On Mon, Aug 1, 2016 at 10:01 AM, Alexey Goncharuk < >>>>> alexey.goncha...@gmail.com> wrote: >>>>> >>>>>> Dmitriy, >>>>>> >>>>>> The question is how do you calculate the value of the hashCode? Do >>> you >>>>> want >>>>>> it to be specified explicitly in INSERT statement? >>>>>> >>>>> >>>>> I think optionally we should allow to specify hashCode as part of the >>>>> INSERT statement. However, if it is not specified, we should calculate >>> it >>>>> automatically based in the key fields defined in the schema/type. >>> Agree? >>>>> >>>>> >>>>>> >>>>>> 2016-08-01 19:47 GMT+03:00 Dmitriy Setrakyan <dsetrak...@apache.org >>>> : >>>>>> >>>>>>> Alex, >>>>>>> >>>>>>> In your case, why not just explicitly set hashcode every time you >>>>> create >>>>>> an >>>>>>> object? There is BinaryObjectBuilder.hashCode(...) method. >>>>>>> >>>>>>> D. >>>>>>> >>>>>>> On Mon, Aug 1, 2016 at 7:42 AM, al.psc < >>>>> alexander.a.pasche...@gmail.com> >>>>>>> wrote: >>>>>>> >>>>>>>> Guys, >>>>>>>> >>>>>>>> It seems like this problem has become an important one once >>> again. >>>>>>>> In the course of working on >>>>>>>> https://issues.apache.org/jira/browse/IGNITE-2294 (DML support) >>>>>> there's >>>>>>>> need >>>>>>>> to support binary marshaller. And, although we can build just >>>>>>> BinaryObject >>>>>>>> and put it to cache, without adequate hash code it won't be >>> stored >>>>>>>> properly. >>>>>>>> Currently SQL MERGE works simply by deserializing newly built >>>> object, >>>>>> but >>>>>>>> it's obviously wrong and is just a workaround rather a solution. >>>>>>>> Has anyone come with possible design proposals for this problem's >>>>>>> solution? >>>>>>>> >>>>>>>> Thanks. >>>>>>>> >>>>>>>> - Alex >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> -- >>>>>>>> View this message in context: >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> http://apache-ignite-developers.2346864.n4.nabble.com/All-BinaryObjects-created-by-BinaryObjectBuilder-stored-at-the-same-partition-by-default-tp8042p10304.html >>>>>>>> Sent from the Apache Ignite Developers mailing list archive at >>>>>>> Nabble.com. >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>>> >>>> >>>> -- >>>> Andrey Gura >>>> GridGain Systems, Inc. >>>> www.gridgain.com >>>> >>>