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

Async MockStream's race in unblock

    • Type: Icon: Bug Bug
    • Resolution: Done
    • Priority: Icon: Major - P3 Major - P3
    • 3.1.8
    • Affects Version/s: 3.1.7
    • Component/s: Networking
    • None
    • Fully Compatible
    • ALL
    • Hide

      Run network_interface_asio_test with a bunch of background threads (enough to saturate the scheduler)

      Show
      Run network_interface_asio_test with a bunch of background threads (enough to saturate the scheduler)
    • Platform 9 (09/18/15)
    • 0

      AsyncMockStreamFactor::MockStream::unblock() drops its lock to unblock consuming threads. Then it re-acquires the lock before returning.

      Under enough contention, this can lead simulateServer to attempt to re-acquire a lock that has just gotten deleted if completeOperation finishes within NetworkInterfaceASIO in time.

      The solution is to avoid dropping the lock for the notify.

            Assignee:
            mira.carey@mongodb.com Mira Carey
            Reporter:
            mira.carey@mongodb.com Mira Carey
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

              Created:
              Updated:
              Resolved: