We are using IA 2.8.1 with the C# client.

After triaging intermittent critical thread blockages we determined we have
run into this problem reported back in 2019.

http://apache-ignite-users.70518.x6.nabble.com/Replace-or-Put-after-PutAsync-causes-Ignite-to-hang-td27871.html

This thread contains suggestions about using SetSynchronizationContext() in
a single threaded context, and overriding a method within it to direct all
thread continuations into the .Net managed thread pool to resolve the issue.

WIthin that thread, this Jira ticket is created:
https://issues.apache.org/jira/browse/IGNITE-12033

Reading into the ticket there does not seem to be a good approach suggested
to resolve this other than to use the public thread pool rather than the
striped thread pool for task continuations.

None of the possible paths to solve this issue seem attractive for us:

- We use a lot of concurrency (as I suspect every Ignite system would) so
the simple SynchronizationContext approach wont work.

- Overriding all callbacks via the SynchronizationContext into the managed
thread pool not only imposes a performance penalty across the application,
but also may direct non-thread pool based threads executing Ignite async
operations into the managed thread pool after the async operation has
completed, which would have difficult to predict consequences.

- Using .ConfigureAwait(true) [which may not be supported in .Net Core]
forces synchronization with the call thread, which may be a .Net managed
thread pool thread and so may not be available for some time.

Initial experiments suggest the SynchronizationContext approach may not
work at all in our case with the override solution appearing to make the
problem worse.

Given the current issues with async Cache operation should this be
deprecated in the C# client until the underlying issues are resolved? It is
hard to see how any non-trivial C# client based Ignite application can
safely use them.

Regards,
Raymond.

-- 
<http://www.trimble.com/>
Raymond Wilson
Solution Architect, Civil Construction Software Systems (CCSS)
11 Birmingham Drive | Christchurch, New Zealand
[email protected]

<https://worksos.trimble.com/?utm_source=Trimble&utm_medium=emailsign&utm_campaign=Launch>

Reply via email to