Vova, Agree, I already merged IGNITE-4802.
However, I'm still interested why we always switch to another thread when executing a job locally. Does anyone have an idea why we do this? -Val On Sat, Mar 25, 2017 at 7:22 AM, Vladimir Ozerov <voze...@gridgain.com> wrote: > Valya, > > I don't think it will resolve all the cases. For example, what if I execute > remote job from another job? "Remoteness" could be caused by job natire > (broadcast), specific cluster group, or affinity call/run on remote key. > Also starvation is possible not only on local node, but between nodes, and > in this case separate pool is the only reliable solution. > > On Sat, Mar 25, 2017 at 1:50 AM, Valentin Kulichenko < > valentin.kuliche...@gmail.com> wrote: > > > Folks, > > > > I tend to think that a separate pool for services is not right solution. > > > > We currently execute any new compute job in a separate thread, even if > > we're already in the public pool (see code in > > GridJobProcessor#processJobExecuteRequest). What is the reason for this? > > When a job synchronously executes another job on the same node, can we > just > > execute it in the same thread? This seems to fix all starvation issues > > discussed in this thread. > > > > Am I missing something? > > > > -Val > > > > On Thu, Mar 9, 2017 at 2:32 AM, Valentin Kulichenko < > > valentin.kuliche...@gmail.com> wrote: > > > > > OK, I created it: https://issues.apache.org/jira/browse/IGNITE-4802 > > > > > > -Val > > > > > > On Thu, Mar 9, 2017 at 9:58 AM, Vladimir Ozerov <voze...@gridgain.com> > > > wrote: > > > > > >> Valya, > > >> > > >> Not yet. > > >> > > >> On Thu, Mar 9, 2017 at 11:50 AM, Valentin Kulichenko < > > >> valentin.kuliche...@gmail.com> wrote: > > >> > > >> > Vladimir, > > >> > > > >> > This makes sense to me. Is there a ticket for separate thread pool > for > > >> > services? > > >> > > > >> > -Val > > >> > > > >> > On Thu, Mar 9, 2017 at 2:52 AM, Dmitriy Setrakyan < > > >> dsetrak...@apache.org> > > >> > wrote: > > >> > > > >> > > Vladimr, it sounds like what you are suggesting is allowing users > > >> specify > > >> > > named executors in configuration and then use them from code, > > right? I > > >> > > think I like this idea very much. > > >> > > > > >> > > On Wed, Mar 8, 2017 at 1:46 PM, Vladimir Ozerov < > > voze...@gridgain.com > > >> > > > >> > > wrote: > > >> > > > > >> > > > 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. > > >> > > > > > > >> > > > > > >> > > > > >> > > > >> > > > > > > > > >