Igniters,

I propose to add a configurable async continuation executor for public APIs
to Ignite 3
like we have in Ignite 2.x [1]

In short, currently, async APIs return a future to the user code.
Continuations like "myCode" in "table.getAsync().thenApply(myCode)" will be
executed by the same thread that completes the future, which will be a
Netty thread or some other Ignite thread.

This is dangerous because user code can be blocking or long-running, and
system threads become unavailable.

Proposal:
1. Add asyncContinuationExecutor configuration property, defaults to
ForkJoinPool#commonPool - both for server and thin client
2. Use this executor to complete all public API futures

This means safe default behavior and a possibility to enable unsafe but
faster behavior with Runnable::run executor.

Thoughts?


[1]
https://cwiki.apache.org/confluence/display/IGNITE/IEP-70%3A+Async+Continuation+Executor

Reply via email to