ignite-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Sergey Antonov <antonovserge...@gmail.com>
Subject Re: CacheInterceptor ClassCastException in case of cache was updated from thin java client
Date Thu, 24 Jan 2019 11:16:34 GMT
Pavel, how about marker interface DeserializedValueCacheInterceptor? We
will deserialize data and pass it to cache interceptor, if CacheInterceptor
implements marker interface.

чт, 24 янв. 2019 г. в 13:41, Pavel Tupitsyn <ptupitsyn@apache.org>:

> You are exactly right, generic parameters don't make much sense here.
> Ignite caches are not restricted to any type, and there is type erasure in
> Java so you have no runtime guarantees.
>
> Maybe Interceptor design should be improved (e.g. add a flag to force
> binary or non-binary mode),
> but Thin or Thick client connector logic is unrelated here.
> withKeepBinary() call is valid and should not depend on Interceptor
> presence or implementation.
>
> On Thu, Jan 24, 2019 at 1:17 PM Sergey Antonov <antonovsergey93@gmail.com>
> wrote:
>
> > Hi, Pavel,
> >
> > "Interceptor should support both modes, binary or not. Any code can call
> > withKeepBinary(), this should be expected.
> > Just add if (x instanceof BinaryObject) and go from there. "
> > I don't agree. The cache interceptor[1] is a parametrized class and you
> > couldn't pass multiple cache interceptors in cache configuration. So all
> > cache interceptors must have Object, Object parameters for supporting
> both
> > modes: binary and deserialized. In this case parametrized class no sense.
> >
> > [1]
> >
> >
> https://ignite.apache.org/releases/latest/javadoc/org/apache/ignite/cache/CacheInterceptor.html
> >
> > чт, 24 янв. 2019 г. в 13:06, Pavel Tupitsyn <ptupitsyn@apache.org>:
> >
> > > Hi Sergey,
> > >
> > > I don't think this is a bug.
> > >
> > > Thick or thin clients always work in binary mode on server side,
> because
> > > you receive data in serialized form and there is no point in
> > deserializing
> > > it.
> > > Moreover, in most cases you don't have classes on the server, so binary
> > > mode is the only way.
> > >
> > > Interceptor should support both modes, binary or not. Any code can call
> > > withKeepBinary(), this should be expected.
> > > Just add if (x instanceof BinaryObject) and go from there.
> > >
> > > Thanks,
> > > Pavel
> > >
> > > On Thu, Jan 24, 2019 at 12:38 PM Sergey Antonov <
> > antonovsergey93@gmail.com
> > > >
> > > wrote:
> > >
> > > > I did a little investigation. In
> > > o.a.i.i.p.p.c.c.ClientCacheRequest#cache()
> > > > enforced cache with keep binary. Why we should always work binary
> > > objects?
> > > >
> > > > чт, 24 янв. 2019 г. в 12:29, Sergey Antonov <
> antonovsergey93@gmail.com
> > >:
> > > >
> > > > > Hello, Igniters!
> > > > >
> > > > > I have ignite node with configured cache. The cache have cache
> > > > > interceptor. I wiil got ClassCastException on cache interceptor,
> If I
> > > put
> > > > > some entry to the cache (without keepBinary) from thin java client.
> > > > >
> > > > > I think it's a bug. I'd like to find out yours view!
> > > > >
> > > > > Also I made JIRA ticket with reproducer [1].
> > > > >
> > > > > [1] https://issues.apache.org/jira/browse/IGNITE-10789
> > > > >
> > > > > --
> > > > > BR, Sergey Antonov
> > > > >
> > > >
> > > >
> > > > --
> > > > BR, Sergey Antonov
> > > >
> > >
> >
> >
> > --
> > BR, Sergey Antonov
> >
>


-- 
BR, Sergey Antonov

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