| Bug #114390 | Calling ef6 sync method with high concurrency would be deadlocking | ||
|---|---|---|---|
| Submitted: | 18 Mar 2024 13:16 | Modified: | 25 Mar 2024 12:32 |
| Reporter: | Michael Scofield Scofield | Email Updates: | |
| Status: | Verified | Impact on me: | |
| Category: | Connector / NET | Severity: | S1 (Critical) |
| Version: | 8.3.0 | OS: | Windows (windows 11) |
| Assigned to: | CPU Architecture: | Any | |
[19 Mar 2024 13:03]
MySQL Verification Team
Hello Michael, Thank you for the bug report. Could you please provide complete repeatable test case to reproduce this issue at our end? Regards, Ashwini Patil
[25 Mar 2024 12:32]
MySQL Verification Team
Hello Michael, Thank you for the test code. Verified as described. Regards, Ashwini Patil

Description: asp.net webapp with ef6 and mysql.data.entityframework sync method like IQueryable.Count, IQueryable.ToList, in high concurrency the connection has on ressponse. eg: public int GetCount() { var count = SampleDbContext .Projects .AsQueryable() .Count(); return count; } How to repeat: In asp.net mvc or webapi controller call this method public ActionResult Index() { var count = SampleDbContext .Projects .AsQueryable() .Count(); return View(); } Suggested fix: In MySql.Data and MySql.Data.EnetityFramework change the sync method likes public override bool Read() => ReadAsync(false, CancellationToken.None).GetAwaiter().GetResult(); to public override bool Read() => ReadAsync(false, CancellationToken.None).ConfigureAwait(false).GetAwaiter().GetResult(); or use Fody.ConfigureAwait easily.