Continuations is not very good idea. It is useful if user has simple logic when one job calls another from within the same execute/run/call method. But if you have complex logic with OOP abstractions and reusable components, nested job call can be located many stack frames down from parent job. In this case continuations are unusable.
More convenient approach is to map separate jobs to separate thread pools. This technique is successfully employed in Hazelcast. You just define additional executors and say that job A is to be executed one thread pool, and job B on another. The same technique is applicable for services: class MyService implements Service { @IgniteInstanceResource Ignite ignite; void myMethod() { ignite.service().withExecutor("myExecutor").service("myService").nestedCall(); } } All in all I would do the following: 1) Create separate built-in pool for services to make sure that in simple cases users are able to call compute jobs from service methods. 2) Implement custom executors which will be applicable for both compute [1] and service components. [1] https://issues.apache.org/jira/browse/IGNITE-4699 08 марта 2017 г. 23:01 пользователь "Dmitriy Setrakyan" < dsetrak...@apache.org> написал: > On Wed, Mar 8, 2017 at 11:58 AM, Valentin Kulichenko < > valentin.kuliche...@gmail.com> wrote: > > > Separate thread pool will not solve the case of calling a service from > > another service. > > > > Why not? The caller thread should block. >