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 14:15:29 GMT
Pavel,

"Leave it as is, use instanceof."
You meant always use CacheInterceptor<Object, Object> and in all methods
check, that passed arguments is BinaryObject?

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

> I don't think we should complicate things. Leave it as is, use instanceof.
> The fact is - you can get anything, BinaryObject or any user class, so be
> prepared.
> Good example of older API is CacheEvent, which actually has oldValue() and
> newValue() as Object.
>
> Igniters, any other thoughts?
>
>
> On Thu, Jan 24, 2019 at 2:16 PM Sergey Antonov <antonovsergey93@gmail.com>
> wrote:
>
> > 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
> >
>


-- 
BR, Sergey Antonov

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