[ https://issues.apache.org/jira/browse/IGNITE-12033?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Pavel Tupitsyn reassigned IGNITE-12033: --------------------------------------- Assignee: (was: Pavel Tupitsyn) > 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 > Priority: Critical > Fix For: 2.8 > > > Discussed on dev-list: > http://apache-ignite-developers.2346864.n4.nabble.com/Re-EXTERNAL-Re-Replace-or-Put-after-PutAsync-causes-Ignite-to-hang-td42921.html > *Must use the public pool for callbacks as the most obvious step.* > ---- > 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 (v8.3.4#803005)