Excellent idea! +10
PS. Got burnt by this a few times already
    _____________________________
From: Vladimir Ozerov <[email protected]>
Sent: Friday, October 9, 2015 4:22 PM
Subject: Which thread is used to run IgniteFuture continuations?
To:  <[email protected]>


                   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