Since as far as I care to look back, mongodb has passed index "info objects" to the WT table's app_metadata. The index data is converted to a json string representation which contains the collection name.
When this string is malformed and WT hits a parsing error, it's typically discovered via the primary and results in a uassert:
test> db.createCollection("\x7F") { "ok" : 0, "errmsg" : "22: Invalid argument", "code" : 2, "codeName" : "BadValue" }
However an existing collection can be renamed without renaming the ns field on an index entry:
test> db.foo.renameCollection("\x7F") { "ok" : 1 } test> db["\x7F"].find() { "_id" : ObjectId("5cd472baae8328407ec23421") }
With the new unique index format, indexes can have their metadata re-written to note the format the index is currently in. This can happen on an empty collMod command. There are cases where a primary will replicate this collMod without having hit the parsing error itself. A secondary processing this oplog entry will crash.
- is documented by
-
DOCS-13452 4.2 only: remove index metadata.infoObj fields from examples.
- Closed