In a sharded cluster, mongos does not verify that the _id field is present for upserts to multiple config servers. This can lead to inconsistent _id fields on different config servers if the id is not explicitly provided.
Manipulating config metadata manually via a mongos may lead to inconsistent config servers and unexpected behavior in the sharded system. Metadata changes via normal command operations (shardCollection, balance, split, move, and merge) are not affected.
Always ensure that any manual upserts of config metadata (including data in the "admin" database) contain an equality match on the _id value for the query portion of the upsert.
All production releases since version 2.6.0 are affected by this issue.
The fix is included in the 2.6.4 production release.
Checks were implemented to prevent upserts without valid _id in the query part of the upsert.
This can lead to mismatched _ids on documents - client code should not use this behavior (2.4 disallows) but it should also be illegal in v2.6.
- is related to
SERVER-14209 disallow non-equality _id upserts to config servers