You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@ignite.apache.org by "Vladimir Ozerov (JIRA)" <ji...@apache.org> on 2017/04/03 07:39:43 UTC

[jira] [Commented] (IGNITE-4699) Introduce custom configurable executors.

    [ https://issues.apache.org/jira/browse/IGNITE-4699?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15953085#comment-15953085 ] 

Vladimir Ozerov commented on IGNITE-4699:
-----------------------------------------

[~sharpler],
There are two main problems which I expect to be covered once ticket is ready:
1) Execution of nested compute calls. In this case you can make decision on per-job basis. Say, if you created a re-usable component, you could do something like:
{code}
compute.withExecutor("component_executor").[run_job]
{code}
And any code on top of this component will be able to use it safely without a risk of deadlock.
2) Execution of chained calls, especially {{IgniteFuture.chain}} and {{IgniteFuture.listen}}. Currently user has no control on where continuation is to be executed, so he can inadvertently run something in public pool, causing exhaustion of public pool threads. Once user has access to predefined executors, he will be able to control this behavior.

Regarding simplicity of configuration, for other thread pools we allow users to configure only number of threads (e.g. {{IgniteConfiguration.publicThreadPoolSize}}. And I am not aware of any complains on insufficient flexibility of this approach. This is why I propose to start with as simple config as possible. We will always be able to extend it in future if needed.

One more important reason why we need to have this feature ready ASAP is 2.0 release, which is expected to happen in April. This feature will require message protocol changes, and hence broke binary compatibility. 

Having said that I'd prefer to go ahead with Taras patch at the moment, while keeping in mind all proposed improvement for future releases. Ideally, it would be cool to materialize them into JIRA tickets, and plan their implementation in AI 2.1 release or so.

> Introduce custom configurable executors.
> ----------------------------------------
>
>                 Key: IGNITE-4699
>                 URL: https://issues.apache.org/jira/browse/IGNITE-4699
>             Project: Ignite
>          Issue Type: Task
>          Components: compute
>            Reporter: Vladimir Ozerov
>            Assignee: Alexander Menshikov
>              Labels: important
>             Fix For: 2.0
>
>
> We need to provide a way to configure custom thread pools for user compute tasks. 
> Proposed API:
> 1) Config
> {code}
> class ExecutorConfiguration {
>     String name;
>     int size;
> }
> {code}
> 2) Choosing executor for compute task:
> {code}
> IgniteCompute compute = Ignite.compute().withExecutor("my_exec");
> {code}
> 3) Accessing raw executor (could be required for proper execution of future listeners):
> {code}
> ThreadPoolExecutor exec = ignite.compute().localExecutor("my_exec");
> {code}



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)