[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.


Generated at Thu Feb 08 06:58:28 UTC 2024 using Jira 9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66.