Calling ComputeJobContinuation.callcc() on a thread not managed by Ignite

classic Classic list List threaded Threaded
3 messages Options
Kamil Mišúth Kamil Mišúth
Reply | Threaded
Open this post in threaded view
|

Calling ComputeJobContinuation.callcc() on a thread not managed by Ignite

Hi,

is it OK to call ComputeJobContinuation.callcc()[1] on a thread not
managed by Ignite?

Let's say I have a computation modeled as a continuation. It does a
bunch of getAsyncs and putAsyncs from various caches observing the
holdcc and callcc protocol.
As the computation's final step, I want to make a REST call via one of
the non-blocking REST clients.
I want to complete the Job execution only after the non-blocking REST
client call completed (with or without error - it does not matter).
In such a scenario I would call callcc() in some "onComplete()" callback
of the non-blocking REST client.
The non-blocking REST client is say Netty based and comes with its own
thread pool.
I will store a reference to ComputeJobContext and leak it to the Netty's
thread which would execute then execute callcc() in onComplete()
callback.

Is this OK to do or are there any pitfalls?


Kamil Mišúth

[1]
https://ignite.apache.org/releases/latest/javadoc/org/apache/ignite/compute/ComputeJobContinuation.html#callcc--
ilya.kasnacheev ilya.kasnacheev
Reply | Threaded
Open this post in threaded view
|

Re: Calling ComputeJobContinuation.callcc() on a thread not managed by Ignite

Hello!

I can see that it gets called all the time from non-ignite threads (from Timer) in Ignite tests. Should probably be OK.

Regards,
--
Ilya Kasnacheev


вт, 4 дек. 2018 г. в 18:03, kimec.ethome.sk <[hidden email]>:
Hi,

is it OK to call ComputeJobContinuation.callcc()[1] on a thread not
managed by Ignite?

Let's say I have a computation modeled as a continuation. It does a
bunch of getAsyncs and putAsyncs from various caches observing the
holdcc and callcc protocol.
As the computation's final step, I want to make a REST call via one of
the non-blocking REST clients.
I want to complete the Job execution only after the non-blocking REST
client call completed (with or without error - it does not matter).
In such a scenario I would call callcc() in some "onComplete()" callback
of the non-blocking REST client.
The non-blocking REST client is say Netty based and comes with its own
thread pool.
I will store a reference to ComputeJobContext and leak it to the Netty's
thread which would execute then execute callcc() in onComplete()
callback.

Is this OK to do or are there any pitfalls?


Kamil Mišúth

[1]
https://ignite.apache.org/releases/latest/javadoc/org/apache/ignite/compute/ComputeJobContinuation.html#callcc--
Kamil Mišúth Kamil Mišúth
Reply | Threaded
Open this post in threaded view
|

Re: Calling ComputeJobContinuation.callcc() on a thread not managed by Ignite

Hi Ilya,

many thanks for checking it. Will have a look at the tests for reference.

Kamil Mišúth


Dňa 4. decembra 2018 18:05:47 SEČ používateľ Ilya Kasnacheev <[hidden email]> napísal:
Hello!

I can see that it gets called all the time from non-ignite threads (from Timer) in Ignite tests. Should probably be OK.

Regards,
--
Ilya Kasnacheev


вт, 4 дек. 2018 г. в 18:03, kimec.ethome.sk <[hidden email]>:
Hi,

is it OK to call ComputeJobContinuation.callcc()[1] on a thread not
managed by Ignite?

Let's say I have a computation modeled as a continuation. It does a
bunch of getAsyncs and putAsyncs from various caches observing the
holdcc and callcc protocol.
As the computation's final step, I want to make a REST call via one of
the non-blocking REST clients.
I want to complete the Job execution only after the non-blocking REST
client call completed (with or without error - it does not matter).
In such a scenario I would call callcc() in some "onComplete()" callback
of the non-blocking REST client.
The non-blocking REST client is say Netty based and comes with its own
thread pool.
I will store a reference to ComputeJobContext and leak it to the Netty's
thread which would execute then execute callcc() in onComplete()
callback.

Is this OK to do or are there any pitfalls?


Kamil Mišúth

[1]
https://ignite.apache.org/releases/latest/javadoc/org/apache/ignite/compute/ComputeJobContinuation.html#callcc--