Hi Alex,

Do you know if there is any particular reason why we introduced
the ClientException in the first place? Generally, I believe that
consistency is a good thing, but there might be something that we're
missing.

-Val

On Fri, Aug 21, 2020 at 2:33 AM Alex Plehanov <plehanov.a...@gmail.com>
wrote:

> Hello, Igniters!
>
> Since we touched on the subject of consistency across thin/thick APIs in
> thread [1] I would like to continue the discussion here.
>
> Currently, thick and thin APIs look similar but have no common parents. A
> set of ClientCache methods is almost a subset of IgniteCache methods, but
> these interfaces are fully independent. So we can't build common
> abstraction which can work with ClientCache and IgniteCache without code
> duplication. For example, we have ignite-spring-data module, to make it
> thin-client compliant we should copy-paste all cache methods invocations.
>
> It's impossible to make thin and thick interfaces absolutely identical and
> we can't extend one from another since there thick and thin specific
> methods needed, but we can move common methods to the parent interface. But
> here is another problem: exceptions. Thick methods declared as throwing
> IgniteException and IgniteCheckedException, but all thin-client interfaces
> use ClientException. Without common exceptions for thin and thick clients,
> we can't build common parent interface.
>
> Currently, only a small amount of thick interfaces can be fully reused by
> thin-client (Queries, IgniteBinary, ClusterNode)
>
> Also, I would like to discuss JCache support by thin-client. We already use
> some of JCache specification for thin-client, but not fully support JCache.
> For example, we use Cache.Entry for queries and JCache expiration policies
> in public thin-client API (also, some of JCache interfaces are used by the
> internal implementation).
>
> I've tried to implement POC for continuous queries for java thin client,
> but without JCache support 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 have plans to change public API in Ignite 3.0, perhaps it makes sense to
> make thick and thin API consistent. WDYT?
> What about JCache support by thin-client in Ignite 3.0?
> Please, share your thoughts.
>
> [1]:
>
> http://apache-ignite-developers.2346864.n4.nabble.com/IEP-51-Java-Thin-Client-Async-API-td48900.html
>

Reply via email to