THIS IS A TEST INSTANCE. ALL YOUR CHANGES WILL BE LOST!!!!
...
Table of Contents |
---|
Cache and Compute async operations invoke the future listeners on Ignite thread pools, such as Public pool and Striped pool threads:
Code Block | ||
---|---|---|
| ||
IgniteFuture fut = cache.putAsync(1, 1); fut.listen(f -> { // Executes on Striped pool and causes a deadlock cache.replace(1, 2); }); |
...
Code Block | ||
---|---|---|
| ||
await cache.PutAsync(1, 1); // Now we are on a Striped pool! // CPU-heavy method blocks the stripe and cache ops are stalled RunSomething(); |
A similar problem exists for Compute. Async operation continuations are executed on the Public pool, which can lead to starvation there when all threads are taken up by continuation logic.
...