Uploaded image for project: 'Documentation'
  1. Documentation
  2. DOCS-14257

Investigate changes in SERVER-54608: dropIndexes needs to make the same assertions on primary and secondary nodes


      Downstream Change Summary

      The dropIndexes command cannot drop any ready indexes while there are any in-progress index builds.

      Description of Linked Ticket

      The applyOps path for dropIndexes makes an assertion that the primary does not. This can lead to a bug that generates an invalid oplog sequence and causes all secondaries to stop replicating.

      There is a bug that can be described by the following sequence in its simplest form:

      • Start building an index A
      • dropIndexes aborts A and yields its locks
      • Start building a new index build on A and commit
      • Start building an index B
      • dropIndexes reacquires its locks and sees that A is not in progress anymore, so it moves on to replicate a dropIndexes oplog entry instead.
      • The secondary sees the dropIndexes oplog entry for A but blocks in the applyOps path because B is still in progress, something that did not happen on the primary.

      We need to either a) assert on the primary that no index builds are in progress when a single index is dropped, or b) remove the assertion for the applyOps path.

      Scope of changes

      Impact to Other Docs

      MVP (Work and Date)

      Resources (Scope or Design Docs, Invision, etc.)

            ian.fogelman@mongodb.com Ian Fogelman
            backlog-server-pm Backlog - Core Eng Program Management Team
            0 Vote for this issue
            3 Start watching this issue

              2 years, 44 weeks, 2 days ago