Info
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.
Top User Comments
xgen-internal-githook commented on Thu, 23 Feb 2017 15:14:38 +0000:
Author:
{u'username': u'dstorch', u'name': u'David Storch', u'email': u'david.storch@10gen.com'}
Message: SERVER-28071 add missing FTS indexing error codes to replication whitelist
Branch: master
https://github.com/mongodb/mongo/commit/a2ff6ec6b8f88e5d79e6c09c333033f151a59961