Igniters,

We are missing an ability to specify which thread should run continuation
routine when future is completed.

Currently we either run routine in the callee thread or in completion
thread (usually system pool thread). It means user cannot have any blocking
or cache operations inside the continuation. The code below could surprise
user with either a deadlock or system pool starvation:

final CountDownLatch latch = new CountDownLatch();

Cache cache = ignite.cache().withAsync();
cache.invoke(...);

cache.future().listen(() => {
    latch.await();
    /** Do something useful. */
});

/** Do something else. */
latch.countDown();

Java 8 and Hazelcast already support custom thread pools for continuations.
E.g.:
Hazelcast.CompletableFutureTask.andThen(ExecutionCallback<V> callback,
Executor executor);

Looks like we should allow users to specify optional thread pool in futures
likewise.

Thoughts?

Vladimir.

Reply via email to