Ivan, thank you. I started wrote same test today)

пт, 25 янв. 2019 г. в 10:16, Павлухин Иван <vololo...@gmail.com>:

> Pavel,
>
> Initially I meant Java thick client. And I see the difference between
> thin and thick Java clients. As was already mentioned thin Java client
> behaves in way like each cache is enforced to not unwrap binary
> objects (withKeepBinary()). You can see a test demonstrating current
> behavior [1].
>
> [1] https://gist.github.com/pavlukhin/2c76d11cde5243a73f01019cdd15d243
>
> чт, 24 янв. 2019 г. в 23:01, Pavel Tupitsyn <ptupit...@apache.org>:
> >
> > Ivan,
> >
> > There is no inconsistency between thick and thin clients.
> > All of them work with caches in binary mode, see ClientCacheRequest
> (thin)
> > and PlatformCache (thick) classes.
> >
> > On Thu, Jan 24, 2019 at 10:26 PM Ivan Pavlukhina <vololo...@gmail.com>
> > wrote:
> >
> > > Sergey,
> > >
> > > There are couple of things which should be addressed:
> > > 1. Unnecessary deserialization.
> > > 2. Inconsistent behavior.
> > > 3. Unclear documentation.
> > >
> > > Deserialization is not free and in my mind should be avoided where
> > > possible. I think that if some feature (like interceptors) requires
> > > deserialization then it should be enabled explicitly and an impact
> should
> > > be clear to user. I can imagine a toggle “withAllowedDeserialization”.
> > >
> > > If there is an inconsistency between thick and thin clients it should
> be
> > > eliminated. I do not see a reason why behavior should be different.
> > >
> > > If something is a good thing but it is not intuitive it could be
> > > documented. But if there is s really good reason for it. Otherwise
> > > simplicity and consistency are better alias.
> > >
> > > > On 24 Jan 2019, at 17:42, Sergey Antonov <antonovserge...@gmail.com>
> > > wrote:
> > > >
> > > > I think it's bad idea. This contract nowhere defined and it's not
> clear
> > > for
> > > > users.
> > > >
> > > > чт, 24 янв. 2019 г. в 17:18, Pavel Tupitsyn <ptupit...@apache.org>:
> > > >
> > > >> Yes
> > > >>
> > > >> On Thu, Jan 24, 2019 at 5:15 PM Sergey Antonov <
> > > antonovserge...@gmail.com>
> > > >> wrote:
> > > >>
> > > >>> 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 <ptupit...@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 <
> > > >>> antonovserge...@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 <
> ptupit...@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 <
> > > >>>>> antonovserge...@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 <
> > > >> ptupit...@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 <
> > > >>>>>>> antonovserge...@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 <
> > > >>>>>> antonovserge...@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
> > > >>>
> > > >>
> > > >
> > > >
> > > > --
> > > > BR, Sergey Antonov
> > >
>
>
>
> --
> Best regards,
> Ivan Pavlukhin
>


-- 
BR, Sergey Antonov

Reply via email to