IndexBuilder::_build should not be interruptible while reacquiring database locks

XMLWordPrintableJSON

    • Type: Bug
    • Resolution: Fixed
    • Priority: Minor - P4
    • 4.1.6
    • Affects Version/s: 4.0.4, 4.1.5
    • Component/s: Storage
    • None
    • Fully Compatible
    • ALL
    • Storage NYC 2018-12-17
    • 63
    • None
    • 3
    • None
    • None
    • None
    • None
    • None
    • None

      For IndexBuilder::_build to clean up failed background index builds, the database has to be locked in specific modes. If the index build was interrupted (for example due to a killOp), the calls to DBLock::relockWithMode(mode) calls will not succeed, leading to an invariant in the MultiIndexBlockImpl destructor.

      This issue can be addressed by wrapping DBLock:relockWithMode() calls with an UninterruptibleLockGuard.

            Assignee:
            Benety Goh
            Reporter:
            Benety Goh
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

              Created:
              Updated:
              Resolved: