You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ignite.apache.org by Vladimir Ozerov <vo...@gridgain.com> on 2017/11/01 08:36:18 UTC

Re: Ignite 2.3: troubles with key-value APIs in the cluster configured with DDL

Denis,

See my comment in the ticket. It is a problem with scripts, not with engine.

On Sat, Oct 28, 2017 at 12:25 AM, Denis Magda <dm...@apache.org> wrote:

> Vladimir,
>
> With pleasure, here is a ticker with the reproducer:
> https://issues.apache.org/jira/browse/IGNITE-6785
>
> —
> Denis
>
> > On Oct 24, 2017, at 5:57 AM, Vladimir Ozerov <vo...@gridgain.com>
> wrote:
> >
> > Denis,
> >
> > Is it possible to create a test with reproducer? I am a bit lost.
> >
> > On Tue, Oct 24, 2017 at 3:12 AM, Dmitriy Setrakyan <
> dsetrakyan@apache.org>
> > wrote:
> >
> >> It looks like the case sensitivity for the affinity key is a bug.
> Vladimir,
> >> what do you think?
> >>
> >> On Mon, Oct 23, 2017 at 11:19 AM, Denis Magda <dm...@apache.org>
> wrote:
> >>
> >>> Vladimir, thanks a lot for looking into this!
> >>>
> >>>> On Oct 23, 2017, at 12:35 AM, Vladimir Ozerov <vo...@gridgain.com>
> >>> wrote:
> >>>>
> >>>> Denis,
> >>>>
> >>>> Now more detailed answer:
> >>>>
> >>>> 1) It is expected that "City" class is not be found. You should set
> >>>> key/value type names to fully-qualified class name to make it work.
> >>>> Improvements: docs
> >>>
> >>> To make the Class-based key-vakye access and deserialization workable
> did
> >>> the following:
> >>> - follow your piece of advice providing full-qualified names in CREATE
> >>> TABLE;
> >>> - comment out ‘simpleName’ binary names mapper [1].
> >>>
> >>> However, it means that now the heterogeneous scenarios where .NET or
> C++
> >>> key-value access is needed are not supported. Do you have an
> >> understanding
> >>> on how this can be done in the feature releases?
> >>>
> >>>> 2) There is no need to implement hash code. Why did you do this?
> >>>
> >>> That’s a big surprise that we calculate it automatically if a key is
> >>> serialized into the binary form. Will be documented:
> >>> https://issues.apache.org/jira/browse/IGNITE-6717
> >>>
> >>>> 3) We will not have case-insensitive policy, SQL databases doesn't
> work
> >>>> this way. In order to preserve case you should define column name in
> >>> quotes.
> >>>
> >>> Seems that the issue pin points to the affinity key case only:
> >>> - a field is defined as ‘CountryCode’ in DDL [2].
> >>> - in DML it can be used with any letters case - ‘countryCode’,
> >>> ‘countrycode’, etc,
> >>> - BinaryObjectBuild allowed me to define the field as `countryCode` [3]
> >>> w/o any issue.
> >>> - However, once I defined the field in CityKey class as is in DDL
> >>> (`CountryCode`) the following exception was thrown:
> >>>
> >>> Exception in thread "main" class org.apache.ignite.binary.
> >> BinaryObjectException:
> >>> Binary type has different affinity key fields
> >> [typeName=demo.model.CityKey,
> >>> affKeyFieldName1=COUNTRYCODE, affKeyFieldName2=CountryCode]
> >>>
> >>> and I forced to rename the field to `COUNTRYCODE` in CityKey class.
> Seems
> >>> like a bug?
> >>>
> >>>
> >>> [1] https://github.com/dmagda/ignite_world_demo/blob/master/
> >>> config/ignite-config.xml#L43
> >>> [2] https://github.com/dmagda/ignite_world_demo/blob/master/
> >>> ignite_world.sql#L31
> >>> [3] https://github.com/dmagda/ignite_world_demo/blob/master/
> >>> src/main/java/demo/keyvalue/KeyValueDataProcessing.java#L75
> >>> [4] https://github.com/dmagda/ignite_world_demo/blob/master/
> >>> src/main/java/demo/model/CityKey.java#L15
> >>>
> >>> —
> >>> Denis
> >>>
> >>>
> >>>>
> >>>> On Sat, Oct 21, 2017 at 2:34 PM, Vladimir Ozerov <
> vozerov@gridgain.com
> >>>
> >>>> wrote:
> >>>>
> >>>>> Denis,
> >>>>>
> >>>>> SQL <-> key-Val transparency is complex thing, especially if you work
> >>> with
> >>>>> real Java classes instead of binary objects.
> >>>>>
> >>>>> We will try to improve something in 2.4, but do not expect great
> >>> usability
> >>>>> here. There is always be some pain in such scenarios.
> >>>>>
> >>>>> сб, 21 окт. 2017 г. в 9:23, Denis Magda <dm...@apache.org>:
> >>>>>
> >>>>>>
> >>>>>>> On Oct 20, 2017, at 3:56 PM, Denis Magda <dm...@apache.org>
> wrote:
> >>>>>>>
> >>>>>>> * failed to deserialize BinaryObject value to City type [7]. Just
> >>>>>> classical "class org.apache.ignite.binary.
> >> BinaryInvalidTypeException:
> >>>>>> City" caused by "Caused by: java.lang.ClassNotFoundException:
> City”.
> >>>>>>
> >>>>>>
> >>>>>> Recalled that this should be caused by the fact that all the data
> was
> >>>>>> inserted with DML (cache.put(key, BinaryObjects)) and there was no
> >>> single
> >>>>>> cache.put(key, new City()) that would register City class. Guess we
> >>> need to
> >>>>>> add an API that forces classes registration from the app side or
> >>> something
> >>>>>> more efficient.
> >>>>>>
> >>>>>> —
> >>>>>> Denis
> >>>>>
> >>>>>
> >>>
> >>>
> >>
>
>