Alex,

1. Agree to deal with CacheEntryEvent as explained
2. ClientChannelDisconnectListener - can we have an overload with a
parameter of this type?

ClientCache#query(ContinuousQuery) - compatible with Thick API
ClientCache#query(ContinuousQuery, ClientChannelDisconnectListener) -
specific to Thin, easy to discover

Thoughts?

On Fri, Apr 2, 2021 at 12:02 PM Alex Plehanov <plehanov.a...@gmail.com>
wrote:

> Hello, Atri
>
> 1. ClientChannelDisconnectListener is thin client specific.
> 2. Thick client API uses JCache interfaces, which cannot be modified.
> 2. We can't modify thick client public API either, due to backward
> compatibility.
>
> пт, 2 апр. 2021 г. в 11:51, Atri Sharma <a...@apache.org>:
>
> > Personally, I would disagree with an interface implementation being
> > dictated by the documentation rather than the method signature.
> >
> > How about having a generic interface (placeholder interface), have
> > both the thick and thin clients expose methods using the interface as
> > parameters, then let ClientChannelDisconnectListener actually
> > implement that interface and override the base methods? The methods
> > can be no-op in the thick clients.
> >
> > On Fri, Apr 2, 2021 at 2:04 PM Alex Plehanov <plehanov.a...@gmail.com>
> > wrote:
> > >
> > > Hello, Igniters!
> > >
> > > I'd like to discuss java thin client Continuous Queries public API.
> > >
> > > Currently, the thin client is not JCache compatible and without JCache
> > > compatible cache instance we can't use classes and API which already
> used
> > > by the thick client for cache entry events listening.
> > > In my first attempt to implement thin client CQ I've tried to create
> own
> > CQ
> > > classes and interfaces for thin client, but such API looks weird. On
> the
> > > one hand, we should use CacheEntryEventFilter (JCache interface) since
> > it's
> > > required by the server-side, on the other hand, we can't use
> > > CacheEntryUpdatedListener since it requires CacheEntryEvent which
> > requires
> > > an instance of Cache (JCache interface), which doesn't exist on the
> > > thin-client side.
> > > We've already discussed this problem with Pavel Tupitsyn in ticket [1]
> > and
> > > come to an agreement that the most suitable solution is to implement
> some
> > > private thin-client cache to JCache adapter, but not expose it to
> public
> > > API and don't provide full JCache support by the thin client (see
> > comments
> > > in the ticket for more details). In this case, we can reuse CQ classes
> > and
> > > interfaces and make the API similar to thick-client.
> > >
> > > Another problem: for the thin client we should be able to inform the
> user
> > > about channel failure. I propose to introduce some interface
> > > ClientChannelDisconnectListener and notify about channel failure if
> > > provided CacheEntryListener implements this interface. Unfortunately,
> if
> > we
> > > want to keep thin client API similar to the thick client we can't
> > > explicitly use this interface in methods parameters, so the knowledge
> > that
> > > user can use this interface for cache entry listener can be obtained
> only
> > > from JavaDoc or Ignite documentation.
> > >
> > > Igniters, WDYT?
> > >
> > > Here is PR with implemented proposals [2].
> > >
> > > [1]: https://issues.apache.org/jira/browse/IGNITE-14402
> > > [2]: https://github.com/apache/ignite/pull/8960
> >
> > --
> > Regards,
> >
> > Atri
> > Apache Concerted
> >
>

Reply via email to