Uploaded image for project: 'Core Server'
  1. Core Server
  2. SERVER-36738

BlockingResultsMergerTest incorrectly configures blocking next call

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

            Assignee:
            charlie.swanson@mongodb.com Charlie Swanson
            Reporter:
            charlie.swanson@mongodb.com Charlie Swanson
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated:
              Resolved: