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