-
Type: Bug
-
Resolution: Fixed
-
Priority: Major - P3
-
Affects Version/s: None
-
Component/s: Aggregation Framework, Querying, Testing Infrastructure
-
Labels:None
-
Fully Compatible
-
ALL
-
Query 2018-08-27
-
17
This test is attempting to verify that a blocking call to BlockingResultsMerger::next() can be interrupted via the OperationContext. This test was adapted from this test during SERVER-33323, but mistakenly changed the configuration so that the cursor was tailable and awaitData. Now that the cursor is tailable and awaitData, the call to next() is actually going into this code path which reads the awaitDataState off the OperationContext. This state has not been configured by the test, so the Date_t that is part of that struct will be default-constructed to the unix epoch. This means that the thread waiting for the event can be woken up immediately. On a tailable and awaitData cursor this is not an error and causes the call to next() to return EOF with an OK status.
This causes this assertion to fail. As a result, the BlockingResultsMerger is destroyed upon exit, but has not yet cleaned up all of the remote cursors, so further triggers this invariant.