[SERVER-64613] Periodically wake up when waiting for prepare conflicts Created: 17/Mar/22 Updated: 06/Dec/22 Resolved: 22/Mar/22 |
|
| Status: | Closed |
| Project: | Core Server |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | None |
| Type: | Bug | Priority: | Major - P3 |
| Reporter: | Louis Williams | Assignee: | Backlog - Storage Execution Team |
| Resolution: | Won't Do | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Issue Links: |
|
||||||||||||
| Assigned Teams: |
Storage Execution
|
||||||||||||
| Operating System: | ALL | ||||||||||||
| Participants: | |||||||||||||
| Linked BF Score: | 10 | ||||||||||||
| Description |
|
When MongoDB encounters a prepare conflict in WiredTiger, we wait until an active MongoDB WriteUnitOfWork commits or aborts. There is a deadlock caused by this approach that can be described as follows:
This is only a bug in a system with one prepared transaction, since any transactions committing or aborting would wake the reader. To break this cycle, we could add a periodic wakeup when waiting for prepared transactions to commit or abort. Something like 100ms. This would allow the reader to make progress and unpin the problematic page. |
| Comments |
| Comment by Louis Williams [ 23/Mar/22 ] |
|
etienne.petrel if |
| Comment by Etienne Petrel [ 22/Mar/22 ] |
|
louis.williams, we will need to be careful as after trying a quick implementation of |
| Comment by Louis Williams [ 22/Mar/22 ] |
|
We are closing this in favor of |