You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@ignite.apache.org by "Ilya Kasnacheev (JIRA)" <ji...@apache.org> on 2019/08/01 12:39:00 UTC
[jira] [Created] (IGNITE-12033) .Net callbacks from striped pool
due to async/await may hang cluster
Ilya Kasnacheev created IGNITE-12033:
----------------------------------------
Summary: .Net callbacks from striped pool due to async/await may hang cluster
Key: IGNITE-12033
URL: https://issues.apache.org/jira/browse/IGNITE-12033
Project: Ignite
Issue Type: Bug
Components: cache, platforms
Affects Versions: 2.7.5
Reporter: Ilya Kasnacheev
http://apache-ignite-users.70518.x6.nabble.com/Replace-or-Put-after-PutAsync-causes-Ignite-to-hang-td27871.html#a28051
There's a reproducer project. Long story short, .Net can invoke cache operations with future callbacks, which will be invoked from striped pool. If such callbacks are to use cache operations, those will be possibly sheduled to the same stripe and cause a deadlock.
The code is very simple:
{code}
Console.WriteLine("PutAsync");
await cache.PutAsync(1, "Test");
Console.WriteLine("Replace");
cache.Replace(1, "Testing"); // Hangs here
Console.WriteLine("Wait");
await Task.Delay(Timeout.Infinite);
{code}
async/await should absolutely not allow any client code to be run from stripes.
--
This message was sent by Atlassian JIRA
(v7.6.14#76016)