ignite-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Вячеслав Коптилин <slava.kopti...@gmail.com>
Subject Re: IEP-70: Async Continuation Executor
Date Wed, 17 Mar 2021 12:25:41 GMT
Hello Pavel,

I took a look at your IEP and pool request. I have the following concerns.
First of all, this change breaks the contract of IgniteFuture#listen(lsnr)

    /**
     * Registers listener closure to be asynchronously notified whenever
future completes.
     * Closure will be processed in thread that completes this future or
(if future already
     * completed) immediately in current thread.
     *
     * @param lsnr Listener closure to register. Cannot be {@code null}.
     */
    public void listen(IgniteInClosure<? super IgniteFuture<V>> lsnr);

    In your pull request, the listener is always called from a specified
thread pool (which is fork-join by default)
    even though the future is already completed at the moment the listen
method is called.
    In my opinion, this can lead to significant overhead - submission
requires acquiring a lock and notifying a pool thread.

    It seems to me, that we should not change the current behavior.
However, thread pool executor can be added as an optional parameter of
listen() method as follows:

        public void listen(IgniteInClosure<? super IgniteFuture<V>> lsnr,
Executor exec);

Thanks,
S.

пн, 15 мар. 2021 г. в 19:24, Pavel Tupitsyn <ptupitsyn@apache.org>:

> Igniters,
>
> Please review the IEP [1] and let me know your thoughts.
>
> [1]
>
> https://cwiki.apache.org/confluence/display/IGNITE/IEP-70%3A+Async+Continuation+Executor
>

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