Reverts to emulating the write concern to work around how prior to
MongoDB 3.4, operations that did writes didn't necessarily accept a
writeConcern object.
Also limits the usage of replica set connection strings to only the
write_concern_majority_passthrough.yml test suite to work around the
lack of complete support of MongoURI parsing in versions of the mongo
shell prior to MongoDB 3.4.
(cherry picked from commit 264d971842)
41 lines
1.1 KiB
JavaScript
41 lines
1.1 KiB
JavaScript
// Check cases where index scans are aborted due to the collection being dropped. SERVER-4400
|
|
//
|
|
// @tags: [requires_parallel_shell]
|
|
|
|
t = db.jstests_queryoptimizer3;
|
|
t.drop();
|
|
|
|
p = startParallelShell(
|
|
'for( i = 0; i < 400; ++i ) { sleep( 50 ); db.jstests_queryoptimizer3.drop(); }');
|
|
|
|
for (i = 0; i < 100; ++i) {
|
|
t.drop();
|
|
t.ensureIndex({a: 1});
|
|
t.ensureIndex({b: 1});
|
|
for (j = 0; j < 100; ++j) {
|
|
t.save({a: j, b: j});
|
|
}
|
|
|
|
try {
|
|
m = i % 5;
|
|
if (m == 0) {
|
|
t.count({a: {$gte: 0}, b: {$gte: 0}});
|
|
} else if (m == 1) {
|
|
t.find({a: {$gte: 0}, b: {$gte: 0}}).itcount();
|
|
} else if (m == 2) {
|
|
t.remove({a: {$gte: 0}, b: {$gte: 0}});
|
|
} else if (m == 3) {
|
|
t.update({a: {$gte: 0}, b: {$gte: 0}}, {});
|
|
} else if (m == 4) {
|
|
t.distinct('x', {a: {$gte: 0}, b: {$gte: 0}});
|
|
}
|
|
} catch (e) {
|
|
print("Op killed during yield: " + e.message);
|
|
}
|
|
}
|
|
|
|
p();
|
|
|
|
// Ensure that the server is still responding.
|
|
assert.commandWorked(db.runCommand({isMaster: 1}));
|