-
Type: Bug
-
Resolution: Done
-
Priority: Major - P3
-
Affects Version/s: None
-
Component/s: Querying, Replication
-
None
-
Fully Compatible
-
ALL
-
Query 2017-03-06
-
52
Consider the following sequence of operations:
- db.c.insert({_id: 1, x: "words to index", language: 1});
- db.c.update({_id: 1}, {$unset: {language: 1}});
- db.c.createIndex({x: "text"});
The originally inserted document cannot be indexed by the text index, since its language field is not specified as a string. This is all fine on the replica set primary node, since the bad language field is removed before the index is created. A secondary, however, might have to replay these oplog entries after cloning the index. In this case, the insertion will fail with "Location17261: found language override field in document with non-string type", causing the secondary to trip a fatal assertion.
In order to handle cases like this, secondary nodes are expected to relax indexing constraints during oplog application, since constraint violations will be resolved once a consistent point in the oplog is reached. However, the secondary is not properly relaxing text index constraints related to parsing of the language.
- is related to
-
SERVER-32225 Initial sync should ignore multiple text indexes on same collection error
- Closed