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

IndexBuildsCoordinator::createIndexes() should generate createIndexes oplog entry (single phase index build) for building indexes on empty collection.

    • Type: Icon: Task Task
    • Resolution: Fixed
    • Priority: Icon: Major - P3 Major - P3
    • 4.4.0-rc4, 4.7.0
    • Affects Version/s: None
    • Component/s: Storage
    • Labels:
    • Fully Compatible
    • v4.4
    • Execution Team 2020-05-04

      jSince, on primary, we use IndexBuildsCoordinator::createIndexes() only to build system indexes and does not use the thread pool, I feel this createIndexes() should always generate the createIndexes oplog entry for the index build, considering it as a single phase index build. Also, building system indexes takes less time. So, it's ok for secondaries to do the system index build as foreground index build during steady state replication. By this we can make the behavior of not using thread pool consistent between primary and secondary.

      To be noted, it seems, this createIndexes() is called to
      1) create system Indexes during startup (writes not replicated).
      2) create system Indexes during primary drain phase (writes replicated).
      3) Secondaries oplog applier performing foreground index building.

            benety.goh@mongodb.com Benety Goh
            suganthi.mani@mongodb.com Suganthi Mani
            0 Vote for this issue
            3 Start watching this issue