ignite-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Ilya Kasnacheev (JIRA)" <j...@apache.org>
Subject [jira] [Created] (IGNITE-12033) .Net callbacks from striped pool due to async/await may hang cluster
Date Thu, 01 Aug 2019 12:39:00 GMT
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)

Mime
View raw message