0
0
mirror of https://github.com/mongodb/mongo.git synced 2024-12-01 01:21:03 +01:00
mongodb/jstests/noPassthrough/write_conflict_wildcard.js

40 lines
1.3 KiB
JavaScript

/**
* Tests that wildcard indexes are prepared to handle and retry WriteConflictExceptions while
* interacting with the storage layer to retrieve multikey paths.
*/
(function() {
"strict";
const conn = MongoRunner.runMongod();
const testDB = conn.getDB("test");
const coll = testDB.write_conflict_wildcard;
coll.drop();
assert.commandWorked(coll.createIndex({"$**": 1}));
assert.commandWorked(testDB.adminCommand({
configureFailPoint: 'WTWriteConflictExceptionForReads',
mode: {activationProbability: 0.01}
}));
for (let i = 0; i < 1000; ++i) {
// Insert documents with a couple different multikey paths to increase the number of records
// scanned during multikey path computation in the wildcard index.
assert.commandWorked(coll.insert({
_id: i,
i: i,
a: [{x: i - 1}, {x: i}, {x: i + 1}],
b: [],
longerName: [{nested: [1, 2]}, {nested: 4}]
}));
assert.eq(coll.find({i: i}).hint({"$**": 1}).itcount(), 1);
if (i > 0) {
assert.eq(coll.find({"a.x": i}).hint({"$**": 1}).itcount(), 2);
}
}
assert.commandWorked(
testDB.adminCommand({configureFailPoint: 'WTWriteConflictExceptionForReads', mode: "off"}));
MongoRunner.stopMongod(conn);
})();