Indexes cannot be created on the internal system.indexes collection. Attempting to build an index on this collection responds with an error (code 13143), but still inserts a corresponding entry into the system.indexes collection. Secondary nodes that attempt to initial sync from a node with such an entry fail to create the index and abort the initial sync (after several retries).
This mostly affects users that create indexes dynamically on all collections and do not explicitly exclude the system.indexes collection. Furthermore, the error may not be noticed for some time, as the invalid index has no immediate effect on a replica set but only affects initial sync of a secondary.
The fix is to explicitly check and throw an assertion if an index build on system.indexes is attempted. This assertion aborts the index build before the entry is inserted into the system.indexes collection.
Users should not build an index on the system.indexes collection. In environments with dynamic index creation, one should take precautionary steps to explicitly check and avoid building an index on system.indexes. To remove any accidentally-created index entries on system.indexes, use the following command: db.system.indexes.dropIndexes()
All recent production releases up to version 2.4.9 are affected.
The fix is included in the 2.4.10 production release and the 2.5.3 development version, which will evolve into the 2.6.0 production release.