You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@ignite.apache.org by "ASF GitHub Bot (JIRA)" <ji...@apache.org> on 2017/06/03 13:46:04 UTC
[jira] [Commented] (IGNITE-4477) Fix IgniteFuture.listen() and
IgniteFuture.chain() semantics
[ https://issues.apache.org/jira/browse/IGNITE-4477?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16035968#comment-16035968 ]
ASF GitHub Bot commented on IGNITE-4477:
----------------------------------------
Github user asfgit closed the pull request at:
https://github.com/apache/ignite/pull/1844
> Fix IgniteFuture.listen() and IgniteFuture.chain() semantics
> ------------------------------------------------------------
>
> Key: IGNITE-4477
> URL: https://issues.apache.org/jira/browse/IGNITE-4477
> Project: Ignite
> Issue Type: Task
> Components: general
> Affects Versions: 1.8
> Reporter: Vladimir Ozerov
> Assignee: Dmitry Karachentsev
> Labels: important
> Fix For: 2.1
>
>
> *Problem*
> We allow users to pass continuations to {{IgniteFuture}} which will be executed on future completion. This can be done through {{listen}} or {{chain}} methods.
> However, continuation semantics is broken intrinsically:
> 1) If future is already completed, user code executed in the same thread;
> 2) If future is not completed yet, it will be executed in completion thread.
> Neither of this options are valid because it easily leads to starvation. E.g.:
> {code}
> IgniteFuture fut = cache.getAsync(key2);
> fut.listen(fut0 -> {
> cache.put(key2, val2); // Possible deadlock, because invoked in sys pool;
> });
> {code}
> *Solution*
> 1) By default callbacks must be executed asynchronously in some common pool (public pool? new "callback pool"? FJP?)
> 2) It should be possible to specify where to execute a callback explicitly:
> {code}
> IgniteFuture.listen(IgniteClosure, ExecutorService);
> {code}
> 3) We may want to expose our public pool on API for convenience.
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)