[SERVER-85729] getMore on exchange does not respect maxTimeMs if the cursor is waiting for different consumer Created: 25/Jan/24 Updated: 25/Jan/24 |
|
| Status: | Open |
| Project: | Core Server |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | None |
| Type: | Bug | Priority: | Major - P3 |
| Reporter: | Will Buerger | Assignee: | Will Buerger |
| Resolution: | Unresolved | Votes: | 0 |
| Labels: | qi-tech-debt | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Operating System: | ALL |
| Steps To Reproduce: | You can reproduce this behavior somewhat consistently with the exchange_producer.js FSM workload, if you reduce the buffer size to ~1000. |
| Sprint: | QI 2024-02-19 |
| Participants: |
| Description |
|
In the exchange operator, it's possible that consumer A may fill its buffer, and consumer B is waiting for A to consume its documents before execution can continue. It seems that the maxTimeMS option is not handled properly when that happens; the cursor will hang indefinitely rather than returning when maxTimeMS is reached. charlie.swanson@mongodb.com suggested using something like this to wait on condition variables so the maxTimeMS can be respected, rather than hanging on the mutex as happens now. |