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

Make sure range deleter service is up before accessing `_rangeDeletionTasks`

    • Type: Icon: Bug Bug
    • Resolution: Fixed
    • Priority: Icon: Major - P3 Major - P3
    • 6.3.0-rc0
    • Affects Version/s: 6.2.0-rc6
    • Component/s: None
    • Labels:
      None
    • Fully Compatible
    • ALL
    • v6.2
    • Sharding EMEA 2023-02-06
    • 130

      During stepUp of RangeDeleterService we call _joinAndResetState() without the class mutex. As part of this function we also clear _rangeDeletionTasks.

      In general the public API of this service calls _acquireMutexFailIfServiceNotUp so we would expect that no external thread would access the _rangeDeletionTasks before the service initialization is completed and the _state is set to kUp.

      There are two special public API that uses _acquireMutexUnconditionally and then access the _rangeDeletionTasks object:

      This means that these two functions can access the _rangeDeletionTasks object while the service is still down and potentially at the same time that the _joinAndResetState() is clearing it.

            Assignee:
            pierlauro.sciarelli@mongodb.com Pierlauro Sciarelli
            Reporter:
            tommaso.tocci@mongodb.com Tommaso Tocci
            Votes:
            0 Vote for this issue
            Watchers:
            4 Start watching this issue

              Created:
              Updated:
              Resolved: