ignite-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Valentin Kulichenko <valentin.kuliche...@gmail.com>
Subject Re: CachePojoStore data loading with binary marshaller
Date Wed, 12 Apr 2017 09:11:33 GMT
Yes, that's my thinking as well.

-Val

On Wed, Apr 12, 2017 at 10:59 AM, Dmitriy Govorukhin <
dmitriy.govorukhin@gmail.com> wrote:

> Hi Valentin,
>
> Other word, are you agree with me? My point that we always must use binary
> representation if binary marshaller enable.
>
> On Wed, Apr 12, 2017 at 10:24 AM, Valentin Kulichenko <
> valentin.kulichenko@gmail.com> wrote:
>
> > Hi Dmitry,
> >
> > I can't advise a lot on implementation details, but generally I don't
> think
> > that CacheJdbcPojoStore should ever work with POJO classes in case binary
> > marshaller is enabled. It should always work directly with binary objects
> > even if POJOs are on server classpath, and switch to POJOs only when
> other
> > marshaller is used.
> >
> > Makes sense?
> >
> > -Val
> >
> > On Tue, Apr 11, 2017 at 12:06 PM, Dmitriy Govorukhin <
> > dmitriy.govorukhin@gmail.com> wrote:
> >
> > > Hi all,
> > >
> > > I found problem related to CacheJdbcPojoStore. If try to load data,
> with
> > > enabled binary marshaller,
> > > error may occur. Problem in entryMappings (this map helps resolve
> stored
> > > type when data loading).
> > > If binary marshaller disable we just  put entry with java type in this
> > map,
> > > if enable we put java type + binary type.
> > >
> > > ......
> > >
> > >    checkTypeConfiguration(cacheName, valKind, valType,
> > > type.getValueFields());
> > >
> > >    entryMappings.put(keyTypeId, new EntryMapping(cacheName, dialect,
> > type,
> > > keyKind, valKind, sqlEscapeAll));
> > >
> > >    // Add one more binding to binary typeId for POJOs,
> > >    // because object could be passed to store in binary format.
> > >    if (binarySupported && keyKind == TypeKind.POJO) {
> > >        keyTypeId = typeIdForTypeName(TypeKind.BINARY, keyType);
> > >
> > >        valKind = valKind == TypeKind.POJO ? TypeKind.BINARY : valKind;
> > >
> > >        entryMappings.put(keyTypeId, new EntryMapping(cacheName,
> dialect,
> > > type, TypeKind.BINARY, valKind, sqlEscapeAll));
> > >     }
> > >
> > > .......
> > >
> > >
> > > I think it is wrong, because after we use this map like  iterator for
> > load,
> > > and final result dependent from which mapping will be first java or
> > binary.
> > >
> > > Collection<String> processedKeyTypes = new HashSet<>();
> > >
> > >     for (EntryMapping em : mappings.values()) {
> > >         String keyType = em.keyType();
> > >
> > >         if (processedKeyTypes.contains(keyType))
> > >             continue;
> > >
> > >     processedKeyTypes.add(keyType);
> > >
> > > .....
> > >
> > > I think we must add only binary mapping for user pojo if binary
> > marshaller
> > > enable.
> > >
> >
>

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