Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Code Block
languagejava
IgniteFuture fut = cache.putAsync(1, 1);
fut.listen(f -> {
    // Executes on Striped pool and causes a deadlockdeadlocks.
    cache.replace(1, 2);
});

Users are supposed to be aware of this and handle it manually, however:

...

Code Block
languagec#
await cache.PutAsync(1, 1);
// Now we are on a Striped pool thread!

// 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.

...