repairDatabasesAndCheckVersion should not hold a lock while calling on StorageRepairObserver::onRepairDone

XMLWordPrintableJSON

    • Type: Task
    • Resolution: Won't Fix
    • Priority: Major - P3
    • None
    • Affects Version/s: None
    • Component/s: None
    • Execution Team 2019-10-21
    • None
    • 3
    • None
    • None
    • None
    • None
    • None
    • None

      StorageRepairObserver::onRepairDone calls StorageRepairObserver::_invalidateReplConfigIfNeeded , which writes out a document and then calls waitUntilDurable(). We must hold a lock for the data write, but should not for the waitUntilDurable() call, as we are trying to add an invariant against holding locks for a potentially long I/O call in waitUntilDurable() in SERVER-39591.

      repairDatabasesAndCheckVersion currently holds a global exclusive lock across all of its work. Perhaps elevate the waitUntilDurable() call to the repairDatabasesAndCheckVersion level, or even a level higher, somehow, outside the lock or while the lock is momentarily released.

            Assignee:
            Evgeni Dobranov (Inactive)
            Reporter:
            Dianna Hohensee (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            4 Start watching this issue

              Created:
              Updated:
              Resolved: